function _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

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

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.