<?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(); } }); }
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); }