- Patch #656266 by fgm: fixed the hook and added documentation.
parent
ab6f592cd7
commit
a1e08d9353
|
@ -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
|
||||
*
|
||||
|
|
|
@ -17,5 +17,5 @@ include_once DRUPAL_ROOT . '/includes/xmlrpc.inc';
|
|||
include_once DRUPAL_ROOT . '/includes/xmlrpcs.inc';
|
||||
|
||||
$services = module_invoke_all('xmlrpc');
|
||||
drupal_alter('xmlrpc_alter', $services);
|
||||
drupal_alter('xmlrpc', $services);
|
||||
xmlrpc_server($services);
|
||||
|
|
Loading…
Reference in New Issue