menu_router_build

Definition

menu_router_build($reset = FALSE)
drupal/includes/menu.inc, line 1717

Description

Collect, alter and store the menu definitions.

Related topics

Namesort iconDescription
Menu systemDefine the navigation menus, and route page requests to code based on URLs.

Code

function menu_router_build($reset = FALSE) {
  static $menu;

  if (!isset($menu) || $reset) {
    if (!$reset && ($cache = cache_get('router:', 'cache_menu')) && isset($cache->data)) {
      $menu = $cache->data;
    }
    else {
      // We need to manually call each module so that we can know which module
      // a given item came from.
      $callbacks = array();
      foreach (module_implements('menu', TRUE) as $module) {
        $router_items = call_user_func($module . '_menu');
        if (isset($router_items) && is_array($router_items)) {
          foreach (array_keys($router_items) as $path) {
            $router_items[$path]['module'] = $module;
          }
          $callbacks = array_merge($callbacks, $router_items);
        }
      }
      // Alter the menu as defined in modules, keys are like user/%user.
      drupal_alter('menu', $callbacks);
      $menu = _menu_router_build($callbacks);
    }
  }
  return $menu;
}