Exemple #1
0
<?php

/**
 * Cronjob Addon.
 *
 * @author gharlan[at]web[dot]de Gregor Harlan
 *
 * @package redaxo5
 *
 * @var rex_addon $this
 */
define('REX_CRONJOB_LOG_FOLDER', $this->getDataPath());
define('REX_CRONJOB_TABLE', rex::getTable('cronjob'));
rex_extension::register('PACKAGES_INCLUDED', function () {
    foreach ($this->getAvailablePlugins() as $plugin) {
        if (($type = $plugin->getProperty('cronjob_type')) != '') {
            rex_cronjob_manager::registerType($type);
        }
    }
});
$nexttime = $this->getConfig('nexttime', 0);
if ($nexttime != 0 && time() >= $nexttime) {
    $env = rex_cronjob_manager::getCurrentEnvironment();
    $EP = 'backend' === $env ? 'PAGE_CHECKED' : 'PACKAGES_INCLUDED';
    rex_extension::register($EP, function () use($env) {
        if ('backend' !== $env || !in_array(rex_be_controller::getCurrentPagePart(1), ['setup', 'login', 'cronjob'])) {
            rex_cronjob_manager_sql::factory()->check();
        }
    });
}
Exemple #2
0
 public function tryExecute($id, $log = true)
 {
     $sql = rex_sql::factory();
     $jobs = $sql->getArray('
         SELECT    id, name, type, parameters, `interval`
         FROM      ' . REX_CRONJOB_TABLE . '
         WHERE     id = ? AND environment LIKE ?
         LIMIT     1
     ', [$id, '%|' . rex_cronjob_manager::getCurrentEnvironment() . '|%']);
     if (!$jobs) {
         $this->getManager()->setMessage('Cronjob not found in database');
         $this->saveNextTime();
         return false;
     }
     return $this->tryExecuteJob($jobs[0], $log);
 }