protected function processField()

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;
          }
        }
      }
    }
  }