/**
  * 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;
 }
Example #2
0
 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>';
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 /**
  * 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();
 }
Example #5
0
 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;
 }