menu_get_item
- 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
Code
includes/menu.inc, line 385
<?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);
$parts = array_slice($original_map, 0, MENU_MAX_PARTS);
$ancestors = menu_get_ancestors($parts);
$router_item = db_select('menu_router')
->fields('menu_router')
->condition('path', $ancestors, 'IN')
->orderBy('fit', 'DESC')
->range(0, 1)
->addTag('menu_get_item')
->execute()->fetchAssoc();
if ($router_item) {
$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];
}
?>Login or register to post comments 