1 module.inc | module_hook_info() |
Retrieves a list of hooks that are declared through hook_hook_info().
Return value
An associative array whose keys are hook names and whose values are an: associative array containing a group name. The structure of the array is the same as the return value of hook_hook_info().
See also
Related topics
File
- core/
includes/ module.inc, line 857 - API for loading and interacting with Backdrop modules.
Code
function module_hook_info() {
// This function is indirectly invoked from bootstrap_invoke_all(), in which
// case common.inc, subsystems, and modules are not loaded yet, so it does not
// make sense to support hook groups resp. lazy-loaded include files prior to
// full bootstrap.
if (backdrop_bootstrap(NULL, FALSE) != BACKDROP_BOOTSTRAP_FULL) {
return array();
}
$hook_info = &backdrop_static(__FUNCTION__);
if (!isset($hook_info)) {
$hook_info = array();
$cache = cache('bootstrap')->get('hook_info');
if ($cache === FALSE) {
// Rebuild the cache and save it.
// We can't use module_invoke_all() here or it would cause an infinite
// loop.
foreach (module_list() as $module) {
$function = $module . '_hook_info';
if (function_exists($function)) {
$result = $function();
if (isset($result) && is_array($result)) {
$hook_info = array_merge_recursive($hook_info, $result);
}
}
}
// We can't use backdrop_alter() for the same reason as above.
foreach (module_list() as $module) {
$function = $module . '_hook_info_alter';
if (function_exists($function)) {
$function($hook_info);
}
}
cache('bootstrap')->set('hook_info', $hook_info);
}
else {
$hook_info = $cache->data;
}
}
return $hook_info;
}