Provide a TimestampItemNormalizer with an option to return RFC3339 formatted date.

This commit is contained in:
Michael Stenta 2024-01-26 06:27:50 -05:00
parent 6ccf2cda0d
commit 0a3a5084c1
2 changed files with 35 additions and 0 deletions

View File

@ -13,3 +13,7 @@ services:
tags:
- { name: normalizer, priority: 10 }
arguments: ['@entity.repository']
farm_csv.normalizer.timestamp_item:
class: Drupal\farm_csv\Normalizer\TimestampItemNormalizer
tags:
- { name: normalizer, priority: 10 }

View File

@ -0,0 +1,31 @@
<?php
namespace Drupal\farm_csv\Normalizer;
use Drupal\serialization\Normalizer\TimestampItemNormalizer as CoreTimestampItemNormalizer;
/**
* Normalizes timestamp fields for farmOS CSV exports.
*/
class TimestampItemNormalizer extends CoreTimestampItemNormalizer {
/**
* The supported format.
*/
const FORMAT = 'csv';
/**
* {@inheritdoc}
*/
public function normalize($object, $format = NULL, array $context = []): array|string|int|float|bool|\ArrayObject|NULL {
$data = parent::normalize($object, $format, $context);
// Return the RFC3339 formatted date, if desired.
if (!empty($context['rfc3339_dates'])) {
return $data['value'];
}
return $data;
}
}