module_implements

5 module.inc module_implements($hook, $sort = FALSE, $refresh = FALSE)
6 module.inc module_implements($hook, $sort = FALSE, $refresh = FALSE)
7 module.inc module_implements($hook, $sort = FALSE, $reset = FALSE)
8 module.inc module_implements($hook, $sort = FALSE)

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()

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];
}
Login or register to post comments