function _admin_menu_get_children in Administration menu 5.2
Same name and namespace in other branches
- 5.3 admin_menu.inc \_admin_menu_get_children()
- 5 admin_menu.inc \_admin_menu_get_children()
Recursively adds items to the administration menu.
Any accessible menu items are added, including local tasks.
Parameters
array $_admin_menu: An array containing the complete administration menu structure, passed by reference.
array $item: The (starting) menu item to use for the administration menu.
1 call to _admin_menu_get_children()
- admin_menu_build in ./
admin_menu.inc - Build the administration menu tree.
File
- ./
admin_menu.inc, line 67 - Cached builder functions for Drupal Administration Menu.
Code
function _admin_menu_get_children(&$_admin_menu, &$item) {
global $_menu;
if (isset($item['children'])) {
foreach ($item['children'] as $child) {
// Check access permissions.
if (!variable_get('admin_menu_show_all', 0)) {
$item_is_accessible = !isset($_menu['items'][$child]['access']) || isset($_menu['items'][$child]['access']) && $_menu['items'][$child]['access'];
}
else {
$item_is_accessible = TRUE;
}
// Check menu item type.
$item_is_visible = $_menu['items'][$child]['type'] & (MENU_VISIBLE_IN_TREE | MENU_IS_LOCAL_TASK);
// Create the child item if it is accessible and visible.
// Additional condition to hide items linking to parent:
// && !($_menu['items'][$child]['type'] & MENU_LINKS_TO_PARENT)
if ($item_is_accessible && $item_is_visible) {
$_admin_menu[$child] = $_menu['items'][$child];
admin_menu_item_url($_admin_menu, $child);
// Recurse to child menu items.
if (isset($_menu['items'][$child]['children'])) {
_admin_menu_get_children($_admin_menu, $_admin_menu[$child]);
}
// Remove this child item if it is visible in the navigation.
unset($_menu['visible'][$child]);
}
else {
// Remove child menu item from parent's children list.
$parent_id = $_menu['items'][$child]['pid'];
if (isset($_menu['items'][$parent_id]['children']) && is_array($_menu['items'][$parent_id]['children'])) {
$child_key = array_search($child, $_menu['items'][$parent_id]['children']);
if ($child_key !== FALSE) {
unset($_admin_menu[$parent_id]['children'][$child_key]);
}
}
}
}
}
}