git://git.onelab.eu
/
plcapi.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a7d8cdb
)
fix backwards compatibility in xmlrpc_wrappers.inc
author
gggeek
<giunta.gaetano@gmail.com>
Sat, 30 May 2015 13:46:12 +0000
(15:46 +0200)
committer
gggeek
<giunta.gaetano@gmail.com>
Sat, 30 May 2015 13:46:12 +0000
(15:46 +0200)
lib/xmlrpc_wrappers.inc
patch
|
blob
|
history
diff --git
a/lib/xmlrpc_wrappers.inc
b/lib/xmlrpc_wrappers.inc
index
021b1ce
..
3c2390a
100644
(file)
--- a/
lib/xmlrpc_wrappers.inc
+++ b/
lib/xmlrpc_wrappers.inc
@@
-34,7
+34,6
@@
function xmlrpc_2_php_type($xmlrpcType)
return $wrapper->xmlrpc2PhpType($xmlrpcType);
}
return $wrapper->xmlrpc2PhpType($xmlrpcType);
}
-/// @todo backwards compat: return string instead of callable
/**
* @see PhpXmlRpc\Wrapper::wrap_php_function
* @param callable $funcName
/**
* @see PhpXmlRpc\Wrapper::wrap_php_function
* @param callable $funcName
@@
-45,11
+44,21
@@
function xmlrpc_2_php_type($xmlrpcType)
function wrap_php_function($funcName, $newFuncName='', $extraOptions=array())
{
$wrapper = new PhpXmlRpc\Wrapper();
function wrap_php_function($funcName, $newFuncName='', $extraOptions=array())
{
$wrapper = new PhpXmlRpc\Wrapper();
- return $wrapper->wrapPhpFunction($funcName, $newFuncName, $extraOptions);
+ if (!isset($extraOptions['return_source']) || $extraOptions['return_source'] == false) {
+ // backwards compat: return string instead of callable
+ $extraOptions['return_source'] = true;
+ $wrapped = $wrapper->wrapPhpFunction($funcName, $newFuncName, $extraOptions);
+ eval($wrapped['source']);
+ } else {
+ $wrapped = $wrapper->wrapPhpFunction($funcName, $newFuncName, $extraOptions);
+ }
+ return $wrapped;
}
}
-/// @todo backwards compat: return strings instead of callables
/**
/**
+ * NB: this function returns an array in a format which is unsuitable for direct use in the server dispatch map, unlike
+ * PhpXmlRpc\Wrapper::wrapPhpClass. This behaviour might seem like a bug, but has been kept for backwards compatibility.
+ *
* @see PhpXmlRpc\Wrapper::wrap_php_class
* @param string|object $className
* @param array $extraOptions
* @see PhpXmlRpc\Wrapper::wrap_php_class
* @param string|object $className
* @param array $extraOptions
@@
-58,10
+67,22
@@
function wrap_php_function($funcName, $newFuncName='', $extraOptions=array())
function wrap_php_class($className, $extraOptions=array())
{
$wrapper = new PhpXmlRpc\Wrapper();
function wrap_php_class($className, $extraOptions=array())
{
$wrapper = new PhpXmlRpc\Wrapper();
- return $wrapper->wrapPhpClass($className, $extraOptions);
+ $fix = false;
+ if (!isset($extraOptions['return_source']) || $extraOptions['return_source'] == false) {
+ // backwards compat: return string instead of callable
+ $extraOptions['return_source'] = true;
+ $fix = true;
+ }
+ $wrapped = $wrapper->wrapPhpClass($className, $extraOptions);
+ foreach($wrapped as $name => $value) {
+ if ($fix) {
+ eval($value['source']);
+ }
+ $wrapped[$name] = $value['function'];
+ }
+ return $wrapped;
}
}
-/// @todo backwards compat: return string instead of callable
/**
* @see PhpXmlRpc\Wrapper::wrapXmlrpcMethod
* @param xmlrpc_client $client
/**
* @see PhpXmlRpc\Wrapper::wrapXmlrpcMethod
* @param xmlrpc_client $client
@@
-86,10
+107,19
@@
function wrap_xmlrpc_method($client, $methodName, $extraOptions=0, $timeout=0, $
}
$wrapper = new PhpXmlRpc\Wrapper();
}
$wrapper = new PhpXmlRpc\Wrapper();
- return $wrapper->wrapXmlrpcMethod($client, $methodName, $extraOptions);
+
+ if (!isset($extraOptions['return_source']) || $extraOptions['return_source'] == false) {
+ // backwards compat: return string instead of callable
+ $extraOptions['return_source'] = true;
+ $wrapped = $wrapper->wrapXmlrpcMethod($client, $methodName, $extraOptions);
+ eval($wrapped['source']);
+ $wrapped = $wrapped['function'];
+ } else {
+ $wrapped = $wrapper->wrapXmlrpcMethod($client, $methodName, $extraOptions);
+ }
+ return $wrapped;
}
}
-/// @todo backwards compat: return strings instead of callables
/**
* @see PhpXmlRpc\Wrapper::wrap_xmlrpc_server
* @param xmlrpc_client $client
/**
* @see PhpXmlRpc\Wrapper::wrap_xmlrpc_server
* @param xmlrpc_client $client
@@
-102,7
+132,6
@@
function wrap_xmlrpc_server($client, $extraOptions=array())
return $wrapper->wrapXmlrpcServer($client, $extraOptions);
}
return $wrapper->wrapXmlrpcServer($client, $extraOptions);
}
-/// @todo fix dangling usage of $this->
/**
* Given the necessary info, build php code that creates a new function to invoke a remote xmlrpc method.
* Take care that no full checking of input parameters is done to ensure that valid php code is emitted.
/**
* Given the necessary info, build php code that creates a new function to invoke a remote xmlrpc method.
* Take care that no full checking of input parameters is done to ensure that valid php code is emitted.
@@
-211,4
+240,4
@@
function build_client_wrapper_code($client, $verbatim_client_copy, $prefix='xmlr
$code .= "\$client->return_type = '{$prefix}vals';\n";
//$code .= "\$client->setDebug(\$debug);\n";
return $code;
$code .= "\$client->return_type = '{$prefix}vals';\n";
//$code .= "\$client->setDebug(\$debug);\n";
return $code;
-}
\ No newline at end of file
+}