src/Products/NotificationsBundle/Subscriber/LanguageSubscriber.php line 47

Open in your IDE?
  1. <?php
  2. namespace Products\NotificationsBundle\Subscriber;
  3. use Cms\CoreBundle\Util\Doctrine\EntityManager;
  4. use Products\NotificationsBundle\Entity\Profile;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpKernel\Event\RequestEvent;
  7. use Symfony\Component\HttpKernel\KernelEvents;
  8. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  9. final class LanguageSubscriber implements EventSubscriberInterface
  10. {
  11.     /**
  12.      * @var EntityManager
  13.      */
  14.     private EntityManager $em;
  15.     /**
  16.      * @var TokenStorageInterface
  17.      */
  18.     private TokenStorageInterface $tokenStorage;
  19.     /**
  20.      * @param EntityManager $em
  21.      * @param TokenStorageInterface $tokenStorage
  22.      */
  23.     public function __construct(EntityManager $emTokenStorageInterface $tokenStorage)
  24.     {
  25.         $this->em $em;
  26.         $this->tokenStorage $tokenStorage;
  27.     }
  28.     /**
  29.      * {@inheritDoc}
  30.      */
  31.     public static function getSubscribedEvents(): array
  32.     {
  33.         return [
  34.             KernelEvents::REQUEST => ['onKernelRequest'0],
  35.         ];
  36.     }
  37.     /**
  38.      * @param RequestEvent $event
  39.      */
  40.     public function onKernelRequest(RequestEvent $event): void
  41.     {
  42.         $request $event->getRequest();
  43.         $route $request->attributes->get('_route');
  44.         if (empty($route) || ! str_starts_with($route'app.notifications.portal.')) {
  45.             return;
  46.         }
  47.         $user $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null;
  48.         if ( ! $user instanceof Profile) {
  49.             return;
  50.         }
  51.         $googtransCookie $request->cookies->get('googtrans');
  52.         if (empty($googtransCookie)) {
  53.             return;
  54.         }
  55.         $cookieLang explode('/'$googtransCookie)[2] ?? null;
  56.         if (empty($cookieLang)) {
  57.             return;
  58.         }
  59.         if ($user->getLanguageOverride() === $cookieLang) {
  60.             return;
  61.         }
  62.         $user->setLanguageOverride($cookieLang);
  63.         $this->em->save($user);
  64.     }
  65. }