function cron_image_url_handler(&$sm, $url_array) { header("Content-Type: image/gif"); echo base64_decode("R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="); flush(); $cron_flag = VIVVO_FS_ROOT . 'cache/.cron.lock'; // call cron only if it's been at least a minute since the last if (file_exists($cron_flag) and filemtime($cron_flag) > VIVVO_START_TIME - 60) { exit; } // reset flag @unlink($cron_flag); touch($cron_flag); require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/framework/vivvo_cron.php'; ignore_user_abort(true); $cm = new vivvo_cron_manager($sm); $cm->execute(); exit; }
function edit_cron_task($in_task) { if (!$this->check_token()) { return false; } if (!vivvo_hooks_manager::call('vivvoCore_cronTask', array(&$in_task))) { return vivvo_hooks_manager::get_status(); } if ($this->_user && $this->_user->is_admin()) { if (isset($in_task['name'])) { $sm = vivvo_lite_site::get_instance(); $_config = $sm->get_configuration(); $cron_tasks = $_config->get_configuration_property_list('cron_task'); if (array_key_exists($in_task['name'], $cron_tasks)) { require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/framework/vivvo_cron.php'; $cm = new vivvo_cron_manager(); if (trim($in_task['time_mask']) != '') { //edit $cm->cron_job($in_task['time_mask'], $cron_tasks[$in_task['name']]['file'], $cron_tasks[$in_task['name']]['class'], $cron_tasks[$in_task['name']]['method'], unserialize($cron_tasks[$in_task['name']]['arguments'])); admin_log($sm->user->get_username(), 'Edited cron #' . $in_task['name']); } else { //delete $cm->delete_cron_job($cron_tasks[$in_task['name']]['file'], $cron_tasks[$in_task['name']]['class'], $cron_tasks[$in_task['name']]['method'], unserialize($cron_tasks[$in_task['name']]['arguments'])); admin_log($sm->user->get_username(), 'Deleted cron #' . $in_task['name']); } return true; } else { $this->set_error_code(5104); return false; } } else { $this->set_error_code(5105); return false; } } else { $this->set_error_code(5106); return false; } }
/** * Feed Importer uninstall procedure * * @param vivvo_site $site_manager * @param int $step */ public function uninstall($site_manager, $step = 1) { parent::uninstall($site_manager, $step); if ($step == 2) { $sqlRunner = new SQLRunner(array('db' => $site_manager->get_db(), 'filename' => VIVVO_FS_PLUGIN_ROOT . ($plugin_dir = $this->get_root_dir()) . 'db/uninstall.sql')); try { $sqlRunner->load() and $sqlRunner->run(); } catch (SQLRunnerException $e) { $this->set_error_code(14, $e->getMessage()); // error executing sql script file $this->uninstall($site_manager, 1); return; } $conf = $site_manager->get_configuration(); $conf->remove_global('VIVVO_PLUGIN_FEED_IMPORTER_AUTHOR'); $conf->remove_global('VIVVO_PLUGIN_FEED_IMPORTER_AUTO_ARCHIVE'); $conf->remove_global('VIVVO_PLUGIN_FEED_IMPORTER_AUTO_DELETE'); $conf->remove_global('VIVVO_PLUGIN_FEED_IMPORTER_PERIOD'); $conf->remove_global('VIVVO_PLUGIN_FEED_IMPORTER_STATUS'); $conf->remove_global('VIVVO_PLUGIN_FEED_IMPORTER_SHOW_COMMENT'); $conf->remove_global('VIVVO_PLUGIN_FEED_IMPORTER_UPDATE_ARTICLES'); $conf->remove_global('VIVVO_PLUGIN_FEED_IMPORTER_USE_LOGO'); $conf->remove_global('VIVVO_PLUGIN_FEED_IMPORTER_TRASH'); $conf->remove_global('VIVVO_PLUGIN_FEED_IMPORTER_USER_ID'); $site_manager->unregister_action('feed'); require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/framework/vivvo_cron.php'; $cm = new vivvo_cron_manager($site_manager); $cm->delete_cron_job($plugin_dir . 'tasks/auto_import_feeds.php', null, 'auto_import_feeds'); $site_manager->get_plugin_manager()->unregister($this->plugin_name); } $output = $site_manager->get_output(); echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' . "\n"; echo $output; }
/** * Newsletter uninstall procedure * * @param vivvo_site $site_manager * @param int $step */ public function uninstall($site_manager, $step = 1) { parent::uninstall($site_manager, $step); if ($step == 2) { $sqlRunner = new SQLRunner(array('db' => $site_manager->get_db(), 'filename' => VIVVO_FS_PLUGIN_ROOT . ($plugin_dir = $this->get_root_dir()) . 'db/uninstall.sql')); try { $sqlRunner->load() and $sqlRunner->run(); } catch (SQLRunnerException $e) { $this->set_error_code(14, $e->getMessage()); // error executing sql script file $this->uninstall($site_manager, 1); return; } $conf = $site_manager->get_configuration(); $conf->remove_global('VIVVO_PLUGIN_NEWSLETTER_SUBSCRIBE_BODY'); $conf->remove_global('VIVVO_PLUGIN_NEWSLETTER_SUBSCRIBE_SUBJECT'); $conf->remove_global('VIVVO_PLUGIN_NEWSLETTER_UNSUBSCRIBE_TEXT'); $conf->remove_global('VIVVO_PLUGIN_NEWSLETTER_PERIOD'); $conf->remove_global('VIVVO_PLUGIN_NEWSLETTER_NUMBER_OF_MAILS'); $site_manager->unregister_action('newsletter'); $site_manager->unregister_module('box_newsletter'); $site_manager->unregister_module('box_maillist'); $site_manager->get_url_manager()->unregister_url('newsletter'); require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/framework/vivvo_cron.php'; $cm = new vivvo_cron_manager($site_manager); $cm->delete_cron_job($plugin_dir . 'tasks/mail_queue.php', null, 'mail_queue'); $site_manager->get_plugin_manager()->unregister($this->plugin_name); } $output = $site_manager->get_output(); echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' . "\n"; echo $output; }
/** * Handles cronjob.php --touch */ function action_touch($options) { defined('VIVVO_START_TIME') or define('VIVVO_START_TIME', time()); $cron_flag = VIVVO_FS_ROOT . 'cache/.cron.lock'; // call cron only if it's been at least a minute since the last if (file_exists($cron_flag) and VIVVO_START_TIME - filemtime($cron_flag) < 60) { cronjob_error('Cron manager has already been called less than a minute ago.'); } // reset flag @unlink($cron_flag); touch($cron_flag); require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/vivvo_lite_site.php'; require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/framework/vivvo_cron.php'; error_reporting(E_ERROR); define('VIVVO_SKIP_URL_PARSING', true); $sm = vivvo_lite_site::get_instance(); $cm = new vivvo_cron_manager($sm); $cm->execute(); echo 'Cron manager executed successfully.' . PHP_EOL; }
function parse_cron_line($cron_str, $last_execute) { if (preg_match("~^([-0-9,/*]+)\\s+([-0-9,/*]+)\\s+([-0-9,/*]+)\\s+([-0-9,/*]+)\\s+([-0-7,/*]+|(-|/|Sun|Mon|Tue|Wed|Thu|Fri|Sat)+)\$~i", $cron_str, $job)) { if ($job[PC_DOW][0] != '*' and !is_numeric($job[PC_DOW])) { $job[PC_DOW] = str_replace(array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"), array(0, 1, 2, 3, 4, 5, 6), $job[PC_DOW]); } } else { return false; } return vivvo_cron_manager::get_last_scheduled_run_time($job, $last_execute); }