Same name and namespace in other branches
  1. 4.6.x includes/module.inc \module_invoke_all()
  2. 4.7.x includes/module.inc \module_invoke_all()
  3. 6.x includes/module.inc \module_invoke_all()
  4. 7.x includes/module.inc \module_invoke_all()

Invoke a hook in all enabled modules that implement it.

Parameters

$hook: The name of the hook to invoke.

...: Arguments to pass to the hook.

Return value

An array of return values of the hook implementations. If modules return arrays from their implementations, those are merged into one array.

Related topics

32 calls to module_invoke_all()
comment_render in modules/comment/comment.module
Renders comment(s).
drupal_goto in includes/common.inc
Send the user to a different Drupal page.
drupal_page_footer in includes/common.inc
Perform end-of-request tasks.
drupal_retrieve_form in includes/form.inc
Retrieves the structured array that defines a given form.
file_download in includes/file.inc
Call modules that implement hook_file_download() to find out if a file is accessible and what headers it should be transferred with. If a module returns -1 drupal_access_denied() will be returned. If one or more modules returned headers the download…

... See full list

File

includes/module.inc, line 399
API for loading and interacting with Drupal modules.

Code

function module_invoke_all() {
  $args = func_get_args();
  $hook = array_shift($args);
  $return = array();
  foreach (module_implements($hook) as $module) {
    $function = $module . '_' . $hook;
    $result = call_user_func_array($function, $args);
    if (isset($result) && is_array($result)) {
      $return = array_merge($return, $result);
    }
    else {
      if (isset($result)) {
        $return[] = $result;
      }
    }
  }
  return $return;
}