/** * 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; }
protected function getOriginalValueSnippetFlag(Aoe_Scheduler_Model_Job $job, $key, $trueLabel, $falseLabel) { if ($job->isDbOnly()) { return ''; } $xmlJobData = $job->getXmlJobData(); if (!array_key_exists($key, $xmlJobData)) { return ''; } $value = $this->__(!in_array($xmlJobData[$key], array(false, 'false', 0, '0'), true) ? $trueLabel : $falseLabel); return '<p class="original" style="background-color: white"><strong>Original:</strong> ' . $value . '</p>'; }
/** * 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; }
/** * Decorate cron expression * * @param $value * @param Aoe_Scheduler_Model_Job $job * * @return string */ public function decorateType($value, Aoe_Scheduler_Model_Job $job) { return $job->getType(); }
public function setModelFromJobData(Aoe_Scheduler_Model_Job $job, array $data) { $job->setName(isset($data['name']) ? $data['name'] : ''); $job->setDescription(isset($data['description']) ? $data['description'] : ''); $job->setShortDescription(isset($data['short_description']) ? $data['short_description'] : ''); $job->setRunModel(isset($data['run/model']) ? $data['run/model'] : ''); $job->setScheduleConfigPath(isset($data['schedule/config_path']) ? $data['schedule/config_path'] : ''); $job->setScheduleCronExpr(isset($data['schedule/cron_expr']) ? $data['schedule/cron_expr'] : ''); $job->setParameters(isset($data['parameters']) ? $data['parameters'] : ''); $job->setGroups(isset($data['groups']) ? $data['groups'] : ''); $job->setIsActive(isset($data['is_active']) ? $data['is_active'] : ''); return $job; }