diff options
-rw-r--r-- | engine/handlers/cron_handler.php | 40 | ||||
-rw-r--r-- | engine/lib/cron.php | 56 |
2 files changed, 32 insertions, 64 deletions
diff --git a/engine/handlers/cron_handler.php b/engine/handlers/cron_handler.php deleted file mode 100644 index 9d3891892..000000000 --- a/engine/handlers/cron_handler.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php -/** - * Cron handlers - * - * This file dispatches cron actions. It is called via a URL rewrite in .htaccess - * from http://site/p/. Anything after 'action/' is considered the action - * and will be passed to {@link action()}. - * - * @package Elgg.Core - * @subpackage Actions - * @link http://docs.elgg.org/Tutorials/Actions - * - * @todo - */ - -require_once(dirname(dirname(__FILE__)) . "/start.php"); - -$period = get_input('period'); -if (!$period) { - throw new CronException(elgg_echo('CronException:unknownperiod', array($period))); -} - -// Get a list of parameters -$params = array(); -$params['time'] = time(); - -foreach ($CONFIG->input as $k => $v) { - $params[$k] = $v; -} - -// Data to return to -$std_out = ""; -$old_stdout = ""; -ob_start(); - -$old_stdout = elgg_trigger_plugin_hook('cron', $period, $params, $old_stdout); -$std_out = ob_get_clean(); - -// Return event -echo $std_out . $old_stdout;
\ No newline at end of file diff --git a/engine/lib/cron.php b/engine/lib/cron.php index 9d47e95d1..ff57a41f1 100644 --- a/engine/lib/cron.php +++ b/engine/lib/cron.php @@ -7,7 +7,7 @@ */ /** - * Initialisation + * Cron initialization * * @return void */ @@ -20,7 +20,7 @@ function cron_init() { } /** - * Cron handler for redirecting pages. + * Cron handler * * @param array $page Pages * @@ -29,29 +29,38 @@ function cron_init() { function cron_page_handler($page) { global $CONFIG; - if ($page[0]) { - switch (strtolower($page[0])) { - case 'minute' : - case 'fiveminute' : - case 'fifteenmin' : - case 'halfhour' : - case 'hourly' : - case 'daily' : - case 'weekly' : - case 'monthly': - case 'yearly' : - case 'reboot' : - set_input('period', $page[0]); - break; - default : - throw new CronException(elgg_echo('CronException:unknownperiod', array($page[0]))); - } - - // Include cron handler - include($CONFIG->path . "engine/handlers/cron_handler.php"); - } else { + if (!isset($page[0])) { forward(); } + + $period = strtolower($page[0]); + + $allowed_periods = array( + 'minute', 'fiveminute', 'fifteenmin', 'halfhour', 'hourly', + 'daily', 'weekly', 'monthly', 'yearly', 'reboot' + ); + + if (!in_array($period, $allowed_periods)) { + throw new CronException(elgg_echo('CronException:unknownperiod', array($period))); + } + + // Get a list of parameters + $params = array(); + $params['time'] = time(); + + foreach ($CONFIG->input as $k => $v) { + $params[$k] = $v; + } + + // Data to return to + $std_out = ""; + $old_stdout = ""; + ob_start(); + + $old_stdout = elgg_trigger_plugin_hook('cron', $period, $params, $old_stdout); + $std_out = ob_get_clean(); + + echo $std_out . $old_stdout; } /** @@ -79,5 +88,4 @@ function cron_public_pages($hook, $type, $return_value, $params) { return $return_value; } -// Register a startup event elgg_register_event_handler('init', 'system', 'cron_init');
\ No newline at end of file |