Skip to content

Commit

Permalink
Fixing TimezoneListener to set default_timezone when any guessers had…
Browse files Browse the repository at this point in the history
… success
  • Loading branch information
hugomn committed Apr 11, 2015
1 parent 64d2aee commit f004c99
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 11 deletions.
28 changes: 17 additions & 11 deletions EventListener/TimezoneListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,18 +46,20 @@ class TimezoneListener implements EventSubscriberInterface
*
* @param Session $session Session
* @param string $sessionVar
* @param string $defaultTimezone
* @param TimezoneGuesserManager $manager The Timezone Manager
* @param ValidatorInterace $validator Timzone Validator
* @param LoggerInterface $logger Logger
*/
public function __construct(Session $session, $sessionVar, TimezoneGuesserManager $manager, ValidatorInterface $validator, TimezoneProvider $provider, LoggerInterface $logger = null)
public function __construct(Session $session, $sessionVar, $defaultTimezone = 'UTC', TimezoneGuesserManager $manager, ValidatorInterface $validator, TimezoneProvider $provider, LoggerInterface $logger = null)
{
$this->session = $session;
$this->manager = $manager;
$this->validator = $validator;
$this->timezoneProvider = $provider;
$this->logger = $logger ? : new NullLogger();
$this->sessionTimezoneString = $sessionVar;
$this->defaultTimezone = $defaultTimezone;
}

/**
Expand All @@ -77,19 +79,23 @@ public function onKernelRequest(GetResponseEvent $event)
}

if (!$this->session->has($this->sessionTimezoneString)) {
$this->timezone = $this->manager->runTimezoneGuessing($request);

$errors = $this->validator->validateValue($this->timezone, new Timezone());
if ($this->timezone = $this->manager->runTimezoneGuessing($request)) {
$errors = $this->validator->validateValue($this->timezone, new Timezone());

if ($errors->count() > 0) {
$iterator = $errors->getIterator();
while ($iterator->valid()) {
$this->logger->notice($iterator->current());
$iterator->next();
}
if ($errors->count() > 0) {
$iterator = $errors->getIterator();
while ($iterator->valid()) {
$this->logger->notice($iterator->current());
$iterator->next();
}

return;
return;
}
} else {
$this->timezone = $this->defaultTimezone;
}

} else {
$this->timezone = $this->session->get($this->sessionTimezoneString);
$event->getDispatcher()->removeListener(TimezoneBundleEvents::TIMEZONE_CHANGE, array($this,'setSessionAttribute'));
Expand Down Expand Up @@ -127,4 +133,4 @@ public static function getSubscribedEvents()
)
);
}
}
}
1 change: 1 addition & 0 deletions Resources/config/services.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
<service id="lunetics_timezone.locale_listener" class="%lunetics_timezone.timezone_listener.class%">
<argument type="service" id="session"/>
<argument>%lunetics_timezone.session_var%</argument>
<argument>%lunetics_timezone.default_timezone%</argument>
<argument type="service" id="lunetics_timezone.guesser_manager" />
<argument type="service" id="validator"/>
<argument type="service" id="lunetics_timezone.provider" />
Expand Down

0 comments on commit f004c99

Please sign in to comment.