diff --git a/modules/menu/menu.install b/modules/menu/menu.install index 05aed28..717c5e7 100644 --- a/modules/menu/menu.install +++ b/modules/menu/menu.install @@ -69,3 +69,46 @@ function menu_uninstall() { menu_rebuild(); } +/** + * @defgroup updates-7.x-extra Extra updates for 7.x + * @{ + */ + +/** + * Migrate the "Default menu for content" setting to individual node types. + */ +function menu_update_7000() { + // Act only on sites originally on Drupal 6 that have a custom "Default menu + // for content" setting. + $default_node_menu = variable_get('menu_default_node_menu'); + if (isset($default_node_menu)) { + // Remove variable no longer used in Drupal 7. + variable_del('menu_default_node_menu'); + + // Make sure the menu chosen as the default still exists. + $defined_menus = db_query('SELECT * FROM {menu_custom}')->fetchAllAssoc('menu_name', PDO::FETCH_ASSOC); + // If the menu does not exist, do nothing; nodes will use the default D7 + // node menu settings. + if (!isset($defined_menus[$default_node_menu])) { + return; + } + + // Update the menu settings for each node type. + foreach (_update_7000_node_get_types() as $type => $type_object) { + $type_menus = variable_get('menu_options_' . $type); + // If the site already has a custom menu setting for this node type (set + // on the initial upgrade to Drupal 7.0), don't override it. + if (!isset($type_menus)) { + // Set up this node type so that the Drupal 6 "Default menu for content" + // is still available in the "Menu settings" section. + variable_set('menu_options_' . $type, array($default_node_menu)); + variable_set('menu_parent_' . $type, $default_node_menu . ':0'); + } + } + } +} + +/** + * @} End of "defgroup updates-7.x-extra" + * The next series of updates should start at 8000. + */