0, 'over'=>0, 'over1'=>0, 'over2'=>0, 'total'=>0, ]; } } else { $res['empty'] = true; } return $res; } static function getKey($begin,$end,$emp,$project){ $key = $begin.":".$end.":".$emp.":".$project; return md5($key); } static function add($begin,$end,$emp,$project,$data) { return self::insert([ self::$KEY => self::getKey($begin,$end,$emp,$project), self::$BEGIN => $begin, self::$END => $end, self::$EMP => $emp, self::$PROJECT => $project, self::$DATA => $data ? je($data) : [], ]); } static function removeRows($date,$emp = null,$project = null){ $res = self::delete($q = new \Where(\Where::_and([ \Where::_operator(self::$BEGIN,'<=',$date), \Where::_operator(self::$END,'>=',$date), $emp ? \Where::_operator(self::$EMP,'=',$emp) : null, $project ? \Where::_or([ \Where::_operator(self::$PROJECT,'=',$project), \Where::_operator(self::$PROJECT,'=',0) ]) : null ]))); echo $q; return $res; } static function columnInfo() : array { return [ new C([ C::VAR_NAME =>&self::$ID, C::TYPE =>eColumnType::INT, C::AUTO_INCREMENT =>true, C::PRIMARY =>true, C::DEFAULT =>0, C::HIDDEN =>true, C::TH =>V::get(Vars::$ID), ]), new C([ C::VAR_NAME => &self::$EMP, C::TYPE => eColumnType::INT, ]), new C([ C::VAR_NAME => &self::$PROJECT, C::TYPE => eColumnType::INT, ]), new C([ C::VAR_NAME => &self::$BEGIN, C::TYPE => eColumnType::DATE, ]), new C([ C::VAR_NAME => &self::$END, C::TYPE => eColumnType::DATE, ]), new C([ C::VAR_NAME => &self::$KEY, C::TYPE => eColumnType::VARCHAR, C::LENGTH => 63, ]), new C([ C::VAR_NAME => &self::$DATA, C::TYPE => eColumnType::TEXT, ]), ]; } } new Cache();