function 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

hook_hook_info()

Related topics

2 calls to module_hook_info()
module_hook in includes/module.inc
Determines whether a module implements a hook.
module_implements in includes/module.inc
Determines which modules are implementing a hook.
1 string reference to 'module_hook_info'
module_implements in includes/module.inc
Determines which modules are implementing a hook.

File

includes/module.inc, line 851

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 (drupal_bootstrap(NULL, FALSE) != DRUPAL_BOOTSTRAP_FULL) {
        return array();
    }
    $hook_info =& drupal_static(__FUNCTION__);
    if (!isset($hook_info)) {
        $hook_info = array();
        $cache = cache_get('hook_info', 'cache_bootstrap');
        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 drupal_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_set('hook_info', $hook_info, 'cache_bootstrap');
        }
        else {
            $hook_info = $cache->data;
        }
    }
    return $hook_info;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.