<?php function deserializationAction(&$body) { $args = $body->getValue(); $target = $args[0]; $baseClassPath = $GLOBALS['amfphp']['classPath']; $lpos = strrpos($target, '.'); $methodname = substr($target, $lpos + 1); $trunced = substr($target, 0, $lpos); $lpos = strrpos($trunced, "."); if ($lpos === false) { $classname = $trunced; $uriclasspath = $trunced . ".php"; $classpath = $baseClassPath . $trunced . ".php"; } else { $classname = substr($trunced, $lpos + 1); $classpath = $baseClassPath . str_replace(".", "/", $trunced) . ".php"; // removed to strip the basecp out of the equation here $uriclasspath = str_replace(".", "/", $trunced) . ".php"; // removed to strip the basecp out of the equation here } $body->methodName = $methodname; $body->className = $classname; $body->classPath = $classpath; $body->uriClassPath = $uriclasspath; //Now deserialize the arguments array_shift($args); $actualArgs = array(); foreach($args as $key => $value) { //Look at the value to see if it is JSON-encoded $value = urldecode($value); if($value != "") { if($value[0] != '[' && $value[0] != '{' && $value != "null" && $value != "false" && $value != "true") { //check to see if it is a number $char1 = ord($value[0]); if($char1 >= 0x30 && $char1 <= 0x39) { //Then this is a number $value = json_decode($value, true); } //Else leave value as is } else { $value = json_decode($value, true); } } $actualArgs[] = $value; } $body->setValue($actualArgs); } function executionAction(& $body) { $classConstruct = &$body->getClassConstruct(); $methodName = $body->methodName; $args = $body->getValue(); $output = Executive::doMethodCall($body, &$classConstruct, $methodName, $args); if($output !== "__amfphp_error") { $body->setResults($output); } } function serializationAction(& $body) { //Take the raw response $rawResponse = & $body->getResults(); adapterMap($rawResponse); //Now serialize it $encodedResponse = json_encode($rawResponse); if(count(NetDebug::getTraceStack()) > 0) { $trace = "/*" . implode("\n", NetDebug::getTraceStack()) . "*/"; $encodedResponse = $trace . "\n" . $encodedResponse; } $body->setResults($encodedResponse); } if(!function_exists("json_encode")) { include_once(AMFPHP_BASE . "shared/util/JSON.php"); function json_encode($val) { $json = new Services_JSON(); return $json->encode($val); } function json_decode($val, $asAssoc = FALSE) { if($asAssoc) { $json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE); } else { $json = new Services_JSON(); } return $json->decode($val); } } ?>