cron_manager = $cron_manager; $this->lock_db = $lock_db; $this->user = $user; parent::__construct(); } /** * Sets the command name and description * * @return null */ protected function configure() { $this ->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 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 and -1 if no task matching the argument was found */ protected function execute(InputInterface $input, OutputInterface $output) { if ($this->lock_db->acquire()) { if ($task_name = $input->getArgument('name')) { if ($task = $this->cron_manager->find_task($task_name)) { $task->run(); return 0; } else { $output->writeln('' . $this->user->lang('CRON_NO_TASK') . ''); return -1; } } else { $run_tasks = $this->cron_manager->find_all_ready_tasks(); 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 { $output->writeln('' . $this->user->lang('CRON_LOCK_ERROR') . ''); return 1; } } }