Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
85.71% |
6 / 7 |
CRAP | |
93.55% |
29 / 31 |
| manager | |
0.00% |
0 / 1 |
|
85.71% |
6 / 7 |
14.05 | |
93.55% |
29 / 31 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
| load_tasks | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
| find_one_ready_task | |
0.00% |
0 / 1 |
3.21 | |
71.43% |
5 / 7 |
|||
| find_all_ready_tasks | |
100.00% |
1 / 1 |
3 | |
100.00% |
8 / 8 |
|||
| find_task | |
100.00% |
1 / 1 |
3 | |
100.00% |
6 / 6 |
|||
| get_tasks | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| wrap_task | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| <?php | |
| /** | |
| * | |
| * This file is part of the phpBB Forum Software package. | |
| * | |
| * @copyright (c) phpBB Limited <https://www.phpbb.com> | |
| * @license GNU General Public License, version 2 (GPL-2.0) | |
| * | |
| * For full copyright and license information, please see | |
| * the docs/CREDITS.txt file. | |
| * | |
| */ | |
| namespace phpbb\cron; | |
| /** | |
| * Cron manager class. | |
| * | |
| * Finds installed cron tasks, stores task objects, provides task selection. | |
| */ | |
| class manager | |
| { | |
| /** | |
| * Set of \phpbb\cron\task\wrapper objects. | |
| * Array holding all tasks that have been found. | |
| * | |
| * @var array | |
| */ | |
| protected $tasks = array(); | |
| protected $phpbb_root_path; | |
| protected $php_ext; | |
| /** | |
| * Constructor. Loads all available tasks. | |
| * | |
| * @param array|\Traversable $tasks Provides an iterable set of task names | |
| * @param string $phpbb_root_path Relative path to phpBB root | |
| * @param string $php_ext PHP file extension | |
| */ | |
| public function __construct($tasks, $phpbb_root_path, $php_ext) | |
| { | |
| $this->phpbb_root_path = $phpbb_root_path; | |
| $this->php_ext = $php_ext; | |
| $this->load_tasks($tasks); | |
| } | |
| /** | |
| * Loads tasks given by name, wraps them | |
| * and puts them into $this->tasks. | |
| * | |
| * @param array|\Traversable $tasks Array of instances of \phpbb\cron\task\task | |
| * | |
| * @return null | |
| */ | |
| public function load_tasks($tasks) | |
| { | |
| foreach ($tasks as $task) | |
| { | |
| $this->tasks[] = $this->wrap_task($task); | |
| } | |
| } | |
| /** | |
| * Finds a task that is ready to run. | |
| * | |
| * If several tasks are ready, any one of them could be returned. | |
| * | |
| * If no tasks are ready, null is returned. | |
| * | |
| * @return \phpbb\cron\task\wrapper|null | |
| */ | |
| public function find_one_ready_task() | |
| { | |
| shuffle($this->tasks); | |
| foreach ($this->tasks as $task) | |
| { | |
| if ($task->is_ready()) | |
| { | |
| return $task; | |
| } | |
| } | |
| return null; | |
| } | |
| /** | |
| * Finds all tasks that are ready to run. | |
| * | |
| * @return array List of tasks which are ready to run (wrapped in \phpbb\cron\task\wrapper). | |
| */ | |
| public function find_all_ready_tasks() | |
| { | |
| $tasks = array(); | |
| foreach ($this->tasks as $task) | |
| { | |
| if ($task->is_ready()) | |
| { | |
| $tasks[] = $task; | |
| } | |
| } | |
| return $tasks; | |
| } | |
| /** | |
| * Finds a task by name. | |
| * | |
| * If there is no task with the specified name, null is returned. | |
| * | |
| * Web runner uses this method to resolve names to tasks. | |
| * | |
| * @param string $name Name of the task to look up. | |
| * @return \phpbb\cron\task\wrapper A wrapped task corresponding to the given name, or null. | |
| */ | |
| public function find_task($name) | |
| { | |
| foreach ($this->tasks as $task) | |
| { | |
| if ($task->get_name() == $name) | |
| { | |
| return $task; | |
| } | |
| } | |
| return null; | |
| } | |
| /** | |
| * Find all tasks and return them. | |
| * | |
| * @return array List of all tasks. | |
| */ | |
| public function get_tasks() | |
| { | |
| return $this->tasks; | |
| } | |
| /** | |
| * Wraps a task inside an instance of \phpbb\cron\task\wrapper. | |
| * | |
| * @param \phpbb\cron\task\task $task The task. | |
| * @return \phpbb\cron\task\wrapper The wrapped task. | |
| */ | |
| public function wrap_task(\phpbb\cron\task\task $task) | |
| { | |
| return new \phpbb\cron\task\wrapper($task, $this->phpbb_root_path, $this->php_ext); | |
| } | |
| } |