Ejemplo n.º 1
0
 /**
  * Process cron queue for tasks marked as 'always'
  *
  * @param Varien_Event_Observer $observer
  */
 public function dispatchAlways(Varien_Event_Observer $observer)
 {
     if (!Mage::getStoreConfigFlag('system/cron/enable')) {
         return;
     }
     $processManager = Mage::getModel('aoe_scheduler/processManager');
     /* @var $processManager Aoe_Scheduler_Model_ProcessManager */
     $processManager->watchdog();
     $scheduleManager = Mage::getModel('aoe_scheduler/scheduleManager');
     /* @var $scheduleManager Aoe_Scheduler_Model_ScheduleManager */
     $helper = Mage::helper('aoe_scheduler');
     /* @var Aoe_Scheduler_Helper_Data $helper */
     $includeJobs = $helper->addGroupJobs((array) $observer->getIncludeJobs(), (array) $observer->getIncludeGroups());
     $excludeJobs = $helper->addGroupJobs((array) $observer->getExcludeJobs(), (array) $observer->getExcludeGroups());
     /* @var $jobs Aoe_Scheduler_Model_Resource_Job_Collection */
     $jobs = Mage::getSingleton('aoe_scheduler/job')->getCollection();
     $jobs->setWhiteList($includeJobs);
     $jobs->setBlackList($excludeJobs);
     $jobs->setActiveOnly(true);
     foreach ($jobs as $job) {
         /* @var Aoe_Scheduler_Model_Job $job */
         if ($job->isAlwaysTask() && $job->getRunModel()) {
             $schedule = $scheduleManager->getScheduleForAlwaysJob($job->getJobCode());
             if ($schedule !== false) {
                 $schedule->process();
             }
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * Process cron queue for tasks marked as 'always'
  *
  * @param Varien_Event_Observer $observer
  */
 public function dispatchAlways(Varien_Event_Observer $observer)
 {
     if (!Mage::getStoreConfigFlag('system/cron/enable')) {
         return;
     }
     $processManager = Mage::getModel('aoe_scheduler/processManager');
     /* @var $processManager Aoe_Scheduler_Model_ProcessManager */
     $processManager->watchdog();
     $scheduleManager = Mage::getModel('aoe_scheduler/scheduleManager');
     /* @var $scheduleManager Aoe_Scheduler_Model_ScheduleManager */
     $helper = Mage::helper('aoe_scheduler');
     /* @var Aoe_Scheduler_Helper_Data $helper */
     $includeJobs = $helper->addGroupJobs((array) $observer->getIncludeJobs(), (array) $observer->getIncludeGroups());
     $excludeJobs = $helper->addGroupJobs((array) $observer->getExcludeJobs(), (array) $observer->getExcludeGroups());
     /* @var $jobs Aoe_Scheduler_Model_Resource_Job_Collection */
     $jobs = Mage::getSingleton('aoe_scheduler/job')->getCollection();
     $jobs->setWhiteList($includeJobs);
     $jobs->setBlackList($excludeJobs);
     $jobs->setActiveOnly(true);
     foreach ($jobs as $job) {
         /* @var Aoe_Scheduler_Model_Job $job */
         if ($job->isAlwaysTask() && $job->getRunModel()) {
             $repetition = 0;
             do {
                 $reason = $repetition == 0 ? Aoe_Scheduler_Model_Schedule::REASON_ALWAYS : Aoe_Scheduler_Model_Schedule::REASON_REPEAT;
                 $schedule = $scheduleManager->getScheduleForAlwaysJob($job->getJobCode(), $reason);
                 $schedule->setRepetition($repetition);
                 // this is not persisted, but can be access from within the callback
                 if ($schedule !== false) {
                     $schedule->process();
                 }
                 $repetition++;
             } while ($repetition < 10 && $schedule->getStatus() == Aoe_Scheduler_Model_Schedule::STATUS_REPEAT);
         }
     }
 }