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