You are here

function module_implements in Drupal 4

Same name and namespace in other branches
  1. 5 includes/module.inc \module_implements()
  2. 6 includes/module.inc \module_implements()
  3. 7 includes/module.inc \module_implements()

Determine which modules are implementing a hook.

Parameters

$hook: The name of the hook (e.g. "help" or "menu").

$sort: By default, modules are ordered by weight and filename, settings this option to TRUE, module list will be ordered by module name.

Return value

An array with the names of the modules which are implementing this hook.

Related topics

10 calls to module_implements()
comment_invoke_comment in modules/comment.module
Invoke a hook_comment() operation in all modules.
drupal_get_form in includes/form.inc
Processes a form array and produces the HTML output of a form. If there is input in the $_POST['edit'] variable, this function will attempt to validate it, using drupal_validate_form(), and then submit the form using drupal_submit_form().
help_links_as_list in modules/help.module
help_menu in modules/help.module
Implementation of hook_menu().
module_invoke_all in includes/module.inc
Invoke a hook in all enabled modules that implement it.

... See full list

File

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

Code

function module_implements($hook, $sort = FALSE) {
  static $implementations;
  if (!isset($implementations[$hook])) {
    $implementations[$hook] = array();
    $list = module_list(FALSE, TRUE, $sort);
    foreach ($list as $module) {
      if (module_hook($module, $hook)) {
        $implementations[$hook][] = $module;
      }
    }
  }

  // The explicit cast forces a copy to be made.  This is needed because
  // $implementations[$hook] is only a reference to an element of
  // $implementations and if there are nested foreaches (due to nested node
  // API calls, for example), they would both manipulate the same array's
  // references, which causes some modules' hooks not to be called.
  // See also http://www.zend.com/zend/art/ref-count.php.
  return (array) $implementations[$hook];
}