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