Skip to content
Snippets Groups Projects
Commit a1e08d93 authored by Dries Buytaert's avatar Dries Buytaert
Browse files

- Patch #656266 by fgm: fixed the hook and added documentation.

parent ab6f592c
No related branches found
No related tags found
2 merge requests!7452Issue #1797438. HTML5 validation is preventing form submit and not fully...,!789Issue #3210310: Adjust Database API to remove deprecated Drupal 9 code in Drupal 10
...@@ -1128,6 +1128,44 @@ function hook_xmlrpc() { ...@@ -1128,6 +1128,44 @@ function hook_xmlrpc() {
); );
} }
/**
* Alter the definition of XML-RPC methods before they are called.
*
* This hook lets at module modify the callback definition for already
* declared XML-RPC methods, when they are being invoked by a client.
*
* This hook is invoked by xmlrpc.php. The method definitions are
* passed in by reference. Each element of the $methods array is one
* callback definition returned by a module from hook_xmlrpc. Additional
* methods may be added, or existing items altered.
*
* Modules implementing this hook must take care of the fact that
* hook_xmlrpc allows two distinct and incompatible formats for callback
* definition, so module must be prepared to handle either format for
* each callback being altered.
*
* @see hook_xmlrpc()
*
* @param $methods
* Associative array of method callback definitions returned from
* hook_xmlrpc.
*/
function hook_xmlrpc_alter(&$methods) {
// Direct update for methods defined the simple way
$methods['drupal.login'] = 'mymodule_login';
// Lookup update for methods defined the complex way
foreach ($methods as $key => &$method) {
if (!is_int($key)) {
continue;
}
if ($method[0] == 'drupal.site.ping') {
$method[1] = 'mymodule_directory_ping';
}
}
}
/** /**
* Log an event message * Log an event message
* *
......
...@@ -17,5 +17,5 @@ ...@@ -17,5 +17,5 @@
include_once DRUPAL_ROOT . '/includes/xmlrpcs.inc'; include_once DRUPAL_ROOT . '/includes/xmlrpcs.inc';
$services = module_invoke_all('xmlrpc'); $services = module_invoke_all('xmlrpc');
drupal_alter('xmlrpc_alter', $services); drupal_alter('xmlrpc', $services);
xmlrpc_server($services); xmlrpc_server($services);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment