You are here

function search_api_solr_update_8300 in Search API Solr 4.x

Same name and namespace in other branches
  1. 8.3 search_api_solr.install \search_api_solr_update_8300()

Migrate Solr backends to the new unified Solr backend.

File

./search_api_solr.install, line 764
Install, update and uninstall functions for the Search API Solr module.

Code

function search_api_solr_update_8300() {
  $config_factory = \Drupal::configFactory();
  foreach ($config_factory
    ->listAll('search_api_solr.solr_field_type.m_') as $field_type_name) {
    $config_factory
      ->getEditable($field_type_name)
      ->delete();
  }
  foreach (search_api_solr_update_helper_get_field_type_configs() as $field_type_name => $field_type_config) {
    unset($field_type_config['managed_schema']);
    search_api_solr_update_helper_save_field_type_config($field_type_name, $field_type_config);
  }
  foreach ($config_factory
    ->listAll('search_api.server.') as $server_name) {
    $server = $config_factory
      ->getEditable($server_name);
    $backend_config = $server
      ->get('backend_config');
    switch ($server
      ->get('backend')) {
      case 'search_api_solr':
        $backend_config['sasm_limit_search_page_to_content_language'] = FALSE;
        $backend_config['sasm_search_page_include_language_independent'] = TRUE;
        break;
      case 'search_api_solr_multilingual':
      case 'search_api_solr_multilingual_managed_schema':
        unset($backend_config['sasm_language_unspecific_fallback_on_schema_issues']);
        $server
          ->set('backend', 'search_api_solr');
        break;
      case 'search_api_solr_any_schema':
        $backend_config['sasm_limit_search_page_to_content_language'] = FALSE;
        $backend_config['sasm_search_page_include_language_independent'] = TRUE;
        $server
          ->set('backend', 'search_api_solr');
        break;
      default:
        continue 2;
    }
    $dependencies = $server
      ->get('dependencies');
    $dependencies['module'] = [
      'search_api_solr',
    ];
    $server
      ->set('backend_config', $backend_config)
      ->set('dependencies', $dependencies)
      ->save(TRUE);
  }
  foreach ($config_factory
    ->listAll('search_api.index.') as $index_name) {
    $index = $config_factory
      ->getEditable($index_name);
    $field_settings = $index
      ->get('field_settings');
    foreach ($field_settings as &$field_setting) {
      if ('solr_string_doc_values' === $field_setting['type']) {
        $field_setting['type'] = 'string';
      }
    }
    $index
      ->set('field_settings', $field_settings)
      ->save(TRUE);
  }
}