00001 <?php
00002
00003
00004
00005 class ProcessSchedulerBaseCommand extends CommandChain {
00006
00007
00008
00009 protected function do_execute() {
00010 $ret = new Status();
00011 $task = $this->get_params();
00012 $err_task = $this->run_task($task);
00013 $this->append(CommandsFactory::create_command($task, 'reschedule', $err_task));
00014 if ($err_task->is_error()) {
00015 $ret->merge($this->on_error($task, $err_task));
00016 }
00017 else {
00018 $ret->merge($this->on_success($task, $err_task));
00019 }
00020 return $ret;
00021 }
00022
00023
00024
00025
00026 public function get_name() {
00027 return 'process';
00028 }
00029
00030
00031
00032
00033 public function get_description() {
00034 return tr('Process', 'scheduler');
00035 }
00036
00037
00038
00039
00040
00041
00042
00043 protected function run_task($task) {
00044 $ret = new Status();
00045 if (empty($task)) {
00046 return $ret;
00047 }
00048
00049 Load::components('console');
00050 $ret->merge(Console::invoke($task->action));
00051 return $ret;
00052 }
00053
00054
00055
00056
00057
00058
00059
00060
00061 protected function on_error($task, $err) {
00062 $ret = new Status();
00063
00064 if (Config::has_feature(ConfigScheduler::SEND_ERROR_MAIL)) {
00065 Load::commands('generics/mail');
00066 $cmd_admin = new MailCommand(
00067 tr('Task "%t" failed', 'scheduler', array('%t' => $task->name)),
00068 Config::get_value(Config::MAIL_ADMIN),
00069 'scheduler/mail/error_admin',
00070 array(
00071 'error' => $err,
00072 'task' => $task
00073 )
00074 );
00075 $this->append($cmd_admin);
00076 }
00077
00078 return $ret;
00079 }
00080
00081
00082
00083
00084
00085
00086
00087
00088 protected function on_success($task, $err) {
00089 $ret = new Status();
00090 return $ret;
00091 }
00092 }