function _menu_update_parental_status in Drupal 7
Same name and namespace in other branches
- 6 includes/menu.inc \_menu_update_parental_status()
Checks and updates the 'has_children' status for the parent of a link.
Related topics
3 calls to _menu_update_parental_status()
- menu_link_save in includes/
menu.inc - Saves a menu link.
- _menu_delete_item in includes/
menu.inc - Deletes a single menu link.
- _menu_link_move_children in includes/
menu.inc - Updates the children of a menu link that is being moved.
File
- includes/
menu.inc, line 3582 - API for the Drupal menu system.
Code
function _menu_update_parental_status($item, $exclude = FALSE) {
// If plid == 0, there is nothing to update.
if ($item['plid']) {
// Check if at least one visible child exists in the table.
$query = db_select('menu_links');
$query
->addField('menu_links', 'mlid');
$query
->condition('menu_name', $item['menu_name']);
$query
->condition('hidden', 0);
$query
->condition('plid', $item['plid']);
$query
->range(0, 1);
if ($exclude) {
$query
->condition('mlid', $item['mlid'], '<>');
}
$parent_has_children = (bool) $query
->execute()
->fetchField() ? 1 : 0;
db_update('menu_links')
->fields(array(
'has_children' => $parent_has_children,
))
->condition('mlid', $item['plid'])
->execute();
}
}