Aoe_Scheduler_Model_Observer::dispatchAlways PHP Method

dispatchAlways() public method

Process cron queue for tasks marked as 'always'
public dispatchAlways ( Varien_Event_Observer $observer )
$observer Varien_Event_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);
                    if ($schedule !== false) {
                        $schedule->setRepetition($repetition);
                        // this is not persisted, but can be access from within the callback
                        $schedule->process();
                    }
                    $repetition++;
                } while ($repetition < 10 && $schedule && $schedule->getStatus() == Aoe_Scheduler_Model_Schedule::STATUS_REPEAT);
            }
        }
    }
Aoe_Scheduler_Model_Observer