protected function save() { $nexttime = $this->getElement($this->mainFieldset, 'nexttime'); $timestamp = rex_cronjob_manager_sql::calculateNextTime($this->intervalField->getValue()); $nexttime->setValue($timestamp ? rex_sql::datetime($timestamp) : null); $return = parent::save(); rex_cronjob_manager_sql::factory()->saveNextTime(); return $return; }
protected function save() { if ($this->isEditMode()) { $nexttime = $this->getElement($this->mainFieldset, 'nexttime'); if (strtotime($nexttime->getValue()) > 0) { $interval = $this->getElement($this->mainFieldset, 'interval'); $nexttime->setValue(rex_sql::datetime(rex_cronjob_manager_sql::calculateNextTime($interval->getValue()))); } } $return = parent::save(); rex_cronjob_manager_sql::factory()->saveNextTime(); return $return; }
echo rex_view::error($this->i18n($msg . '_error', $name)); } $func = ''; } if ($func == 'delete') { $manager = rex_cronjob_manager_sql::factory(); $name = $manager->getName($oid); if ($manager->delete($oid)) { echo rex_view::success($this->i18n('delete_success', $name)); } else { echo rex_view::error($this->i18n('delete_error', $name)); } $func = ''; } if ($func == 'execute') { $manager = rex_cronjob_manager_sql::factory(); $name = $manager->getName($oid); $success = $manager->tryExecute($oid); $msg = ''; if ($manager->hasMessage()) { $msg = '<br /><br />' . $this->i18n('log_message') . ': <br />' . nl2br($manager->getMessage()); } if ($success) { echo rex_view::success($this->i18n('execute_success', $name) . $msg); } else { echo rex_view::error($this->i18n('execute_error', $name) . $msg); } $func = ''; } if ($func == '') { $query = 'SELECT id, name, type, `interval`, environment, execution_moment, status FROM ' . REX_CRONJOB_TABLE . ' ORDER BY name';
function saveNextTime($nexttime = null) { global $REX; if ($nexttime === null) { $sql_manager = rex_cronjob_manager_sql::factory($this); $nexttime = $sql_manager->getMinNextTime(); } if ($nexttime === null) { $nexttime = 0; } else { $nexttime = max(1, $nexttime); } if ($nexttime != $REX['ADDON']['nexttime']['cronjob'] && rex_file::put(REX_CRONJOB_NEXTTIME_FILE, $nexttime)) { $REX['ADDON']['nexttime']['cronjob'] = $nexttime; return true; } return false; }
function saveNextTime($nexttime = null) { global $REX; if ($nexttime === null) { $sql_manager = rex_cronjob_manager_sql::factory($this); $nexttime = $sql_manager->getMinNextTime(); } if ($nexttime === null) { $nexttime = 0; } else { $nexttime = max(1, $nexttime); } if ($nexttime != $REX['ADDON']['nexttime']['cronjob']) { $content = '$REX[\'ADDON\'][\'nexttime\'][\'cronjob\'] = "' . addslashes($nexttime) . '";'; $file = $REX['INCLUDE_PATH'] . '/addons/cronjob/config.inc.php'; if (rex_replace_dynamic_contents($file, $content)) { $REX['ADDON']['nexttime']['cronjob'] = $nexttime; return true; } } return false; }
<?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) { $EP = rex::isBackend() ? 'PAGE_CHECKED' : 'PACKAGES_INCLUDED'; rex_extension::register($EP, function () { if (!rex::isBackend() || !in_array(rex_be_controller::getCurrentPagePart(1), ['setup', 'login', 'cronjob'])) { rex_cronjob_manager_sql::factory()->check(); } }); }