diff --git a/src/Command/KimaiImporterCommand.php b/src/Command/KimaiImporterCommand.php index 227dac73..86efc010 100644 --- a/src/Command/KimaiImporterCommand.php +++ b/src/Command/KimaiImporterCommand.php @@ -1042,7 +1042,7 @@ class KimaiImporterCommand extends Command } $user = $this->users[$oldRecord['userID']]; - $timezone = $user->getPreferenceValue('timezone', date_default_timezone_get()); + $timezone = $user->getTimezone(); $dateTimezone = new \DateTimeZone('UTC'); $begin = new \DateTime('@' . $oldRecord['start']); diff --git a/src/Entity/User.php b/src/Entity/User.php index 60d644bd..b9f77887 100644 --- a/src/Entity/User.php +++ b/src/Entity/User.php @@ -256,14 +256,16 @@ class User extends BaseUser implements UserInterface return null; } - /** - * @return string - */ public function getLocale(): string { return $this->getPreferenceValue(UserPreference::LOCALE, User::DEFAULT_LANGUAGE); } + public function getTimezone(): string + { + return $this->getPreferenceValue(UserPreference::TIMEZONE, date_default_timezone_get()); + } + /** * @param string $name * @param mixed $default diff --git a/src/EventSubscriber/TimezoneSubscriber.php b/src/EventSubscriber/TimezoneSubscriber.php index ce724bdb..2e6395bc 100644 --- a/src/EventSubscriber/TimezoneSubscriber.php +++ b/src/EventSubscriber/TimezoneSubscriber.php @@ -35,29 +35,19 @@ class TimezoneSubscriber implements EventSubscriberInterface } public function setTimezone(RequestEvent $event) - { - if (!$this->canHandleEvent()) { - return; - } - - /** @var User $user */ - $user = $this->storage->getToken()->getUser(); - $timezone = $user->getPreferenceValue('timezone', date_default_timezone_get()); - date_default_timezone_set($timezone); - } - - protected function canHandleEvent(): bool { if (null === $this->storage->getToken()) { - return false; + return; } $user = $this->storage->getToken()->getUser(); if (null === $user) { - return false; + return; } - return ($user instanceof User); + if ($user instanceof User) { + date_default_timezone_set($user->getTimezone()); + } } } diff --git a/src/Repository/WidgetRepository.php b/src/Repository/WidgetRepository.php index 2adef2e6..614450cb 100644 --- a/src/Repository/WidgetRepository.php +++ b/src/Repository/WidgetRepository.php @@ -90,8 +90,9 @@ class WidgetRepository protected function create(string $name, array $widget): WidgetInterface { $user = $this->user; - $begin = !empty($widget['begin']) ? new \DateTime($widget['begin']) : null; - $end = !empty($widget['end']) ? new \DateTime($widget['end']) : null; + $timezone = new \DateTimeZone($user->getTimezone()); + $begin = !empty($widget['begin']) ? new \DateTime($widget['begin'], $timezone) : null; + $end = !empty($widget['end']) ? new \DateTime($widget['end'], $timezone) : null; $theUser = $widget['user'] ? $user : null; if (!isset($widget['type'])) { diff --git a/src/Timesheet/UserDateTimeFactory.php b/src/Timesheet/UserDateTimeFactory.php index f0c8ab05..f7383731 100644 --- a/src/Timesheet/UserDateTimeFactory.php +++ b/src/Timesheet/UserDateTimeFactory.php @@ -24,8 +24,8 @@ class UserDateTimeFactory $timezone = date_default_timezone_get(); $user = $user->getUser(); - if ($user instanceof User && null !== $user->getPreferenceValue('timezone')) { - $timezone = $user->getPreferenceValue('timezone'); + if ($user instanceof User) { + $timezone = $user->getTimezone(); } $this->timezone = new \DateTimeZone($timezone);