00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 class StatusAnyCommand extends CommandChain {
00013
00014
00015
00016
00017
00018 protected function do_can_execute($user) {
00019 $ret = false;
00020 $inst = $this->get_instance();
00021 if ($inst instanceof IStatusHolder) {
00022 $new_status = $this->get_params();
00023 $ret = ($inst->get_status() != $new_status);
00024
00025 $ret = $ret && parent::do_can_execute($user);
00026 $ret = $ret && $this->do_can_execute_status($user, $inst, $new_status);
00027 }
00028 return $ret;
00029 }
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 protected function do_can_execute_status($user, IStatusHolder $inst, $new_status) {
00040 return true;
00041 }
00042
00043
00044
00045
00046
00047
00048 protected function do_execute() {
00049 $ret = new Status();
00050 Load::commands('generics/setstatus');
00051 $this->append(new SetstatusCommand($this->get_instance(), $this->get_params()));
00052 $this->set_result($this->get_instance());
00053 return $ret;
00054 }
00055
00056
00057
00058
00059
00060
00061 public function get_params() {
00062 $ret = parent::get_params();
00063 if (is_array($ret)) {
00064 $ret = Arr::get_item($ret, 0, '');
00065 }
00066 return $ret;
00067 }
00068
00069
00070
00071
00072 public function get_name() {
00073 return 'status';
00074 }
00075
00076
00077
00078
00079 public function get_description() {
00080 $text = 'Change to ' . Cast::string($this->get_params());
00081 $transmods = array('app', 'status');
00082 $inst = $this->get_instance();
00083 if ($inst instanceof IDataObject) {
00084 array_unshift($transmods, $inst->get_table_name());
00085 }
00086 return tr(
00087 $text,
00088 $transmods
00089 );
00090 }
00091 }