Beispiel #1
0
 /**
  * Register a cron job
  * @param $name String The name of the cron job
  * @param $class mixed The class which manages the cron job
  * @param $interval int The interval in minutes between execution
  */
 public function addCronJob($name, $class, $interval)
 {
     PluginManager::addCronJob($name, $class, $interval);
 }
 /**
  * @param $core Core
  */
 public static function processCronJobs($core)
 {
     // Get internal entity manager
     $em = $core->getInternalDatabase()->getEntityManager();
     // Go throw every cron job
     foreach (PluginManager::$cronjobs as $name => $data) {
         // Validate
         if (array_key_exists('class', $data) && array_key_exists('interval', $data)) {
             /** @var $class CronJob */
             $class = $data['class'];
             $interval = $data['interval'];
             // Get details from database
             /** @var $details DBO\CronJob */
             $details = $em->getRepository('Quantum\\DBO\\CronJob')->findOneBy(array('name' => $name));
             if ($details == null) {
                 $details = new DBO\CronJob();
                 $details->setName($name);
                 $details->setLastRun(0);
                 $em->persist($details);
             }
             // Check if the cron job should now be executed
             if (PluginManager::timeMinutes() >= $details->getLastRun() + $interval * 60) {
                 if ($core->inDev()) {
                     echo 'Execute cron job "' . $name . '"' . PHP_EOL;
                 }
                 if ($class->execute($core)) {
                     // Run was successful
                     $details->setLastRun(PluginManager::timeMinutes());
                     $em->persist($details);
                     if ($core->inDev()) {
                         echo 'Success!' . PHP_EOL;
                     }
                 } else {
                     // todo logging
                     if ($core->inDev()) {
                         echo 'Failed!' . PHP_EOL;
                     }
                 }
             } else {
                 if ($core->inDev()) {
                     echo 'Cron job "' . $name . '" is not needed in this run!' . PHP_EOL;
                 }
             }
         }
     }
     $em->flush();
 }
Beispiel #3
0
 private function initPlugins()
 {
     PluginManager::load($this);
 }