add(self::ID,$newcycle,Criteria::LESS_THAN); $c->add(self::SERVICE_ID,$newc->getServiceId()); $c->addDescendingOrderByColumn(self::ID); $c->setLimit(1); $cycle = self::doSelectOne($c); if (!$cycle) { $cycle = self::retrieveByPk(1); } return $cycle; } public static function getCurrentCycle($serviceid='1') { $c = new Criteria(); $c->add(self::SERVICE_ID,$serviceid); $c->addDescendingOrderByColumn(self::ID); return self::doSelectOne($c); } public static function retrieveByDate($fulldate) { list($y, $m, $d) = split('-',$fulldate); $c = new Criteria(); $c->add(self::NAME,$y.'-'.$m); $cycle = self::doSelectOne($c); if (!$cycle) { $cycle = self::retrieveByPk(1); } return $cycle; // should be between min(newdate) and max(newdate) on readings // $c->add(self::STARTDATE,$fulldate,Criteria::LESS_EQUAL); // $c->add(self::ENDDATE,$fulldate,Criteria::GREATER_THAN); } public static function lastCycles($startcycleid='',$nbcycles=12, $serviceid=1) { $c = new Criteria(); if ($startcycleid) $c->add(self::ID,$startcycleid,Criteria::LESS_EQUAL); else { $currentcycle = self::getCurrentCycle(); $c->add(self::ID,$currentcycle->getId(),Criteria::LESS_EQUAL); } $c->addDescendingOrderByColumn(self::ID); $c->setLimit($nbcycles); return self::doSelect($c); } }