Same name and namespace in other branches
  1. 4.6.x modules/menu.module \menu_parent_options()
  2. 4.7.x modules/menu.module \menu_parent_options()
  3. 5.x modules/menu/menu.module \menu_parent_options()
  4. 7.x modules/menu/menu.module \menu_parent_options()

Return a list of menu items that are valid possible parents for the given menu item.

Parameters

$menus: An array of menu names and titles, such as from menu_get_menus().

$item: The menu item for which to generate a list of parents. If $item['mlid'] == 0 then the complete tree is returned.

Return value

An array of menu link titles keyed on the a string containing the menu name and mlid. The list excludes the given item and its children.

2 calls to menu_parent_options()
menu_edit_item in modules/menu/menu.admin.inc
Menu callback; Build the menu link editing form.
menu_form_alter in modules/menu/menu.module
Implementation of hook_form_alter(). Adds menu item fields to the node form.

File

modules/menu/menu.module, line 208
Allows administrators to customize the site navigation menu.

Code

function menu_parent_options($menus, $item) {

  // The menu_links table can be practically any size and we need a way to
  // allow contrib modules to provide more scalable pattern choosers.
  // hook_form_alter is too late in itself because all the possible parents are
  // retrieved here, unless menu_override_parent_selector is set to TRUE.
  if (variable_get('menu_override_parent_selector', FALSE)) {
    return array();
  }

  // If the item has children, there is an added limit to the depth of valid parents.
  if (isset($item['parent_depth_limit'])) {
    $limit = $item['parent_depth_limit'];
  }
  else {
    $limit = _menu_parent_depth_limit($item);
  }
  foreach ($menus as $menu_name => $title) {
    $tree = menu_tree_all_data($menu_name, NULL);
    $options[$menu_name . ':0'] = '<' . $title . '>';
    _menu_parents_recurse($tree, $menu_name, '--', $options, $item['mlid'], $limit);
  }
  return $options;
}