public function syncDatasetsUpdateDate()

in modules/quanthub_sdmx_sync/src/QuanthubSdmxSyncDatasets.php [96:153]


  public function syncDatasetsUpdateDate() {
    foreach ($this->getDatasetUrns() as $dataset_nid => $dataset_urn) {
      $update_dates = $this->getDatasetUpdateDates($dataset_urn);
      if (!empty($update_dates)) {
        if (strtotime($update_dates['UPDATED']) === FALSE) {
          $this->logger->info("For urn: $dataset_urn cannot parse date:" . $update_dates['UPDATED']);
        }
        else {
          $last_update_date = strtotime(trim($update_dates['UPDATED']));
          $dataset_entity = $this->datasetsStorage->load($dataset_nid);

          if (
            $dataset_entity instanceof EntityInterface &&
            $last_update_date != $dataset_entity->getCreatedTime()
          ) {
            $dataset_entity_languages = $dataset_entity->getTranslationLanguages();
            foreach ($dataset_entity_languages as $langcode => $language) {
              $dataset_entity_translation = $dataset_entity->getTranslation($langcode);

              // Updated only if updated date in sdmx changed.
              $metadata_value = $dataset_entity_translation->get('field_metadata')
                ->getValue();
              foreach ($metadata_value as $delta => $item) {
                if (!empty($update_dates['UPDATED'])) {
                  if ($langcode == 'en') {
                    if ($item['key'] == 'Updated') {
                      $metadata_value[$delta]['value'] = $update_dates['UPDATED'];
                    }
                  }
                  // Compare string translation to key in key/value field.
                  elseif ($item['key'] == $this->translation->getStringTranslation($langcode, 'Updated', '')) {
                    $metadata_value[$delta]['value'] = $update_dates['UPDATED'];
                  }
                }
                if (!empty($update_dates['NEXT_UPDATE'])) {
                  if ($langcode == 'en') {
                    if ($item['key'] == 'Next Update') {
                      $metadata_value[$delta]['value'] = $update_dates['NEXT_UPDATE'];
                    }
                  }
                  // Compare string translation to key in key/value field.
                  elseif ($item['key'] == $this->translation->getStringTranslation($langcode, 'Next Update', '')) {
                    $metadata_value[$delta]['value'] = $update_dates['NEXT_UPDATE'];
                  }
                }
              }

              $dataset_entity->getTranslation($langcode)
                ->set('field_metadata', $metadata_value)
                ->set('created', $last_update_date)
                ->setSyncing(TRUE)
                ->save();
            }
          }
        }
      }
    }
  }