function _menu_find_router_path
Same name and namespace in other branches
- 6.x drupal-6.x/includes/menu.inc \_menu_find_router_path()
Finds the router path which will serve this path.
Parameters
$link_path: The path for we are looking up its router path.
Return value
A path from $menu keys or empty if $link_path points to a nonexisting place.
Related topics
2 calls to _menu_find_router_path()
- menu_link_save in drupal-7.x/
includes/ menu.inc - Saves a menu link.
- _menu_navigation_links_rebuild in drupal-7.x/
includes/ menu.inc - Builds menu links for the items in the menu router.
Archivo
- drupal-7.x/
includes/ menu.inc, line 3339 - API for the Drupal menu system.
Código
function _menu_find_router_path($link_path) {
// $menu will only have data during a menu rebuild.
$menu = _menu_router_cache();
$router_path = $link_path;
$parts = explode('/', $link_path, MENU_MAX_PARTS);
$ancestors = menu_get_ancestors($parts);
if (empty($menu)) {
// Not during a menu rebuild, so look up in the database.
$router_path = (string) db_select('menu_router')->fields('menu_router', array('path'))->condition('path', $ancestors, 'IN')->orderBy('fit', 'DESC')->range(0, 1)->execute()->fetchField();
}
elseif (!isset($menu[$router_path])) {
// Add an empty router path as a fallback.
$ancestors[] = '';
foreach ($ancestors as $key => $router_path) {
if (isset($menu[$router_path])) {
// Exit the loop leaving $router_path as the first match.
break;
}
}
// If we did not find the path, $router_path will be the empty string
// at the end of $ancestors.
}
return $router_path;
}