/**
  * Create process schedules.
  *
  * @param Mage_Cron_Model_Schedule $schedule
  *
  * @return void
  */
 protected function _createProcessSchedule($schedule)
 {
     $isNew = $schedule->isObjectNew();
     $parts = explode('_', $schedule->getJobCode());
     $scheduleWithItems = SixBySix_RealTimeDespatch_Model_Resource_Process_Schedule_Collection::getLastScheduleWithItems($parts[0]);
     $schedule = Mage::getModel('realtimedespatch/process_schedule')->load($schedule->getId(), 'cron_id')->setCronId($schedule->getId())->setStatus($schedule->getStatus())->setScheduled($schedule->getScheduledAt())->setExecuted($schedule->getExecutedAt())->setType($parts[1])->setEntity($parts[0]);
     if ($schedule->getStatus() == Mage_Cron_Model_Schedule::STATUS_MISSED) {
         $schedule->setExecuted(date('Y-m-d H:i:s'));
     }
     if (!$schedule->getParentId() && !$isNew && $scheduleWithItems->getId()) {
         $schedule->setParentId($scheduleWithItems->getParentId());
         $schedule->setMessageId($scheduleWithItems->getMessageId());
         $schedule->setExecutedWithItems($scheduleWithItems->getExecutedWithItems());
     }
     $schedule->save();
     return $schedule;
 }
Beispiel #2
0
 /**
  * Run an import through a cron job
  * @param Aoe_Scheduler_Model_Schedule|Mage_Cron_Model_Schedule $cron
  */
 public function process(Mage_Cron_Model_Schedule $cron)
 {
     //initialize the translations so that we are able to translate things.
     Mage::app()->loadAreaPart(Mage_Core_Model_App_Area::AREA_ADMINHTML, Mage_Core_Model_App_Area::PART_TRANSLATE);
     $cronName = $cron->getJobCode();
     $profile = str_replace('ho_import_', '', $cronName);
     $logHelper = Mage::helper('ho_import/log');
     try {
         /** @var Ho_Import_Model_Import $import */
         $import = Mage::getModel('ho_import/import');
         $import->setProfile($profile);
         $import->process();
     } catch (Exception $e) {
         $logHelper->log($logHelper->getExceptionTraceAsString($e), Zend_Log::CRIT);
         $cron->setStatus($cron::STATUS_ERROR);
     }
     $logHelper->done();
 }
Beispiel #3
0
 /**
  * Run operation in crontab
  *
  * @param Mage_Cron_Model_Schedule $schedule
  * @param bool $forceRun
  * @return bool
  */
 public function processScheduledOperation($schedule, $forceRun = false)
 {
     $operation = Mage::getModel('enterprise_importexport/scheduled_operation')->loadByJobCode($schedule->getJobCode());
     $result = false;
     if ($operation && ($operation->getStatus() || $forceRun)) {
         $result = $operation->run();
     }
     return $result;
 }
Beispiel #4
0
 /**
  * Process cron task
  *
  * @param Mage_Cron_Model_Schedule $schedule
  * @param $jobConfig
  * @param bool $isAlways
  * @return Mage_Cron_Model_Observer
  */
 protected function _processJob($schedule, $jobConfig, $isAlways = false)
 {
     $runConfig = $jobConfig->run;
     if (!$isAlways) {
         $scheduleLifetime = Mage::getStoreConfig(self::XML_PATH_SCHEDULE_LIFETIME) * 60;
         $now = time();
         $time = strtotime($schedule->getScheduledAt());
         if ($time > $now) {
             return;
         }
     }
     $errorStatus = Mage_Cron_Model_Schedule::STATUS_ERROR;
     try {
         if (!$isAlways) {
             if ($time < $now - $scheduleLifetime) {
                 $errorStatus = Mage_Cron_Model_Schedule::STATUS_MISSED;
                 Mage::throwException(Mage::helper('cron')->__('Too late for the schedule.'));
             }
         }
         // Aoe_Scheduler: stuff from the original method was removed and refactored into the schedule module
         /* @var $schedule Aoe_Scheduler_Model_Schedule */
         $schedule->runNow(!$isAlways);
     } catch (Exception $e) {
         $schedule->setStatus($errorStatus)->setMessages($e->__toString());
         // Aoe_Scheduler: additional handling:
         Mage::dispatchEvent('cron_' . $schedule->getJobCode() . '_exception', array('schedule' => $schedule, 'exception' => $e));
         Mage::dispatchEvent('cron_exception', array('schedule' => $schedule, 'exception' => $e));
         Mage::helper('aoe_scheduler')->sendErrorMail($schedule, $e->__toString());
     }
     $schedule->save();
     return $this;
 }
 /**
  * Dispatch For Cron Jobs
  */
 public function dispatchCron(Mage_Cron_Model_Schedule $schedule)
 {
     $triggerCode = $schedule->getJobCode();
     $events = $this->getEvents(Esendex_Sms_Model_Event::TRIGGER_TYPE_CRON, $triggerCode);
     $this->dispatch($events);
 }