aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/cron/cron_task_wrapper.php
diff options
context:
space:
mode:
authorOleg Pudeyev <oleg@bsdpower.com>2010-04-17 06:32:15 -0400
committerOleg Pudeyev <oleg@bsdpower.com>2011-02-12 22:05:49 -0500
commit0cfbdcc7449f1cc17b819ffe49aec88c274dd090 (patch)
treef154c14e3b56a96e20427676c3ae40cf656be11a /phpBB/includes/cron/cron_task_wrapper.php
parent0f9b3bcc27e7daf7d605a7a38310a8f62b9a76e8 (diff)
downloadforums-0cfbdcc7449f1cc17b819ffe49aec88c274dd090.tar
forums-0cfbdcc7449f1cc17b819ffe49aec88c274dd090.tar.gz
forums-0cfbdcc7449f1cc17b819ffe49aec88c274dd090.tar.bz2
forums-0cfbdcc7449f1cc17b819ffe49aec88c274dd090.tar.xz
forums-0cfbdcc7449f1cc17b819ffe49aec88c274dd090.zip
[feature/system-cron] Reorganized cron task parametrization.
PHPBB3-9596
Diffstat (limited to 'phpBB/includes/cron/cron_task_wrapper.php')
-rw-r--r--phpBB/includes/cron/cron_task_wrapper.php32
1 files changed, 31 insertions, 1 deletions
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,12 +24,26 @@ 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.
*
* A task is ready to run when it is runnable according to current configuration
@@ -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 .= '&amp;' . $key . '=' . urlencode($value);
+ }
+ }
+ else
+ {
+ $extra = '';
+ }
+ $url = append_sid($phpbb_root_path . 'cron.' . $phpEx, 'cron_type=' . $name . $extra);
return $url;
}