public function preprocessIndexItems()

in modules/quanthub_indicator/src/Plugin/search_api/processor/QuanthubIndicatorProcessor.php [156:189]


  public function preprocessIndexItems(array $items) {
    $this->loadIndicators($items);

    // Annoyingly, this doc comment is needed for PHPStorm. See
    // http://youtrack.jetbrains.com/issue/WI-23586
    /** @var \Drupal\search_api\Item\ItemInterface $item */
    foreach ($items as $item) {
      // Our search processor work only for indicator.
      if ($item->getOriginalObject()->getValue()->getType() == 'indicator') {
        $this->langcode = $item->getLanguage();
        $this->language = $this->languageManager->getLanguage($this->langcode);

        $config_original_language = $this->languageManager->getConfigOverrideLanguage();
        $this->languageManager->setConfigOverrideLanguage($this->language);

        $this->entity = $item->getOriginalObject()->getValue()->getTranslation($this->langcode);

        $this->datasetUrn = $this->entity->field_dataset->first()->entity->field_quanthub_urn->getString();
        $this->indicatorId = $item->getExtraData('indicator_id') ?: FALSE;

        if (
          !empty($this->indicatorId) &&
          empty($this->datasetsDimensions[$this->datasetUrn])
        ) {
          $this->datasetsDimensions[$this->datasetUrn] = $this->sdmxClient->getDimensions($this->datasetUrn);
        }
        foreach ($item->getFields() as $field) {
          $this->processField($field);
        }

        $this->languageManager->setConfigOverrideLanguage($config_original_language);
      }
    }
  }