Example #1
0
 public function process($command = '', $logger = null, $endCallback = null)
 {
     $command = explode(',', $command);
     $command = $command[0];
     self::$logger = $logger;
     self::$endCallback = $endCallback;
     if ('' == $command) {
         throw new Exception('No action command specified.');
     }
     if (!method_exists($this, 'on_' . $command)) {
         throw new Exception('Action command `' . $command . '` not found.');
     }
     $command = 'on_' . $command;
     $p = array();
     if (get_magic_quotes_gpc()) {
         $req_vars = array_map('stripslashes', $_REQUEST);
     } else {
         $req_vars = $_REQUEST;
     }
     foreach ($req_vars as $k => $v) {
         if ('(a)' == substr($k, -3)) {
             // array passed
             $v = explode('],[', substr($v, 1, -1));
             $n = sizeof($v);
             for ($i = 0; $i < $n; $i++) {
                 $v[$i] = str_replace('`§~§[]§~§`', '],[', $v[$i]);
             }
             $p[substr($k, 0, -3)] = $v;
         } else {
             if ('(o)' == substr($k, -3)) {
                 // object passed
                 $obj = new stdClass();
                 $v = explode('],[', substr($v, 1, -1));
                 $n = sizeof($v);
                 for ($i = 0; $i < $n; $i++) {
                     $pair = str_replace('`§~§[]§~§`', '],[', $v[$i]);
                     if (false !== ($ix = strpos($pair, '='))) {
                         $prop_name = substr($pair, 0, $ix);
                         $obj->{$prop_name} = substr($pair, $ix + 1);
                     }
                 }
                 $p[substr($k, 0, -3)] = $obj;
             } else {
                 $p[$k] = $v;
             }
         }
     }
     $this->{$command}($p);
 }