diff options
Diffstat (limited to 'phpBB/includes/cron/task')
-rw-r--r-- | phpBB/includes/cron/task/base.php | 76 | ||||
-rw-r--r-- | phpBB/includes/cron/task/core/prune_all_forums.php | 93 | ||||
-rw-r--r-- | phpBB/includes/cron/task/core/prune_forum.php | 163 | ||||
-rw-r--r-- | phpBB/includes/cron/task/core/queue.php | 82 | ||||
-rw-r--r-- | phpBB/includes/cron/task/core/tidy_cache.php | 76 | ||||
-rw-r--r-- | phpBB/includes/cron/task/core/tidy_database.php | 70 | ||||
-rw-r--r-- | phpBB/includes/cron/task/core/tidy_search.php | 109 | ||||
-rw-r--r-- | phpBB/includes/cron/task/core/tidy_sessions.php | 63 | ||||
-rw-r--r-- | phpBB/includes/cron/task/core/tidy_warnings.php | 84 | ||||
-rw-r--r-- | phpBB/includes/cron/task/parametrized.php | 52 | ||||
-rw-r--r-- | phpBB/includes/cron/task/task.php | 55 | ||||
-rw-r--r-- | phpBB/includes/cron/task/wrapper.php | 108 |
12 files changed, 0 insertions, 1031 deletions
diff --git a/phpBB/includes/cron/task/base.php b/phpBB/includes/cron/task/base.php deleted file mode 100644 index 94a2f267b4..0000000000 --- a/phpBB/includes/cron/task/base.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Cron task base class. Provides sensible defaults for cron tasks -* and partially implements cron task interface, making writing cron tasks easier. -* -* At a minimum, subclasses must override the run() method. -* -* Cron tasks need not inherit from this base class. If desired, -* they may implement cron task interface directly. -* -* @package phpBB3 -*/ -abstract class phpbb_cron_task_base implements phpbb_cron_task -{ - private $name; - - /** - * Returns the name of the task. - * - * @return string Name of wrapped task. - */ - public function get_name() - { - return $this->name; - } - - /** - * Sets the name of the task. - * - * @param string $name The task name - */ - public function set_name($name) - { - $this->name = $name; - } - - /** - * Returns whether this cron task can run, given current board configuration. - * - * For example, a cron task that prunes forums can only run when - * forum pruning is enabled. - * - * @return bool - */ - public function is_runnable() - { - return true; - } - - /** - * Returns whether this cron task should run now, because enough time - * has passed since it was last run. - * - * @return bool - */ - public function should_run() - { - return true; - } -} diff --git a/phpBB/includes/cron/task/core/prune_all_forums.php b/phpBB/includes/cron/task/core/prune_all_forums.php deleted file mode 100644 index 2c5d38cec0..0000000000 --- a/phpBB/includes/cron/task/core/prune_all_forums.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Prune all forums cron task. -* -* It is intended to be invoked from system cron. -* This task will find all forums for which pruning is enabled, and will -* prune all forums as necessary. -* -* @package phpBB3 -*/ -class phpbb_cron_task_core_prune_all_forums extends phpbb_cron_task_base -{ - protected $phpbb_root_path; - protected $php_ext; - protected $config; - protected $db; - - /** - * Constructor. - * - * @param string $phpbb_root_path The root path - * @param string $php_ext The PHP extension - * @param phpbb_config $config The config - * @param phpbb_db_driver $db The db connection - */ - public function __construct($phpbb_root_path, $php_ext, phpbb_config $config, phpbb_db_driver $db) - { - $this->phpbb_root_path = $phpbb_root_path; - $this->php_ext = $php_ext; - $this->config = $config; - $this->db = $db; - } - - /** - * Runs this cron task. - * - * @return null - */ - public function run() - { - if (!function_exists('auto_prune')) - { - include($this->phpbb_root_path . 'includes/functions_admin.' . $this->php_ext); - } - - $sql = 'SELECT forum_id, prune_next, enable_prune, prune_days, prune_viewed, forum_flags, prune_freq - FROM ' . FORUMS_TABLE . " - WHERE enable_prune = 1 - AND prune_next < " . time(); - $result = $this->db->sql_query($sql); - while ($row = $this->db->sql_fetchrow($result)) - { - if ($row['prune_days']) - { - auto_prune($row['forum_id'], 'posted', $row['forum_flags'], $row['prune_days'], $row['prune_freq']); - } - - if ($row['prune_viewed']) - { - auto_prune($row['forum_id'], 'viewed', $row['forum_flags'], $row['prune_viewed'], $row['prune_freq']); - } - } - $this->db->sql_freeresult($result); - } - - /** - * Returns whether this cron task can run, given current board configuration. - * - * This cron task will only run when system cron is utilised. - * - * @return bool - */ - public function is_runnable() - { - return (bool) $this->config['use_system_cron']; - } -} diff --git a/phpBB/includes/cron/task/core/prune_forum.php b/phpBB/includes/cron/task/core/prune_forum.php deleted file mode 100644 index e3c497f072..0000000000 --- a/phpBB/includes/cron/task/core/prune_forum.php +++ /dev/null @@ -1,163 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Prune one forum cron task. -* -* It is intended to be used when cron is invoked via web. -* This task can decide whether it should be run using data obtained by viewforum -* code, without making additional database queries. -* -* @package phpBB3 -*/ -class phpbb_cron_task_core_prune_forum extends phpbb_cron_task_base implements phpbb_cron_task_parametrized -{ - protected $phpbb_root_path; - protected $php_ext; - protected $config; - protected $db; - - /** - * If $forum_data is given, it is assumed to contain necessary information - * about a single forum that is to be pruned. - * - * If $forum_data is not given, forum id will be retrieved via request_var - * and a database query will be performed to load the necessary information - * about the forum. - */ - protected $forum_data; - - /** - * Constructor. - * - * @param string $phpbb_root_path The root path - * @param string $php_ext The PHP extension - * @param phpbb_config $config The config - * @param phpbb_db_driver $db The db connection - */ - public function __construct($phpbb_root_path, $php_ext, phpbb_config $config, phpbb_db_driver $db) - { - $this->phpbb_root_path = $phpbb_root_path; - $this->php_ext = $php_ext; - $this->config = $config; - $this->db = $db; - } - - /** - * Manually set forum data. - * - * @param array $forum_data Information about a forum to be pruned. - */ - public function set_forum_data($forum_data) - { - $this->forum_data = $forum_data; - } - - /** - * Runs this cron task. - * - * @return null - */ - public function run() - { - if (!function_exists('auto_prune')) - { - include($this->phpbb_root_path . 'includes/functions_admin.' . $this->php_ext); - } - - if ($this->forum_data['prune_days']) - { - auto_prune($this->forum_data['forum_id'], 'posted', $this->forum_data['forum_flags'], $this->forum_data['prune_days'], $this->forum_data['prune_freq']); - } - - if ($this->forum_data['prune_viewed']) - { - auto_prune($this->forum_data['forum_id'], 'viewed', $this->forum_data['forum_flags'], $this->forum_data['prune_viewed'], $this->forum_data['prune_freq']); - } - } - - /** - * Returns whether this cron task can run, given current board configuration. - * - * This cron task will not run when system cron is utilised, as in - * such cases prune_all_forums task would run instead. - * - * Additionally, this task must be given the forum data, either via - * the constructor or parse_parameters method. - * - * @return bool - */ - public function is_runnable() - { - return !$this->config['use_system_cron'] && $this->forum_data; - } - - /** - * Returns whether this cron task should run now, because enough time - * has passed since it was last run. - * - * Forum pruning interval is specified in the forum data. - * - * @return bool - */ - public function should_run() - { - return $this->forum_data['enable_prune'] && $this->forum_data['prune_next'] < time(); - } - - /** - * Returns parameters of this cron task as an array. - * The array has one key, f, whose value is id of the forum to be pruned. - * - * @return array - */ - public function get_parameters() - { - return array('f' => $this->forum_data['forum_id']); - } - - /** - * Parses parameters found in $request, which is an instance of - * phpbb_request_interface. - * - * It is expected to have a key f whose value is id of the forum to be pruned. - * - * @param phpbb_request_interface $request Request object. - * - * @return null - */ - public function parse_parameters(phpbb_request_interface $request) - { - $this->forum_data = null; - if ($request->is_set('f')) - { - $forum_id = $request->variable('f', 0); - - $sql = 'SELECT forum_id, prune_next, enable_prune, prune_days, prune_viewed, forum_flags, prune_freq - FROM ' . FORUMS_TABLE . " - WHERE forum_id = $forum_id"; - $result = $this->db->sql_query($sql); - $row = $this->db->sql_fetchrow($result); - $this->db->sql_freeresult($result); - - if ($row) - { - $this->forum_data = $row; - } - } - } -} diff --git a/phpBB/includes/cron/task/core/queue.php b/phpBB/includes/cron/task/core/queue.php deleted file mode 100644 index 732f9c6bea..0000000000 --- a/phpBB/includes/cron/task/core/queue.php +++ /dev/null @@ -1,82 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Queue cron task. Sends email and jabber messages queued by other scripts. -* -* @package phpBB3 -*/ -class phpbb_cron_task_core_queue extends phpbb_cron_task_base -{ - protected $phpbb_root_path; - protected $php_ext; - protected $config; - - /** - * Constructor. - * - * @param string $phpbb_root_path The root path - * @param string $php_ext The PHP extension - * @param phpbb_config $config The config - */ - public function __construct($phpbb_root_path, $php_ext, phpbb_config $config) - { - $this->phpbb_root_path = $phpbb_root_path; - $this->php_ext = $php_ext; - $this->config = $config; - } - - /** - * Runs this cron task. - * - * @return null - */ - public function run() - { - if (!class_exists('queue')) - { - include($this->phpbb_root_path . 'includes/functions_messenger.' . $this->php_ext); - } - $queue = new queue(); - $queue->process(); - } - - /** - * Returns whether this cron task can run, given current board configuration. - * - * Queue task is only run if the email queue (file) exists. - * - * @return bool - */ - public function is_runnable() - { - return file_exists($this->phpbb_root_path . 'cache/queue.' . $this->php_ext); - } - - /** - * Returns whether this cron task should run now, because enough time - * has passed since it was last run. - * - * The interval between queue runs is specified in board configuration. - * - * @return bool - */ - public function should_run() - { - return $this->config['last_queue_run'] < time() - $this->config['queue_interval_config']; - } -} diff --git a/phpBB/includes/cron/task/core/tidy_cache.php b/phpBB/includes/cron/task/core/tidy_cache.php deleted file mode 100644 index 16a45dae7c..0000000000 --- a/phpBB/includes/cron/task/core/tidy_cache.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Tidy cache cron task. -* -* @package phpBB3 -*/ -class phpbb_cron_task_core_tidy_cache extends phpbb_cron_task_base -{ - protected $config; - protected $cache; - - /** - * Constructor. - * - * @param phpbb_config $config The config - * @param phpbb_cache_driver_interface $cache The cache driver - */ - public function __construct(phpbb_config $config, phpbb_cache_driver_interface $cache) - { - $this->config = $config; - $this->cache = $cache; - } - - /** - * Runs this cron task. - * - * @return null - */ - public function run() - { - $this->cache->tidy(); - } - - /** - * Returns whether this cron task can run, given current board configuration. - * - * Tidy cache cron task runs if the cache implementation in use - * supports tidying. - * - * @return bool - */ - public function is_runnable() - { - return true; - } - - /** - * Returns whether this cron task should run now, because enough time - * has passed since it was last run. - * - * The interval between cache tidying is specified in board - * configuration. - * - * @return bool - */ - public function should_run() - { - return $this->config['cache_last_gc'] < time() - $this->config['cache_gc']; - } -} diff --git a/phpBB/includes/cron/task/core/tidy_database.php b/phpBB/includes/cron/task/core/tidy_database.php deleted file mode 100644 index b882e7b500..0000000000 --- a/phpBB/includes/cron/task/core/tidy_database.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Tidy database cron task. -* -* @package phpBB3 -*/ -class phpbb_cron_task_core_tidy_database extends phpbb_cron_task_base -{ - protected $phpbb_root_path; - protected $php_ext; - protected $config; - - /** - * Constructor. - * - * @param string $phpbb_root_path The root path - * @param string $php_ext The PHP extension - * @param phpbb_config $config The config - */ - public function __construct($phpbb_root_path, $php_ext, phpbb_config $config) - { - $this->phpbb_root_path = $phpbb_root_path; - $this->php_ext = $php_ext; - $this->config = $config; - } - - /** - * Runs this cron task. - * - * @return null - */ - public function run() - { - if (!function_exists('tidy_database')) - { - include($this->phpbb_root_path . 'includes/functions_admin.' . $this->php_ext); - } - tidy_database(); - } - - /** - * Returns whether this cron task should run now, because enough time - * has passed since it was last run. - * - * The interval between database tidying is specified in board - * configuration. - * - * @return bool - */ - public function should_run() - { - return $this->config['database_last_gc'] < time() - $this->config['database_gc']; - } -} diff --git a/phpBB/includes/cron/task/core/tidy_search.php b/phpBB/includes/cron/task/core/tidy_search.php deleted file mode 100644 index 3ec25aa021..0000000000 --- a/phpBB/includes/cron/task/core/tidy_search.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Tidy search cron task. -* -* Will only run when the currently selected search backend supports tidying. -* -* @package phpBB3 -*/ -class phpbb_cron_task_core_tidy_search extends phpbb_cron_task_base -{ - protected $phpbb_root_path; - protected $php_ext; - protected $auth; - protected $config; - protected $db; - protected $user; - - /** - * Constructor. - * - * @param string $phpbb_root_path The root path - * @param string $php_ext The PHP extension - * @param phpbb_auth $auth The auth - * @param phpbb_config $config The config - * @param phpbb_db_driver $db The db connection - * @param phpbb_user $user The user - */ - public function __construct($phpbb_root_path, $php_ext, phpbb_auth $auth, phpbb_config $config, phpbb_db_driver $db, phpbb_user $user) - { - $this->phpbb_root_path = $phpbb_root_path; - $this->php_ext = $php_ext; - $this->auth = $auth; - $this->config = $config; - $this->db = $db; - $this->user = $user; - } - - /** - * Runs this cron task. - * - * @return null - */ - public function run() - { - // Select the search method - $search_type = basename($this->config['search_type']); - - if (!class_exists($search_type)) - { - include($this->phpbb_root_path . "includes/search/$search_type." . $this->php_ext); - } - - // We do some additional checks in the module to ensure it can actually be utilised - $error = false; - $search = new $search_type($error, $this->phpbb_root_path, $this->php_ext, $this->auth, $this->config, $this->db, $this->user); - - if (!$error) - { - $search->tidy(); - } - } - - /** - * Returns whether this cron task can run, given current board configuration. - * - * Search cron task is runnable in all normal use. It may not be - * runnable if the search backend implementation selected in board - * configuration does not exist. - * - * @return bool - */ - public function is_runnable() - { - // Select the search method - $search_type = basename($this->config['search_type']); - - return file_exists($this->phpbb_root_path . 'includes/search/' . $search_type . '.' . $this->php_ext); - } - - /** - * Returns whether this cron task should run now, because enough time - * has passed since it was last run. - * - * The interval between search tidying is specified in board - * configuration. - * - * @return bool - */ - public function should_run() - { - return $this->config['search_last_gc'] < time() - $this->config['search_gc']; - } -} diff --git a/phpBB/includes/cron/task/core/tidy_sessions.php b/phpBB/includes/cron/task/core/tidy_sessions.php deleted file mode 100644 index 95f55235c9..0000000000 --- a/phpBB/includes/cron/task/core/tidy_sessions.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Tidy sessions cron task. -* -* @package phpBB3 -*/ -class phpbb_cron_task_core_tidy_sessions extends phpbb_cron_task_base -{ - protected $config; - protected $user; - - /** - * Constructor. - * - * @param phpbb_config $config The config - * @param phpbb_user $user The user - */ - public function __construct(phpbb_config $config, phpbb_user $user) - { - $this->config = $config; - $this->user = $user; - } - - /** - * Runs this cron task. - * - * @return null - */ - public function run() - { - $this->user->session_gc(); - } - - /** - * Returns whether this cron task should run now, because enough time - * has passed since it was last run. - * - * The interval between session tidying is specified in board - * configuration. - * - * @return bool - */ - public function should_run() - { - return $this->config['session_last_gc'] < time() - $this->config['session_gc']; - } -} diff --git a/phpBB/includes/cron/task/core/tidy_warnings.php b/phpBB/includes/cron/task/core/tidy_warnings.php deleted file mode 100644 index 2a7798e56e..0000000000 --- a/phpBB/includes/cron/task/core/tidy_warnings.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Tidy warnings cron task. -* -* Will only run when warnings are configured to expire. -* -* @package phpBB3 -*/ -class phpbb_cron_task_core_tidy_warnings extends phpbb_cron_task_base -{ - protected $phpbb_root_path; - protected $php_ext; - protected $config; - - /** - * Constructor. - * - * @param string $phpbb_root_path The root path - * @param string $php_ext The PHP extension - * @param phpbb_config $config The config - */ - public function __construct($phpbb_root_path, $php_ext, phpbb_config $config) - { - $this->phpbb_root_path = $phpbb_root_path; - $this->php_ext = $php_ext; - $this->config = $config; - } - - /** - * Runs this cron task. - * - * @return null - */ - public function run() - { - if (!function_exists('tidy_warnings')) - { - include($this->phpbb_root_path . 'includes/functions_admin.' . $this->php_ext); - } - tidy_warnings(); - } - - /** - * Returns whether this cron task can run, given current board configuration. - * - * If warnings are set to never expire, this cron task will not run. - * - * @return bool - */ - public function is_runnable() - { - return (bool) $this->config['warnings_expire_days']; - } - - /** - * Returns whether this cron task should run now, because enough time - * has passed since it was last run. - * - * The interval between warnings tidying is specified in board - * configuration. - * - * @return bool - */ - public function should_run() - { - return $this->config['warnings_last_gc'] < time() - $this->config['warnings_gc']; - } -} diff --git a/phpBB/includes/cron/task/parametrized.php b/phpBB/includes/cron/task/parametrized.php deleted file mode 100644 index 5f0e46eafc..0000000000 --- a/phpBB/includes/cron/task/parametrized.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Parametrized cron task interface. -* -* Parametrized cron tasks are somewhat of a cross between regular cron tasks and -* delayed jobs. Whereas regular cron tasks perform some action globally, -* parametrized cron tasks perform actions on a particular object (or objects). -* Parametrized cron tasks do not make sense and are not usable without -* specifying these objects. -* -* @package phpBB3 -*/ -interface phpbb_cron_task_parametrized extends phpbb_cron_task -{ - /** - * Returns parameters of this cron task as an array. - * - * The array must map string keys to string values. - * - * @return array - */ - public function get_parameters(); - - /** - * Parses parameters found in $request, which is an instance of - * phpbb_request_interface. - * - * $request contains user input and must not be trusted. - * Cron task must validate all data before using it. - * - * @param phpbb_request_interface $request Request object. - * - * @return null - */ - public function parse_parameters(phpbb_request_interface $request); -} diff --git a/phpBB/includes/cron/task/task.php b/phpBB/includes/cron/task/task.php deleted file mode 100644 index 2d585df96d..0000000000 --- a/phpBB/includes/cron/task/task.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Cron task interface -* @package phpBB3 -*/ -interface phpbb_cron_task -{ - /** - * Returns the name of the task. - * - * @return string Name of wrapped task. - */ - public function get_name(); - - /** - * Runs this cron task. - * - * @return null - */ - public function run(); - - /** - * Returns whether this cron task can run, given current board configuration. - * - * For example, a cron task that prunes forums can only run when - * forum pruning is enabled. - * - * @return bool - */ - public function is_runnable(); - - /** - * Returns whether this cron task should run now, because enough time - * has passed since it was last run. - * - * @return bool - */ - public function should_run(); -} diff --git a/phpBB/includes/cron/task/wrapper.php b/phpBB/includes/cron/task/wrapper.php deleted file mode 100644 index 386fb5b383..0000000000 --- a/phpBB/includes/cron/task/wrapper.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Cron task wrapper class. -* Enhances cron tasks with convenience methods that work identically for all tasks. -* -* @package phpBB3 -*/ -class phpbb_cron_task_wrapper -{ - protected $task; - protected $phpbb_root_path; - protected $php_ext; - - /** - * Constructor. - * - * Wraps a task $task, which must implement cron_task interface. - * - * @param phpbb_cron_task $task The cron task to wrap. - */ - public function __construct(phpbb_cron_task $task, $phpbb_root_path, $php_ext) - { - $this->task = $task; - $this->phpbb_root_path = $phpbb_root_path; - $this->php_ext = $php_ext; - } - - /** - * Returns whether the wrapped task is parametrised. - * - * Parametrized tasks accept parameters during initialization and must - * normally be scheduled with parameters. - * - * @return bool Whether or not this task is parametrized. - */ - public function is_parametrized() - { - return $this->task instanceof phpbb_cron_task_parametrized; - } - - /** - * Returns whether the wrapped task is ready to run. - * - * A task is ready to run when it is runnable according to current configuration - * and enough time has passed since it was last run. - * - * @return bool Whether the wrapped task is ready to run. - */ - public function is_ready() - { - return $this->task->is_runnable() && $this->task->should_run(); - } - - /** - * Returns a url through which this task may be invoked via web. - * - * When system cron is not in use, running a cron task is accomplished - * by outputting an image with the url returned by this function as - * source. - * - * @return string URL through which this task may be invoked. - */ - public function get_url() - { - $name = $this->get_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($this->phpbb_root_path . 'cron.' . $this->php_ext, 'cron_type=' . $name . $extra); - return $url; - } - - /** - * Forwards all other method calls to the wrapped task implementation. - * - * @return mixed - */ - public function __call($name, $args) - { - return call_user_func_array(array($this->task, $name), $args); - } -} |