From 0cfbdcc7449f1cc17b819ffe49aec88c274dd090 Mon Sep 17 00:00:00 2001 From: Oleg Pudeyev Date: Sat, 17 Apr 2010 06:32:15 -0400 Subject: [feature/system-cron] Reorganized cron task parametrization. PHPBB3-9596 --- phpBB/includes/cron/cron_task_wrapper.php | 32 ++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'phpBB/includes/cron/cron_task_wrapper.php') diff --git a/phpBB/includes/cron/cron_task_wrapper.php b/phpBB/includes/cron/cron_task_wrapper.php index 3919e4f049..0e63000846 100644 --- a/phpBB/includes/cron/cron_task_wrapper.php +++ b/phpBB/includes/cron/cron_task_wrapper.php @@ -24,11 +24,25 @@ if (!defined('IN_PHPBB')) */ class cron_task_wrapper { + /** + * Wraps a task $task, which must implement cron_task interface. + */ public function __construct($task) { $this->task = $task; } + /** + * Returns whether this task is parametrized. + * + * Parametrized tasks accept parameters during initialization and must + * normally be scheduled with parameters. + */ + public function is_parametrized() + { + return $this->task instanceof parametrized_cron_task; + } + /** * Returns whether the wrapped task is ready to run. * @@ -49,12 +63,28 @@ class cron_task_wrapper return preg_replace('/^cron_task_/', '', $class); } + /** + * Returns a url through which this task may be invoked via web. + */ public function get_url() { global $phpbb_root_path, $phpEx; $name = $this->get_name(); - $url = append_sid($phpbb_root_path . 'cron.' . $phpEx, 'cron_type=' . $name); + if ($this->is_parametrized()) + { + $params = $this->task->get_parameters(); + $extra = ''; + foreach ($params as $key => $value) + { + $extra .= '&' . $key . '=' . urlencode($value); + } + } + else + { + $extra = ''; + } + $url = append_sid($phpbb_root_path . 'cron.' . $phpEx, 'cron_type=' . $name . $extra); return $url; } -- cgit v1.2.1