00001 <?php
00002
00003
00004
00005
00006
00007
00008 class ExecuteShellCommand extends CommandBase {
00009
00010
00011
00012
00013
00014 public function __construct($shellcmd) {
00015 parent::__construct(null, $shellcmd);
00016 }
00017
00018
00019
00020
00021
00022
00023
00024 public function execute() {
00025 $ret = new Status();
00026 $cmds = Arr::force($this->get_params(), false);
00027 foreach ($cmds as $cmd) {
00028 $ret->merge($this->invoke($cmd));
00029 if ($ret->is_error()) {
00030 break;
00031 }
00032 }
00033 return $ret;
00034 }
00035
00036
00037
00038
00039
00040
00041
00042 protected function invoke($call) {
00043 $ret = new Status();
00044 $output = array();
00045 $result = 0;
00046 $call = escapeshellcmd($call);
00047 exec($call, $output, $result);
00048 if ($result > 0) {
00049 if (count($output) > 0) {
00050 foreach($output as $err_line) {
00051 $ret->append($err_line);
00052 }
00053 }
00054 else {
00055 $ret->append(tr('Error while invoking %call: %e', 'core', array('%call' => $call, '%e' => $result)));
00056 }
00057 }
00058 return $ret;
00059 }
00060
00061 }