. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Classes\FieldSanitizers; use DateTimeImmutable; use DateTimeInterface; use DateTimeZone; use Espo\Core\Field\DateTime as DateTimeValue; use Espo\Core\FieldSanitize\Sanitizer; use Espo\Core\FieldSanitize\Sanitizer\Data; use Espo\Core\Utils\DateTime as DateTimeUtil; use Exception; /** * @noinspection PhpUnused */ class Datetime implements Sanitizer { public function sanitize(Data $data, string $field): void { $value = $data->get($field); if ($value === null) { return; } try { DateTimeValue::fromString($value); return; } catch (Exception) {} $dateTime = DateTimeImmutable::createFromFormat(DateTimeInterface::ATOM, $value); if ($dateTime === false) { return; } $value = $dateTime ->setTimezone(new DateTimeZone('UTC')) ->format(DateTimeUtil::SYSTEM_DATE_TIME_FORMAT); $data->set($field, $value); } }