function _menu_delete_item in Drupal 7
Same name and namespace in other branches
- 6 includes/menu.inc \_menu_delete_item()
Deletes a single menu link.
Parameters
$item: Item to be deleted.
$force: Forces deletion. Internal use only, setting to TRUE is discouraged.
See also
Related topics
3 calls to _menu_delete_item()
- menu_delete_links in includes/
menu.inc - Deletes all links for a menu.
- menu_link_delete in includes/
menu.inc - Delete one or several menu links.
- _menu_navigation_links_rebuild in includes/
menu.inc - Builds menu links for the items in the menu router.
File
- includes/
menu.inc, line 3097 - API for the Drupal menu system.
Code
function _menu_delete_item($item, $force = FALSE) {
$item = is_object($item) ? get_object_vars($item) : $item;
if ($item && ($item['module'] != 'system' || $item['updated'] || $force)) {
// Children get re-attached to the item's parent.
if ($item['has_children']) {
$result = db_query("SELECT mlid FROM {menu_links} WHERE plid = :plid", array(
':plid' => $item['mlid'],
));
foreach ($result as $m) {
$child = menu_link_load($m->mlid);
$child['plid'] = $item['plid'];
menu_link_save($child);
}
}
// Notify modules we are deleting the item.
module_invoke_all('menu_link_delete', $item);
db_delete('menu_links')
->condition('mlid', $item['mlid'])
->execute();
// Update the has_children status of the parent.
_menu_update_parental_status($item);
menu_cache_clear($item['menu_name']);
_menu_clear_page_cache();
}
}