You are here

public function SolrFieldTypeListBuilder::getSolrconfigExtraXml in Search API Solr 8.3

Same name and namespace in other branches
  1. 8.2 src/Controller/SolrFieldTypeListBuilder.php \Drupal\search_api_solr\Controller\SolrFieldTypeListBuilder::getSolrconfigExtraXml()
  2. 4.x src/Controller/SolrFieldTypeListBuilder.php \Drupal\search_api_solr\Controller\SolrFieldTypeListBuilder::getSolrconfigExtraXml()

Returns the formatted XML for solrconfig_extra.xml.

Throws

\Drupal\search_api\SearchApiException

File

src/Controller/SolrFieldTypeListBuilder.php, line 294

Class

SolrFieldTypeListBuilder
Provides a listing of SolrFieldType.

Namespace

Drupal\search_api_solr\Controller

Code

public function getSolrconfigExtraXml() {
  $search_components = [];

  /** @var \Drupal\search_api_solr\SolrFieldTypeInterface $solr_field_type */
  foreach ($this
    ->getEnabledEntities() as $solr_field_type) {
    $xml = $solr_field_type
      ->getSolrConfigsAsXml();
    if (preg_match_all('@(<searchComponent name="[^"]+"[^>]*?>)(.*?)</searchComponent>@sm', $xml, $matches)) {
      foreach ($matches[1] as $key => $search_component) {
        $search_components[$search_component][] = $matches[2][$key];
      }
    }
  }
  $xml = '';
  foreach ($search_components as $search_component => $details) {
    $xml .= $search_component;
    foreach ($details as $detail) {
      $xml .= $detail;
    }
    $xml .= "</searchComponent>\n";
  }
  return $xml;
}