menu_get_item

  1. drupal
    1. 4.7 menu.inc
    2. 5 menu.inc
    3. 6
    4. 7
Versions
4.7 – 5 menu_get_item($mid, $path = NULL, $reset = FALSE)
6 – 7 menu_get_item($path = NULL, $router_item = NULL)

Get a router item.

Parameters

$path The path, for example node/5. The function will find the corresponding node/% item and return that.

$router_item Internal use only.

Return value

The router item, an associate array corresponding to one row in the menu_router table. The value of key map holds the loaded objects. The value of key access is TRUE if the current user can access this page. The values for key title, page_arguments, access_arguments, and theme_arguments will be filled in based on the database values and the objects loaded.

Related topics

▾ 29 functions call menu_get_item()

block_page_build in drupal/modules/block/block.module
Implements hook_page_build().
blog_menu_local_tasks_alter in drupal/modules/blog/blog.module
Implements hook_menu_local_tasks_alter().
dashboard_is_visible in drupal/modules/dashboard/dashboard.module
Determines if the dashboard should be displayed on the current page.
drupal_deliver_page in drupal/includes/common.inc
Delivers a page callback result to the browser in the appropriate format.
drupal_retrieve_form in drupal/includes/form.inc
Retrieves the structured array that defines a given form.
drupal_valid_path in drupal/includes/path.inc
Checks a path exists and the current user has access to it.
menu_contextual_links in drupal/includes/menu.inc
Retrieve contextual links for a system object based on registered local tasks.
menu_execute_active_handler in drupal/includes/menu.inc
Execute the page callback associated with the current path.
menu_get_active_breadcrumb in drupal/includes/menu.inc
Get the breadcrumb for the current page, as determined by the active trail.
menu_get_custom_theme in drupal/includes/menu.inc
Gets the custom theme for the current page, if there is one.
menu_get_object in drupal/includes/menu.inc
Get a loaded object from a router item.
menu_link_get_preferred in drupal/includes/menu.inc
Lookup the preferred menu link for a given system path.
menu_local_tasks in drupal/includes/menu.inc
Collects the local tasks (tabs), action links, and the root path.
menu_navigation_links in drupal/includes/menu.inc
Return an array of links for a navigation menu.
menu_set_active_trail in drupal/includes/menu.inc
Sets or gets the active trail (path to menu tree root) of the current page.
menu_set_item in drupal/includes/menu.inc
Replaces the statically cached item for a given path.
menu_tree_output in drupal/includes/menu.inc
Returns a rendered menu tree.
menu_tree_page_data in drupal/includes/menu.inc
Get the data structure representing a named menu tree, based on the current page.
node_add_page in drupal/modules/node/node.pages.inc
node_menu_local_tasks_alter in drupal/modules/node/node.module
Implements hook_menu_local_tasks_alter().
shortcut_link_add_inline in drupal/modules/shortcut/shortcut.admin.inc
Menu page callback: creates a new link in the provided shortcut set.
shortcut_valid_link in drupal/modules/shortcut/shortcut.module
Determines if a path corresponds to a valid shortcut link.
system_admin_menu_block in drupal/modules/system/system.module
Provide a single block on the administration overview page.
system_admin_menu_block_page in drupal/modules/system/system.admin.inc
Provide a single block from the administration menu as a page. This function is often a destination for these blocks. For example, 'admin/structure/types' needs to have a destination to be valid in the Drupal menu system, but too much…
system_get_module_admin_tasks in drupal/modules/system/system.module
Generate a list of tasks offered by a specified module.
system_modules in drupal/modules/system/system.admin.inc
Menu callback; provides module enable/disable interface.
system_settings_overview in drupal/modules/system/system.admin.inc
Menu callback; displays a module's settings page.
system_test_page_build in drupal/modules/simpletest/tests/system_test.module
Implements hook_page_build().
_menu_link_translate in drupal/includes/menu.inc
This function is similar to _menu_translate() but does link-specific preparation such as always calling to_arg functions

Code

drupal/includes/menu.inc, line 423

<?php
function menu_get_item($path = NULL, $router_item = NULL) {
  $router_items = &drupal_static(__FUNCTION__);
  if (!isset($path)) {
    $path = $_GET['q'];
  }
  if (isset($router_item)) {
    $router_items[$path] = $router_item;
  }
  if (!isset($router_items[$path])) {
    $original_map = arg(NULL, $path);

    // Since there is no limit to the length of $path, use a hash to keep it
    // short yet unique.
    $cid = 'menu_item:' . hash('sha256', $path);
    if ($cached = cache_get($cid, 'cache_menu')) {
      $router_item = $cached->data;
    }
    else {
      $parts = array_slice($original_map, 0, MENU_MAX_PARTS);
      $ancestors = menu_get_ancestors($parts);
      $router_item = db_query_range('SELECT * FROM {menu_router} WHERE path IN (:ancestors) ORDER BY fit DESC', 0, 1, array(':ancestors' => $ancestors))->fetchAssoc();
      cache_set($cid, $router_item, 'cache_menu');
    }
    if ($router_item) {
      // Allow modules to alter the router item before it is translated and
      // checked for access.
      drupal_alter('menu_get_item', $router_item, $path, $original_map);

      $map = _menu_translate($router_item, $original_map);
      $router_item['original_map'] = $original_map;
      if ($map === FALSE) {
        $router_items[$path] = FALSE;
        return FALSE;
      }
      if ($router_item['access']) {
        $router_item['map'] = $map;
        $router_item['page_arguments'] = array_merge(menu_unserialize($router_item['page_arguments'], $map), array_slice($map, $router_item['number_parts']));
        $router_item['theme_arguments'] = array_merge(menu_unserialize($router_item['theme_arguments'], $map), array_slice($map, $router_item['number_parts']));
      }
    }
    $router_items[$path] = $router_item;
  }
  return $router_items[$path];
}
?>