diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchConfigSettingsFormTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchConfigSettingsFormTest.php index e985e3d..0725f76 100644 --- a/core/modules/search/lib/Drupal/search/Tests/SearchConfigSettingsFormTest.php +++ b/core/modules/search/lib/Drupal/search/Tests/SearchConfigSettingsFormTest.php @@ -206,6 +206,8 @@ function testSearchModuleDisabling() { foreach (entity_load_multiple('search') as $search) { $search->enable()->save(); } + $this->container->get('state')->set('menu_rebuild_needed', TRUE); + $edit = array('default_plugin' => 'node_search'); $this->drupalPost('admin/config/search/settings', $edit, t('Save configuration')); diff --git a/core/modules/search/search.module b/core/modules/search/search.module index 2e46655..9cebe6b 100644 --- a/core/modules/search/search.module +++ b/core/modules/search/search.module @@ -186,13 +186,13 @@ function search_menu() { $default_info = search_get_default_module_info(); if ($default_info) { $active_plugins = search_get_active_search_plugins(); - foreach ($active_plugins as $search_plugin) { + foreach ($active_plugins as $search_id => $search_plugin) { $search_info = $search_plugin->getPluginDefinition(); $path = 'search/' . $search_info['path']; $items[$path] = array( 'title' => $search_info['title'], 'page callback' => 'search_view', - 'page arguments' => array($search_info['id'], ''), + 'page arguments' => array($search_id, ''), 'access callback' => '_search_menu_access', 'access arguments' => array($search_info['module']), 'type' => MENU_LOCAL_TASK, @@ -203,7 +203,7 @@ function search_menu() { 'title' => $search_info['title'], 'load arguments' => array('%map', '%index'), 'page callback' => 'search_view', - 'page arguments' => array($search_info['id'], 2), + 'page arguments' => array($search_id, 2), 'access callback' => '_search_menu_access', 'access arguments' => array($search_info['module']), // The default local task points to its parent, but this item points to @@ -236,16 +236,17 @@ function search_is_active() { * The search plugin definition for the default search module, if any. */ function search_get_default_module_info() { - $manager = Drupal::service('plugin.manager.search'); $default = config('search.settings')->get('default_plugin'); - if ($definition = $manager->getDefinition($default)) { - return $definition; + if (!$default || !$entity = entity_load('search', $default)) { + // The variable setting does not match any active plugin, so just return + // the info for the first active plugin (if any). + $id = Drupal::entityQuery('search') + ->condition('status', 1) + ->count(1) + ->execute(); + $entity = entity_load('search', $id); } - - $definitions = $manager->getDefinitions(); - // The variable setting does not match any active plugin, so just return - // the info for the first active plugin (if any). - return reset($definitions); + return $entity->getPluginDefinition(); } /**