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); }