mirror of
https://github.com/moodle/moodle.git
synced 2025-08-06 01:16:44 +02:00
Merge branch 'MDL-63131-master' of https://github.com/sammarshallou/moodle
This commit is contained in:
commit
13b4a1f4bb
2 changed files with 40 additions and 5 deletions
|
@ -221,11 +221,28 @@ class external_api {
|
|||
$params = call_user_func($callable,
|
||||
$externalfunctioninfo->parameters_desc,
|
||||
$args);
|
||||
$params = array_values($params);
|
||||
|
||||
// Execute - gulp!
|
||||
$callable = array($externalfunctioninfo->classname, $externalfunctioninfo->methodname);
|
||||
$result = call_user_func_array($callable,
|
||||
array_values($params));
|
||||
// Allow any Moodle plugin a chance to override this call. This is a convenient spot to
|
||||
// make arbitrary behaviour customisations. The overriding plugin could call the 'real'
|
||||
// function first and then modify the results, or it could do a completely separate
|
||||
// thing.
|
||||
$callbacks = get_plugins_with_function('override_webservice_execution');
|
||||
$result = false;
|
||||
foreach ($callbacks as $plugintype => $plugins) {
|
||||
foreach ($plugins as $plugin => $callback) {
|
||||
$result = $callback($externalfunctioninfo, $params);
|
||||
if ($result !== false) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If the function was not overridden, call the real one.
|
||||
if ($result === false) {
|
||||
$callable = array($externalfunctioninfo->classname, $externalfunctioninfo->methodname);
|
||||
$result = call_user_func_array($callable, $params);
|
||||
}
|
||||
|
||||
// Validate the return parameters.
|
||||
if ($externalfunctioninfo->returns_desc !== null) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue