1.20.x module.inc module_invoke_all($hook)

Invokes a hook in all enabled modules that implement it.

All arguments are passed by value. Use backdrop_alter() if you need to pass arguments by reference.

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 recursively. Note: integer keys in arrays will be lost, as the merge is done using array_merge_recursive().

See also

backdrop_alter()

Related topics

File

includes/module.inc, line 967
API for loading and interacting with Backdrop modules.

Code

function module_invoke_all($hook) {
  $args = func_get_args();
  // Remove $hook from the arguments.
  unset($args[0]);
  $return = array();
  foreach (module_implements($hook) as $module) {
    $function = $module . '_' . $hook;
    if (function_exists($function)) {
      $result = call_user_func_array($function, $args);
      if (isset($result) && is_array($result)) {
        $return = array_merge_recursive($return, $result);
      }
      elseif (isset($result)) {
        $return[] = $result;
      }
    }
  }

  return $return;
}