src/EventSubscriber/LocaleSubscriber.php line 55

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpKernel\Event\RequestEvent;
  5. use Symfony\Component\HttpKernel\KernelEvents;
  6. class LocaleSubscriber implements EventSubscriberInterface
  7. {
  8.     private $defaultLocale;
  9.     public function __construct($defaultLocale 'en')
  10.     {
  11.         $this->defaultLocale $defaultLocale;
  12.     }
  13.     public function onKernelRequest(RequestEvent $event)
  14.     {
  15.         $request $event->getRequest();
  16.         $editMode $request->get("editmode"'');
  17.         if ($editMode != '') {
  18.             if ($editMode == "1") {
  19.                 $request->getSession()->set("editmode"true);
  20.             }
  21.             if ($editMode == "0") {
  22.                 $request->getSession()->set("editmode"false);
  23.             }
  24.         }
  25.         /*
  26.         if (!$request->hasPreviousSession()) {
  27.             return;
  28.         }
  29.         */
  30.         // overwrite _locale if language was sent by parameter
  31.         if ($language $request->get('language'false)) {
  32.             $request->getSession()->set('_locale'$language);
  33.             $request->setLocale($language);
  34.             setCookie("language"$languagetime() + (60 60 24 30), "/"".menu.engineer"truetrue);
  35.         } else {
  36.             // try to load language from cookie first
  37.             if (isset($_COOKIE["language"])) {
  38.                 $language $_COOKIE["language"];
  39.                 $request->getSession()->set('_locale'$language);
  40.                 $request->setLocale($language);
  41.             } // try to see if the locale has been set as a _locale routing parameter
  42.             else if ($locale $request->attributes->get('_locale')) {
  43.                 $request->getSession()->set('_locale'$locale);
  44.             } else {
  45.                 // if no explicit locale has been set on this request, use one from the session
  46.                 $request->setLocale($request->getSession()->get('_locale'$this->defaultLocale));
  47.             }
  48.         }
  49.     }
  50.     public static function getSubscribedEvents()
  51.     {
  52.         return [
  53.             // must be registered before (i.e. with a higher priority than) the default Locale listener
  54.             KernelEvents::REQUEST => [['onKernelRequest'20]],
  55.         ];
  56.     }
  57. }