default_timezone = $timezone; $this->security = $security; } public function setTimeZone(ControllerEvent $event) { $timezone = null; //Check if the user has set a timezone $user = $this->security->getUser(); if ($user instanceof User && !empty($user->getTimezone())) { $timezone = $user->getTimezone(); } //Fill with default value if needed if ($timezone === null && !empty($this->default_timezone)) { $timezone = $this->default_timezone; } //If timezone was configured anywhere set it, otherwise just use the one from php.ini if ($timezone !== null) { date_default_timezone_set($timezone); } } /** * Returns an array of event names this subscriber wants to listen to. * * The array keys are event names and the value can be: * * * The method name to call (priority defaults to 0) * * An array composed of the method name to call and the priority * * An array of arrays composed of the method names to call and respective * priorities, or 0 if unset * * For instance: * * * ['eventName' => 'methodName'] * * ['eventName' => ['methodName', $priority]] * * ['eventName' => [['methodName1', $priority], ['methodName2']]] * * @return array The event names to listen to */ public static function getSubscribedEvents() { //Set the timezone shortly before executing the controller return [ KernelEvents::CONTROLLER => 'setTimeZone' ]; } }