* @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\task\core; /** * Tidy search cron task. * * Will only run when the currently selected search backend supports tidying. */ class tidy_search extends \phpbb\cron\task\base { /** * phpBB root path * @var string */ protected $phpbb_root_path; /** * PHP file extension * @var string */ protected $php_ext; /** * Auth object * @var \phpbb\auth\auth */ protected $auth; /** * Config object * @var \phpbb\config\config */ protected $config; /** * Database object * @var \phpbb\db\driver\driver_interface */ protected $db; /** * User object * @var \phpbb\user */ protected $user; /** * Event dispatcher object * @var \phpbb\event\dispatcher_interface */ protected $phpbb_dispatcher; /** * Constructor. * * @param string $phpbb_root_path The phpBB root path * @param string $php_ext The PHP file extension * @param \phpbb\auth\auth $auth The auth object * @param \phpbb\config\config $config The config object * @param \phpbb\db\driver\driver_interface $db The database object * @param \phpbb\user $user The user object * @param \phpbb\event\dispatcher_interface $phpbb_dispatcher The event dispatcher object */ public function __construct($phpbb_root_path, $php_ext, \phpbb\auth\auth $auth, \phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, \phpbb\user $user, \phpbb\event\dispatcher_interface $phpbb_dispatcher) { $this->phpbb_root_path = $phpbb_root_path; $this->php_ext = $php_ext; $this->auth = $auth; $this->config = $config; $this->db = $db; $this->user = $user; $this->phpbb_dispatcher = $phpbb_dispatcher; } /** * Runs this cron task. * * @return null */ public function run() { $search_type = $this->config['search_type']; // 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, $this->phpbb_dispatcher); 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() { return class_exists($this->config['search_type']); } /** * 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']; } }