Index: includes/menu.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/menu.inc,v retrieving revision 1.176 diff -u -p -r1.176 menu.inc --- includes/menu.inc 5 Jun 2007 12:13:20 -0000 1.176 +++ includes/menu.inc 5 Jun 2007 23:45:58 -0000 @@ -1227,6 +1227,10 @@ function _menu_navigation_links_rebuild( array_multisort($sort, SORT_NUMERIC, $menu_links); foreach ($menu_links as $item) { + $existing_mlid = db_result(db_query("SELECT mlid FROM {menu_links} WHERE menu_name = '%s' AND link_path = '%s' AND module = 'system'", $menu_name, $item['link_path'])); + if ($existing_mlid) { + $item['mlid'] = $existing_mlid; + } menu_link_save($item); } } @@ -1316,13 +1320,6 @@ function menu_link_save(&$item) { if (isset($item['mlid'])) { $existing_item = db_fetch_array(db_query("SELECT * FROM {menu_links} WHERE mlid = %d", $item['mlid'])); } - else { - $existing_item = db_fetch_array(db_query("SELECT * FROM {menu_links} WHERE menu_name = '%s' AND link_path = '%s'", $menu_name, $item['link_path'])); - } - - if ($existing_item) { - $item['mlid'] = $existing_item['mlid']; - } // Find the parent - it must be in the same menu. if (isset($item['plid'])) { @@ -1343,21 +1340,22 @@ function menu_link_save(&$item) { else { $item['plid'] = $parent['mlid']; } - db_query("INSERT INTO {menu_links} ( - menu_name, plid, link_path, - hidden, external, has_children, - expanded, weight, - module, link_title, options) VALUES ( - '%s', %d, '%s', - %d, %d, %d, - %d, %d, - '%s', '%s', '%s')", - $item['menu_name'], $item['plid'], $item['link_path'], - $item['hidden'], $item['_external'], $item['has_children'], - $item['expanded'], $item['weight'], - $item['module'], $item['link_title'], serialize($item['options'])); - $item['mlid'] = db_last_insert_id('menu_links', 'mlid'); - + if (!$existing_item) { + db_query("INSERT INTO {menu_links} ( + menu_name, plid, link_path, + hidden, external, has_children, + expanded, weight, + module, link_title, options) VALUES ( + '%s', %d, '%s', + %d, %d, %d, + %d, %d, + '%s', '%s', '%s')", + $item['menu_name'], $item['plid'], $item['link_path'], + $item['hidden'], $item['_external'], $item['has_children'], + $item['expanded'], $item['weight'], + $item['module'], $item['link_title'], serialize($item['options'])); + $item['mlid'] = db_last_insert_id('menu_links', 'mlid'); + } if (!$item['plid']) { $item['p1'] = $item['mlid'];