![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/CoreBundle/Doctrine/Type/ |
<?php namespace Mautic\CoreBundle\Doctrine\Type; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\DateTimeType; use Mautic\CoreBundle\Helper\DateTimeHelper; class UTCDateTimeType extends DateTimeType { private static ?\DateTimeZone $utc = null; /** * @param \DateTime $value * * @return string|null */ public function convertToDatabaseValue($value, AbstractPlatform $platform) { if (null === $value) { return null; } if (!self::$utc) { self::$utc = new \DateTimeZone('UTC'); } if (!is_object($value)) { $dateHelper = new DateTimeHelper($value); $value = $dateHelper->getDateTime(); } else { $value = clone $value; } $value->setTimezone(self::$utc); return parent::convertToDatabaseValue($value, $platform); } /** * @param mixed $value * * @return \DateTimeInterface|null * * @throws ConversionException */ public function convertToPHPValue($value, AbstractPlatform $platform) { if (null === $value) { return null; } if (!self::$utc) { self::$utc = new \DateTimeZone('UTC'); } // Set to UTC before converting to DateTime $timezone = date_default_timezone_get(); date_default_timezone_set('UTC'); $value = parent::convertToPHPValue($value, $platform); // Set to local timezone date_default_timezone_set($timezone); if ($value instanceof \DateTime) { $value->setTimezone(new \DateTimeZone($timezone)); } return $value; } }