_menu_update_parental_status

  1. drupal
    1. 6
    2. 8
    3. 7
Versions
6 – 8 _menu_update_parental_status($item, $exclude = FALSE)

Check and update the has_children status for the parent of a link.

Related topics

▾ 3 functions call _menu_update_parental_status()

menu_link_save in includes/menu.inc
Saves a menu link.
_menu_delete_item in includes/menu.inc
Helper function for menu_link_delete; deletes a single menu link.
_menu_link_move_children in includes/menu.inc
Update the children of a menu link that's being moved.

Code

includes/menu.inc, line 3434

<?php
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();
  }
}
?>