Deletes a single menu link.
$item: Item to be deleted.
$force: Forces deletion. Internal use only, setting to TRUE is discouraged.
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();
}
}