diff options
author | LEZY Thomas <thomas.gif.91@gmail.com> | 2014-05-28 19:51:59 +0200 |
---|---|---|
committer | LEZY Thomas <thomas.gif.91@gmail.com> | 2014-05-28 20:03:28 +0200 |
commit | 9f942776ad5a3b396045e6f97db6ef655c5d9fcc (patch) | |
tree | 65e6d021e94dd4c66696f4b3727bf5e481e195d8 /phpBB/phpbb/console/command/cron | |
parent | 61ad42790f653c0fe7bf1c1b5d27181794bec997 (diff) | |
download | forums-9f942776ad5a3b396045e6f97db6ef655c5d9fcc.tar forums-9f942776ad5a3b396045e6f97db6ef655c5d9fcc.tar.gz forums-9f942776ad5a3b396045e6f97db6ef655c5d9fcc.tar.bz2 forums-9f942776ad5a3b396045e6f97db6ef655c5d9fcc.tar.xz forums-9f942776ad5a3b396045e6f97db6ef655c5d9fcc.zip |
[ticket/12597] Changes name of command cron:run-all to cron:run.
Also adds an optional argument to specify one precise cron task to
lauch, and modifies test file accordingly.
PHPBB3-12597
Diffstat (limited to 'phpBB/phpbb/console/command/cron')
-rw-r--r-- | phpBB/phpbb/console/command/cron/run.php (renamed from phpBB/phpbb/console/command/cron/run_all.php) | 54 |
1 files changed, 38 insertions, 16 deletions
diff --git a/phpBB/phpbb/console/command/cron/run_all.php b/phpBB/phpbb/console/command/cron/run.php index 2f8166b857..701f0f02fb 100644 --- a/phpBB/phpbb/console/command/cron/run_all.php +++ b/phpBB/phpbb/console/command/cron/run.php @@ -14,10 +14,11 @@ namespace phpbb\console\command\cron; use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; -class run_all extends \phpbb\console\command\command +class run extends \phpbb\console\command\command { /** @var \phpbb\cron\manager */ protected $cron_manager; @@ -52,43 +53,64 @@ class run_all extends \phpbb\console\command\command protected function configure() { $this - ->setName('cron:run-all') - ->setDescription($this->user->lang('CLI_DESCR_CRON_RUN_ALL')) + ->setName('cron:run') + ->setDescription($this->user->lang('CLI_DESCR_CRON_RUN')) + ->addArgument('name', InputArgument::OPTIONAL, $this->user->lang('CLI_DESCR_CRON_ARG_RUN_1')); ; } /** * Executes the function. * - * Tries to acquire the cron lock, then runs all ready cron tasks. + * Tries to acquire the cron lock, then if no argument has been given runs all ready cron tasks. * If the cron lock can not be obtained, an error message is printed * and the exit status is set to 1. * If the verbose option is specified, each start of a task is printed. * Otherwise there is no output. + * If an argument is given to the command, only the task whose name matches the + * argument will be started. If none exists, an error message is + * printed and theexit status is set to -1. Verbose option does nothing in + * this case. * * @param InputInterface $input The input stream, unused here - * @param OutputInterface $output The output stream, used for printig verbose-mode - * and error information. - * @return int 0 if all is ok, 1 if a lock error occured + * @param OutputInterface $output The output stream, used for printig verbose-mode and error information. + * + * @return int 0 if all is ok, 1 if a lock error occured and -1 if no task matching the argument was found */ protected function execute(InputInterface $input, OutputInterface $output) { if ($this->lock_db->acquire()) { - $run_tasks = $this->cron_manager->find_all_ready_tasks(); - - foreach ($run_tasks as $task) + if ($task_name = $input->getArgument('name')) { - if ($input->getOption('verbose')) + if ($task = $this->cron_manager->find_task($task_name)) { - $output->writeln($this->user->lang('RUNNING_TASK', $task->get_name())); + $task->run(); + return 0; + } + else + { + $output->writeln('<error>' . $this->user->lang('CRON_NO_TASK') . '</error>'); + return -1; } - - $task->run(); } - $this->lock_db->release(); + else + { + $run_tasks = $this->cron_manager->find_all_ready_tasks(); - return 0; + foreach ($run_tasks as $task) + { + if ($input->getOption('verbose')) + { + $output->writeln($this->user->lang('RUNNING_TASK', $task->get_name())); + } + + $task->run(); + } + $this->lock_db->release(); + + return 0; + } } else { |