You are here

public function SolrFieldTypeListBuilder::getConfigFiles in Search API Solr 8.2

Return value

array

Throws

\Drupal\search_api\SearchApiException

1 call to SolrFieldTypeListBuilder::getConfigFiles()
SolrFieldTypeListBuilder::getConfigZip in src/Controller/SolrFieldTypeListBuilder.php

File

src/Controller/SolrFieldTypeListBuilder.php, line 278

Class

SolrFieldTypeListBuilder
Provides a listing of SolrFieldType.

Namespace

Drupal\search_api_solr\Controller

Code

public function getConfigFiles() {

  /** @var \Drupal\search_api_solr\SolrBackendInterface $backend */
  $backend = $this
    ->getBackend();
  $connector = $backend
    ->getSolrConnector();
  $solr_branch = $connector
    ->getSolrBranch($this->assumed_minimum_version);
  $search_api_solr_conf_path = drupal_get_path('module', 'search_api_solr') . '/solr-conf/' . $solr_branch;
  $solrcore_properties = parse_ini_file($search_api_solr_conf_path . '/solrcore.properties', FALSE, INI_SCANNER_RAW);
  $files = [
    'schema_extra_types.xml' => $this
      ->getSchemaExtraTypesXml(),
    'schema_extra_fields.xml' => $this
      ->getSchemaExtraFieldsXml(),
    'solrconfig_extra.xml' => $this
      ->getSolrconfigExtraXml(),
  ];

  // Add language specific text files.
  $solr_field_types = $this
    ->load();

  /** @var \Drupal\search_api_solr\SolrFieldTypeInterface $solr_field_type */
  foreach ($solr_field_types as $solr_field_type) {
    $text_files = $solr_field_type
      ->getTextFiles();
    foreach ($text_files as $text_file_name => $text_file) {
      $text_file_name = Utility::completeTextFileName($text_file_name, $solr_field_type);
      $files[$text_file_name] = $text_file;
      $solrcore_properties['solr.replication.confFiles'] .= ',' . $text_file_name;
    }
  }
  $solrcore_properties['solr.luceneMatchVersion'] = $connector
    ->getLuceneMatchVersion($this->assumed_minimum_version ?: '');

  // @todo
  // $solrcore_properties['solr.replication.masterUrl']
  $solrcore_properties_string = '';
  foreach ($solrcore_properties as $property => $value) {
    $solrcore_properties_string .= $property . '=' . $value . "\n";
  }
  $files['solrcore.properties'] = $solrcore_properties_string;

  // Now add all remaining static files from the conf dir that have not been
  // generated dynamically above.
  foreach (scandir($search_api_solr_conf_path) as $file) {
    if (strpos($file, '.') !== 0) {
      foreach (array_keys($files) as $existing_file) {
        if ($file == $existing_file) {
          continue 2;
        }
      }
      $files[$file] = file_get_contents($search_api_solr_conf_path . '/' . $file);
    }
  }
  $connector
    ->alterConfigFiles($files, $solrcore_properties['solr.luceneMatchVersion'], $this->serverId);
  $this->moduleHandler
    ->alter('search_api_solr_config_files', $files, $solrcore_properties['solr.luceneMatchVersion'], $this->serverId);
  return $files;
}