src/Hona/AdminBundle/EventListener/TimezoneListener.php line 38

Open in your IDE?
  1. <?php
  2. namespace Hona\AdminBundle\EventListener;
  3. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  4. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  5. use Doctrine\ORM\EntityManager;
  6. use Doctrine\DBAL\Types\Type;
  7. use Hona\AdminBundle\DoctrineDBALTypes\UTCDateTimeType;
  8. use Hona\AdminBundle\Library\Utils;
  9. use Hona\AdminBundle\Entity\User;
  10. use Hona\AdminBundle\Security\AdminUser;
  11. use Symfony\Component\DependencyInjection\Container;
  12. class TimezoneListener
  13. {
  14.     /**
  15.      * 
  16.      * @param TokenStorageInterface $token_storage
  17.      * @param EntityManager $em
  18.      * @param \Twig_Environment $twig
  19.      * @param Container $container
  20.      */
  21.     public function __construct(TokenStorageInterface $token_storage, \Twig_Environment $twigContainer $container)
  22.     {
  23.         $this->token_storage $token_storage;
  24.         $this->twig $twig;
  25.         $this->container $container;
  26.     }
  27.     /**
  28.      *
  29.      * @param GetResponseEvent $event
  30.      */
  31.     public function onKernelRequest(GetResponseEvent $event)
  32.     {
  33.         $token $this->token_storage->getToken();
  34.         if ($token != null && $token->getUser() instanceof AdminUser) {
  35.             // override doctrine datetime class
  36.             Type::overrideType('datetime'UTCDateTimeType::class);
  37.             Type::overrideType('datetimetz'UTCDateTimeType::class);
  38.             //check for user timezone
  39.             // set time zone
  40.             if (!defined('_USER_TIMEZONE_')) {
  41.                 define('_USER_TIMEZONE_'Utils::getParameter('default_timezone'));
  42.             }
  43.             // get utc time zone offset 
  44.             $now = new \DateTime();
  45.             $mins $now->getOffset() / 60;
  46.             $sgn = ($mins ? -1);
  47.             $mins abs($mins);
  48.             $hrs floor($mins 60);
  49.             $mins -= $hrs 60;
  50.             $offset sprintf('%+d:%02d'$hrs $sgn$mins);
  51.             $this->twig->addGlobal('TIMEZONE_UTC'$offset);
  52.         }else{
  53.             if (!defined('_USER_TIMEZONE_')) {
  54.                 define('_USER_TIMEZONE_''UTC');
  55.             }
  56.         }
  57.         date_default_timezone_set(_USER_TIMEZONE_);
  58.     }
  59. }