class TranslateEntityProcessor in Facets 8
Transforms the results to show the translated entity label.
Plugin annotation
@FacetsProcessor(
id = "translate_entity",
label = @Translation("Transform entity ID to label"),
description = @Translation("Display the entity label instead of its ID (for example the term name instead of the taxonomy term ID). This only works when an actual entity is indexed, not for the entity id or aggregated fields."),
stages = {
"build" = 5
}
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\facets\Processor\ProcessorPluginBase implements ProcessorInterface uses DependencyTrait
- class \Drupal\facets\Plugin\facets\processor\TranslateEntityProcessor implements ContainerFactoryPluginInterface, BuildProcessorInterface
- class \Drupal\facets\Processor\ProcessorPluginBase implements ProcessorInterface uses DependencyTrait
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of TranslateEntityProcessor
1 file declares its use of TranslateEntityProcessor
- TranslateEntityProcessorTest.php in tests/
src/ Unit/ Plugin/ processor/ TranslateEntityProcessorTest.php
File
- src/
Plugin/ facets/ processor/ TranslateEntityProcessor.php, line 29
Namespace
Drupal\facets\Plugin\facets\processorView source
class TranslateEntityProcessor extends ProcessorPluginBase implements BuildProcessorInterface, ContainerFactoryPluginInterface {
/**
* The language manager.
*
* @var \Drupal\Core\Language\LanguageManagerInterface
*/
protected $languageManager;
/**
* The entity type manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* Constructs a new object.
*
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin_id for the plugin instance.
* @param mixed $plugin_definition
* The plugin implementation definition.
* @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
* The language manager.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, LanguageManagerInterface $language_manager, EntityTypeManagerInterface $entity_type_manager) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->languageManager = $language_manager;
$this->entityTypeManager = $entity_type_manager;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('language_manager'), $container
->get('entity_type.manager'));
}
/**
* {@inheritdoc}
*/
public function build(FacetInterface $facet, array $results) {
$language_interface = $this->languageManager
->getCurrentLanguage();
/** @var \Drupal\Core\TypedData\DataDefinitionInterface $data_definition */
$data_definition = $facet
->getDataDefinition();
$property = NULL;
foreach ($data_definition
->getPropertyDefinitions() as $k => $definition) {
if ($definition instanceof DataReferenceDefinitionInterface) {
$property = $k;
break;
}
}
if ($property === NULL) {
throw new InvalidProcessorException("Field doesn't have an entity definition, so this processor doesn't work.");
}
$entity_type = $data_definition
->getPropertyDefinition($property)
->getTargetDefinition()
->getEntityTypeId();
/** @var \Drupal\facets\Result\ResultInterface $result */
$ids = [];
foreach ($results as $delta => $result) {
$ids[$delta] = $result
->getRawValue();
}
// Load all indexed entities of this type.
$entities = $this->entityTypeManager
->getStorage($entity_type)
->loadMultiple($ids);
// Loop over all results.
foreach ($results as $i => $result) {
if (!isset($entities[$ids[$i]])) {
unset($results[$i]);
continue;
}
/** @var \Drupal\Core\Entity\ContentEntityBase $entity */
$entity = $entities[$ids[$i]];
// Check for a translation of the entity and load that instead if one's
// found.
if ($entity instanceof TranslatableInterface && $entity
->hasTranslation($language_interface
->getId())) {
$entity = $entity
->getTranslation($language_interface
->getId());
}
// Overwrite the result's display value.
$results[$i]
->setDisplayValue($entity
->label());
}
// Return the results with the new display values.
return $results;
}
/**
* {@inheritdoc}
*/
public function supportsFacet(FacetInterface $facet) {
$data_definition = $facet
->getDataDefinition();
if ($data_definition
->getDataType() === 'entity_reference') {
return TRUE;
}
if (!$data_definition instanceof ComplexDataDefinitionInterface) {
return FALSE;
}
$property_definitions = $data_definition
->getPropertyDefinitions();
foreach ($property_definitions as $definition) {
if ($definition instanceof DataReferenceDefinitionInterface) {
return TRUE;
}
}
return FALSE;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
DependencyTrait:: |
protected | property | The object's dependencies. | |
DependencyTrait:: |
protected | function | Adds multiple dependencies. | |
DependencyTrait:: |
protected | function | Adds a dependency. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
ProcessorInterface:: |
constant | Processing stage: build. | ||
ProcessorInterface:: |
constant | Processing stage: post_query. | ||
ProcessorInterface:: |
constant | Processing stage: pre_query. | ||
ProcessorInterface:: |
constant | Processing stage: sort. | ||
ProcessorPluginBase:: |
public | function |
Adds a configuration form for this processor. Overrides ProcessorInterface:: |
10 |
ProcessorPluginBase:: |
public | function |
Calculates dependencies for the configured plugin. Overrides DependentPluginInterface:: |
|
ProcessorPluginBase:: |
public | function |
Gets default configuration for this plugin. Overrides ConfigurableInterface:: |
8 |
ProcessorPluginBase:: |
public | function |
Gets this plugin's configuration. Overrides ConfigurableInterface:: |
|
ProcessorPluginBase:: |
public | function |
Returns the default weight for a specific processing stage. Overrides ProcessorInterface:: |
|
ProcessorPluginBase:: |
public | function |
Retrieves the processor description. Overrides ProcessorInterface:: |
|
ProcessorPluginBase:: |
public | function |
Picks the preferred query type for this widget. Overrides ProcessorInterface:: |
4 |
ProcessorPluginBase:: |
public | function |
Determines whether this processor should be hidden from the user. Overrides ProcessorInterface:: |
|
ProcessorPluginBase:: |
public | function |
Determines whether this processor should always be enabled. Overrides ProcessorInterface:: |
|
ProcessorPluginBase:: |
public | function |
Sets the configuration for this plugin instance. Overrides ConfigurableInterface:: |
|
ProcessorPluginBase:: |
public | function | ||
ProcessorPluginBase:: |
public | function |
Checks whether this processor implements a particular stage. Overrides ProcessorInterface:: |
|
ProcessorPluginBase:: |
public | function |
Validates a configuration form for this processor. Overrides ProcessorInterface:: |
2 |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
TranslateEntityProcessor:: |
protected | property | The entity type manager. | |
TranslateEntityProcessor:: |
protected | property | The language manager. | |
TranslateEntityProcessor:: |
public | function |
Runs before the renderable array is created. Overrides BuildProcessorInterface:: |
|
TranslateEntityProcessor:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
|
TranslateEntityProcessor:: |
public | function |
Checks if the facet is supported by this widget. Overrides ProcessorPluginBase:: |
|
TranslateEntityProcessor:: |
public | function |
Constructs a new object. Overrides PluginBase:: |