respect users timezone in statistic widgets (#1207)

This commit is contained in:
Kevin Papst
2019-10-31 00:17:31 +01:00
committed by GitHub
parent 4331a7c9f4
commit 8eec97deb5
5 changed files with 16 additions and 23 deletions

View File

@@ -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']);

View File

@@ -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

View File

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

View File

@@ -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'])) {

View File

@@ -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);