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']];
|
$user = $this->users[$oldRecord['userID']];
|
||||||
$timezone = $user->getPreferenceValue('timezone', date_default_timezone_get());
|
$timezone = $user->getTimezone();
|
||||||
$dateTimezone = new \DateTimeZone('UTC');
|
$dateTimezone = new \DateTimeZone('UTC');
|
||||||
|
|
||||||
$begin = new \DateTime('@' . $oldRecord['start']);
|
$begin = new \DateTime('@' . $oldRecord['start']);
|
||||||
|
|||||||
@@ -256,14 +256,16 @@ class User extends BaseUser implements UserInterface
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getLocale(): string
|
public function getLocale(): string
|
||||||
{
|
{
|
||||||
return $this->getPreferenceValue(UserPreference::LOCALE, User::DEFAULT_LANGUAGE);
|
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 string $name
|
||||||
* @param mixed $default
|
* @param mixed $default
|
||||||
|
|||||||
@@ -35,29 +35,19 @@ class TimezoneSubscriber implements EventSubscriberInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function setTimezone(RequestEvent $event)
|
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()) {
|
if (null === $this->storage->getToken()) {
|
||||||
return false;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$user = $this->storage->getToken()->getUser();
|
$user = $this->storage->getToken()->getUser();
|
||||||
|
|
||||||
if (null === $user) {
|
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
|
protected function create(string $name, array $widget): WidgetInterface
|
||||||
{
|
{
|
||||||
$user = $this->user;
|
$user = $this->user;
|
||||||
$begin = !empty($widget['begin']) ? new \DateTime($widget['begin']) : null;
|
$timezone = new \DateTimeZone($user->getTimezone());
|
||||||
$end = !empty($widget['end']) ? new \DateTime($widget['end']) : null;
|
$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;
|
$theUser = $widget['user'] ? $user : null;
|
||||||
|
|
||||||
if (!isset($widget['type'])) {
|
if (!isset($widget['type'])) {
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ class UserDateTimeFactory
|
|||||||
$timezone = date_default_timezone_get();
|
$timezone = date_default_timezone_get();
|
||||||
|
|
||||||
$user = $user->getUser();
|
$user = $user->getUser();
|
||||||
if ($user instanceof User && null !== $user->getPreferenceValue('timezone')) {
|
if ($user instanceof User) {
|
||||||
$timezone = $user->getPreferenceValue('timezone');
|
$timezone = $user->getTimezone();
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->timezone = new \DateTimeZone($timezone);
|
$this->timezone = new \DateTimeZone($timezone);
|
||||||
|
|||||||
Reference in New Issue
Block a user