src/Listener/EventListener.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Listener;
  3. use App\Helper\Event\EventHelper;
  4. use Symfony\Component\HttpFoundation\Cookie;
  5. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  6. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  7. use Symfony\Component\HttpKernel\Event\RequestEvent;
  8. final class EventListener
  9. {
  10.     private $session;
  11.     public function __construct(SessionInterface $session)
  12.     {
  13.         $this->session $session;
  14.     }
  15.     public function onKernelRequest(RequestEvent $event)
  16.     {
  17.         $request $event->getRequest();
  18.         $routeName $request->attributes->get('_route');
  19.         if ($this->session->has('refreshEventID')) {
  20.             $this->session->remove('refreshEventID');
  21.             $this->session->remove('lastEventName');
  22.             $this->session->remove('purchaseEventInitiated');
  23.         }
  24.         if (($routeName === 'product_page' || $routeName == 'checkout_step1' || $routeName == 'checkout_single_page') && !$this->session->has('lastEventName')) {
  25.             $eventID EventHelper::generateGuidv4();
  26.             $this->session->set('eventID'$eventID);
  27.         }
  28.     }
  29.     public function onKernelResponse(ResponseEvent $event)
  30.     {
  31.         $request $event->getRequest();
  32.         $response $event->getResponse();
  33.         if ($this->session->has('eventID')) {
  34.             $cookie Cookie::create('eventID')
  35.                 ->withValue($this->session->get('eventID'))
  36.                 ->withExpires(time() + (60 60))
  37.                 ->withHttpOnly(false);
  38.             $response->headers->setCookie($cookie);
  39.         }
  40.     }
  41. }