oneRow ( $id ) ); } public static function getList ( $all=false ) { if ( $all ) { $where = [ 'where' => [ ] ]; } else { $where = [ 'where' => [ 'active' => SchedulerDAO::ACTIVE ] ]; } $table = self::$dao->search ( $where ); return self::tableToObjectList ( $table ); } /** * @param $data * @return void */ public function __construct( $data ) { parent::__construct ( self::$dao, $data ); } /** * Check if there are any upcoming schedules */ public static function check () { $numAdded = 0; foreach ( self::getList () as $sheduleItem ) { $storedLastRunTime = strtotime( ( $sheduleItem->lastRun == '' ) ? $sheduleItem->start : $sheduleItem->lastRun ); $previousCalculatedRunTime = CronParser::lastRun( $sheduleItem->cron ); // This looks at when the item had run. If the stored value is less than // the calculated value means that we have past a run period. So need to run if ( $storedLastRunTime < $previousCalculatedRunTime ) { // Update the run time to now $sheduleItem->lastRun = strftime ( '%Y-%m-%d %H:%M', $previousCalculatedRunTime ); $sheduleItem->save (); // Enqueue a new item to run $job = new Cron ( [ 'ref' => $sheduleItem->id, 'cmd' => $sheduleItem->cmd, ] ); $job->save (); $numAdded ++; } } return $numAdded; } }