respect users timezone in statistic widgets (#1207)
This commit is contained in:
@@ -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']);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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'])) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user