rebuild(); menu_router_rebuild(); $system_link = entity_load_multiple_by_properties('menu_link', array('link_path' => 'admin/structure/menu', 'module' => 'system')); $system_link = reset($system_link); $base_link = entity_create('menu_link', array( 'menu_name' => $system_link->menu_name, 'router_path' => 'admin/structure/menu/manage/%', 'module' => 'menu', )); $menus = entity_load_multiple('menu'); foreach ($menus as $menu) { $link = $base_link->createDuplicate(); $link->plid = $system_link->id(); $link->link_title = $menu->label(); $link->link_path = 'admin/structure/menu/manage/' . $menu->id(); $query = \Drupal::entityQuery('menu_link') ->condition('link_path', $link->link_path) ->condition('plid', $link->plid); $result = $query->execute(); if (empty($result)) { $link->save(); } } menu_cache_clear_all(); if (\Drupal::moduleHandler()->moduleExists('node')) { $node_types = array_keys(node_type_get_names()); foreach ($node_types as $type_id) { \Drupal::config('menu.entity.node.' . $type_id) ->set('available_menus', array('main')) ->set('parent', 'main:0') ->save(); } } } /** * Implements hook_uninstall(). */ function menu_uninstall() { menu_router_rebuild(); } /** * Moves menu settings from variables to config. * * @ingroup config_upgrade */ function menu_update_8000() { update_variables_to_config('menu.settings', array( 'menu_main_links_source' => 'main_links', 'menu_secondary_links_source' => 'secondary_links', )); } /** * Rename default menu names. */ function menu_update_8001() { // Only the internal identifiers are updated; the labels and descriptions // might have been customized and do not have to be renamed. $map = array( 'navigation' => 'tools', 'management' => 'admin', 'user-menu' => 'account', 'main-menu' => 'main', ); foreach ($map as $old => $new) { db_update('menu_custom') ->condition('menu_name', $old) ->fields(array('menu_name' => $new)) ->execute(); } } /** * Adds the footer menu to custom menus. */ function menu_update_8002() { db_insert('menu_custom') ->fields(array( 'menu_name' => 'footer', 'title' => 'Footer menu', 'description' => 'Use this for linking to site information.', )) ->execute(); } /** * Moves menu_override_parent_selector from variables to config. * * @ingroup config_upgrade */ function menu_update_8003() { update_variables_to_config('menu.settings', array( 'menu_override_parent_selector' => 'override_parent_selector', )); } /** * Migrate menus into configuration. * * @ingroup config_upgrade */ function menu_update_8004() { $uuid = \Drupal::service('uuid'); $result = db_query('SELECT * FROM {menu_custom}'); foreach ($result as $menu) { // Save the config object. \Drupal::config('system.menu.' . $menu->menu_name) ->set('id', $menu->menu_name) ->set('uuid', $uuid->generate()) ->set('label', $menu->title) ->set('description', $menu->description) ->save(); } } /** * Ensure menu settings exist for all node types. * * @ingroup config_upgrade */ function menu_update_8005() { if (\Drupal::moduleHandler()->moduleExists('node')) { $node_types = array_keys(node_type_get_names()); foreach ($node_types as $type_id) { $menu_settings = \Drupal::config("menu.entity.node.$type_id"); if ($menu_settings->isNew()) { $menu_settings ->set('available_menus', array('main')) ->set('parent', 'main:0') ->save(); } } } }