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); | |
} | |
} |