elasticsearch_search_api-1.0.x-dev/src/Search/Facet/TermFacetValueMetaDataStorage.php
src/Search/Facet/TermFacetValueMetaDataStorage.php
<?php namespace Drupal\elasticsearch_search_api\Search\Facet; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Entity\FieldableEntityInterface; use Drupal\taxonomy\TermInterface; /** * Facet value meta data storage implementation on top of Drupal terms. */ class TermFacetValueMetaDataStorage implements FacetValueMetaDataStorageInterface { /** * The term storage. * * @var \Drupal\taxonomy\TermStorageInterface */ protected $termStorage; /** * TermFacetStorage constructor. */ public function __construct(EntityTypeManagerInterface $entityTypeManager) { $this->termStorage = $entityTypeManager->getStorage('taxonomy_term'); } /** * {@inheritdoc} */ public function load(string $id): ?FacetValueMetaData { $term = $this->termStorage->load($id); if (!$term) { return NULL; } $metaData = $this->metaDataFromTerm($term); return $metaData; } /** * Creates meta data from a term. * * @param \Drupal\taxonomy\TermInterface $term * The term. * * @return \Drupal\elasticsearch_search_api\Search\Facet\FacetValueMetaData * The meta data. */ protected function metaDataFromTerm(TermInterface $term) { $metaData = new FacetValueMetaData($term->label(), $term); if ( $term instanceof FieldableEntityInterface && $term->hasField('field_image') && !$term->get('field_image')->isEmpty() ) { $metaData = $metaData->withImage($term->get('field_image')); } return $metaData; } }