/** * Initialize from job * * @param Aoe_Scheduler_Model_Job $job * @return $this */ public function initializeFromJob(Aoe_Scheduler_Model_Job $job) { $this->setJobCode($job->getJobCode()); $this->setCronExpr($job->getCronExpression()); $this->setStatus(Aoe_Scheduler_Model_Schedule::STATUS_PENDING); return $this; }
/** * Generate jobs for config information * * @param Aoe_Scheduler_Model_Job $job * * @return $this */ public function generateSchedulesForJob(Aoe_Scheduler_Model_Job $job) { if (!$job->canBeScheduled()) { return $this; } $exists = array(); foreach ($this->getPendingSchedules(array($job->getJobCode()), array()) as $schedule) { /* @var Aoe_Scheduler_Model_Schedule $schedule */ $exists[$schedule->getJobCode() . '/' . $schedule->getScheduledAt()] = 1; } $now = time(); $scheduleAheadFor = Mage::getStoreConfig(Mage_Cron_Model_Observer::XML_PATH_SCHEDULE_AHEAD_FOR) * 60; $timeAhead = $now + $scheduleAheadFor; $schedule = Mage::getModel('cron/schedule'); /* @var $schedule Aoe_Scheduler_Model_Schedule */ $schedule->initializeFromJob($job); $schedule->setScheduledReason(Aoe_Scheduler_Model_Schedule::REASON_GENERATESCHEDULES); for ($time = $now; $time < $timeAhead; $time += 60) { $ts = strftime('%Y-%m-%d %H:%M:00', $time); if (!empty($exists[$job->getJobCode() . '/' . $ts])) { // already scheduled continue; } if (!$schedule->trySchedule($time)) { // time does not match cron expression continue; } $schedule->unsScheduleId()->save(); } return $this; }
public function getJobDataFromModel(Aoe_Scheduler_Model_Job $job) { $values = array('name' => $job->getName(), 'description' => $job->getDescription(), 'short_description' => $job->getShortDescription(), 'run/model' => $job->getRunModel(), 'schedule/config_path' => $job->getScheduleConfigPath(), 'schedule/cron_expr' => $job->getScheduleCronExpr(), 'parameters' => $job->getParameters(), 'groups' => $job->getGroups(), 'is_active' => $job->getIsActive() ? '1' : '0'); // Strip out the auto-generated name if ($values['name'] === $job->getJobCode()) { $values['name'] = ''; } // Clean up each entry to being a trimmed string $values = array_map('trim', $values); return $values; }