You are here

protected function SearchApiSolrMultilingualManagedSchemaBackend::createSolrMultilingualFieldType in Search API Multilingual Solr Search 8

Creates and deploys a missing Solr Field Type if the server supports it.

Parameters

string $solr_field_type_name: The name of the Solr Field Type.

Overrides AbstractSearchApiSolrMultilingualBackend::createSolrMultilingualFieldType

File

src/Plugin/search_api/backend/SearchApiSolrMultilingualManagedSchemaBackend.php, line 54

Class

SearchApiSolrMultilingualManagedSchemaBackend
Plugin annotation @SearchApiBackend( id = "search_api_solr_multilingual_managed_schema", label = @Translation("Multilingual Solr Managed Schema (Experimental, don't use in production)."), description = @Translation("Index items using an Solr…

Namespace

Drupal\search_api_solr_multilingual\Plugin\search_api\backend

Code

protected function createSolrMultilingualFieldType($solr_field_type_name) {

  // @todo replace the hardcoded version extension.
  $field_type_name = 'm_' . Utility::decodeSolrName($solr_field_type_name) . '_5_2_0';

  // Get the field type definition from Drupal.

  /** @var \Drupal\search_api_solr_multilingual\Entity\SolrFieldType $field_type_entity */
  $field_type_entity = SolrFieldType::load($field_type_name);
  if (!$field_type_entity) {
    throw new SearchApiSolrMultilingualException("There's no field type {$field_type_name}.");
  }
  $field_type_definition = $field_type_entity
    ->getFieldType();
  $field_type_definition['name'] = $solr_field_type_name;

  // Send the config to Solr.
  $command_json = '{ "add-field-type": ' . Json::encode($field_type_definition) . '}';
  $command_json = str_replace('"' . $field_type_name . '"', '"' . $solr_field_type_name . '"', $command_json);
  try {
    $this
      ->solrHelper()
      ->coreRestPost('schema', $command_json);
  } catch (SearchApiSolrMultilingualException $e) {
    watchdog_exception('solr', $e);
    return FALSE;
  }
  return TRUE;
}