You are here

public function SolrFieldManager::getFieldDefinitions in Search API Solr 8.2

Same name and namespace in other branches
  1. 8.3 src/SolrFieldManager.php \Drupal\search_api_solr\SolrFieldManager::getFieldDefinitions()
  2. 4.x src/SolrFieldManager.php \Drupal\search_api_solr\SolrFieldManager::getFieldDefinitions()

Gets the field definitions for a Solr server.

Parameters

string $server_id: The ID of the Server from which we are retrieving field information.

Return value

\Drupal\search_api_solr\TypedData\SolrFieldDefinitionInterface[] The array of field definitions for the server, keyed by field name.

Overrides SolrFieldManagerInterface::getFieldDefinitions

File

src/SolrFieldManager.php, line 58

Class

SolrFieldManager
Manages the discovery of Solr fields.

Namespace

Drupal\search_api_solr

Code

public function getFieldDefinitions($server_id) {
  if (!isset($this->fieldDefinitions[$server_id])) {

    // Not prepared, try to load from cache.
    $cid = 'solr_field_definitions:' . $server_id;
    if ($cache = $this
      ->cacheGet($cid)) {
      $field_definitions = $cache->data;
    }
    else {

      /** @var \Drupal\search_api\ServerInterface|null $server */
      $server = $this->serverStorage
        ->load($server_id);

      // Load the server entity.
      if ($server === NULL) {
        throw new \InvalidArgumentException('The Search API server could not be loaded.');
      }

      // Don't attempt to connect to server if config is disabled. Cache will
      // clear itself when server config is enabled again.
      $field_definitions = $server
        ->status() ? $this
        ->buildFieldDefinitions($server) : [];
      $this
        ->cacheSet($cid, $field_definitions, Cache::PERMANENT, $server
        ->getCacheTagsToInvalidate());
    }
    $this->fieldDefinitions[$server_id] = $field_definitions;
  }
  return $this->fieldDefinitions[$server_id];
}