aboutsummaryrefslogtreecommitdiff
path: root/engine/lib/web_services.php
diff options
context:
space:
mode:
authorSteve Clay <steve@mrclay.org>2012-09-17 17:41:15 -0400
committerSteve Clay <steve@mrclay.org>2012-11-14 21:09:42 -0500
commit3048db0f3f1ade31d6f3a2cdd3268e978a3e3cf3 (patch)
tree1c21fd8f55bebeeedf4790aaa0e5e2f76e3a93eb /engine/lib/web_services.php
parent7c6e3578ca8ab3e703852629e82b478265833d29 (diff)
downloadelgg-3048db0f3f1ade31d6f3a2cdd3268e978a3e3cf3.tar.gz
elgg-3048db0f3f1ade31d6f3a2cdd3268e978a3e3cf3.tar.bz2
Fixes #4861: allow lazy-loading for static method callbacks, allow more callables
Diffstat (limited to 'engine/lib/web_services.php')
-rw-r--r--engine/lib/web_services.php9
1 files changed, 4 insertions, 5 deletions
diff --git a/engine/lib/web_services.php b/engine/lib/web_services.php
index da3ed76a9..39fb0dc44 100644
--- a/engine/lib/web_services.php
+++ b/engine/lib/web_services.php
@@ -232,6 +232,7 @@ function execute_method($method) {
$function = $API_METHODS[$method]["function"];
$serialised_parameters = trim($serialised_parameters, ", ");
+ // @todo document why we cannot use call_user_func_array here
$result = eval("return $function($serialised_parameters);");
// Sanity check result
@@ -1278,11 +1279,9 @@ function service_handler($handler, $request) {
// no handlers set or bad url
header("HTTP/1.0 404 Not Found");
exit;
- } else if (isset($CONFIG->servicehandler[$handler])
- && is_callable($CONFIG->servicehandler[$handler])) {
-
+ } else if (isset($CONFIG->servicehandler[$handler]) && is_callable($CONFIG->servicehandler[$handler])) {
$function = $CONFIG->servicehandler[$handler];
- $function($request, $handler);
+ call_user_func($function, $request, $handler);
} else {
// no handler for this web service
header("HTTP/1.0 404 Not Found");
@@ -1304,7 +1303,7 @@ function register_service_handler($handler, $function) {
if (!isset($CONFIG->servicehandler)) {
$CONFIG->servicehandler = array();
}
- if (is_callable($function)) {
+ if (is_callable($function, true)) {
$CONFIG->servicehandler[$handler] = $function;
return true;
}