in modules/quanthub_indicator/src/Plugin/search_api/processor/QuanthubIndicatorProcessor.php [194:246]
protected function processField(FieldInterface $field) {
if ($this->entity->getType() == 'indicator') {
parent::processField($field);
$dataset_entity = $this->entity->field_dataset
->first()
->get('entity')
->getTarget()
->getValue();
if ($dataset_entity->hasTranslation($this->langcode)) {
$dataset_entity_localized = $dataset_entity->getTranslation($this->langcode);
}
if ($this->indicatorId && !empty($dataset_entity_localized)) {
if (method_exists($field, 'getFieldIdentifier')) {
switch ($field->getFieldIdentifier()) {
case 'rendered_item':
$this->processRenderedItemField($field, $dataset_entity_localized);
break;
case 'title':
if ($this->langcode && !empty($this->loadedIndicators[$this->datasetUrn][$this->indicatorId]['names'][$this->langcode])) {
$new_field_values[] = new TextValue($this->loadedIndicators[$this->datasetUrn][$this->indicatorId]['names'][$this->langcode]);
$field->setValues($new_field_values);
}
break;
case 'field_topics':
$topics = [];
foreach ($dataset_entity_localized->field_topics->referencedEntities() as $referencedEntity) {
if ($referencedEntity->hasTranslation($this->langcode)) {
$topics[] = $referencedEntity->getTranslation($this->langcode)
->id();
}
}
$field->setValues($topics);
break;
case 'topics_name':
$topic_names = [];
foreach ($dataset_entity_localized->field_topics->referencedEntities() as $referencedEntity) {
if ($referencedEntity->hasTranslation($this->langcode)) {
$topic_names[] = new TextValue($referencedEntity->getTranslation($this->langcode)->name->getString());
}
}
$field->setValues($topic_names);
break;
}
}
}
}
}