src/EventSubscriber/HomepageSubscriber.php line 29

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventSubscriber;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\RequestMatcherInterface;
  7. use Symfony\Component\HttpKernel\Event\RequestEvent;
  8. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  9. use Symfony\Component\HttpKernel\KernelEvents;
  10. use Symfony\Component\HttpKernel\KernelInterface;
  11. final class HomepageSubscriber implements EventSubscriberInterface
  12. {
  13.     public static function getSubscribedEvents(): array
  14.     {
  15.         return [
  16.             KernelEvents::REQUEST => [['onKernelRequest'1]],
  17.         ];
  18.     }
  19.     public function __construct(private KernelInterface $kernel)
  20.     {
  21.     }
  22.     public function onKernelRequest(RequestEvent $event): void
  23.     {
  24.         if (!$event->isMainRequest()) {
  25.             return;
  26.         }
  27.         $request $event->getRequest();
  28.         // routes de debug
  29.         if (str_contains($request->attributes->get('_route'), '_wdt') || str_contains($request->attributes->get('_route'), '_profiler')) {
  30.             return;
  31.         }
  32.         if (\in_array($this->kernel->getEnvironment(), ['dev''test'], true)) {
  33.             return; 
  34.         }
  35.         $routeChecker false;
  36.         $route "";
  37.         if ($request->attributes->get('_route') === "sylius_shop_homepage" ||
  38.             $request->attributes->get('_route') === "sylius_shop_order_after_pay" ||
  39.             $request->attributes->get('_route') === "sylius_paypal_plugin_payment_error" ||
  40.             $request->attributes->get('_route') === "sylius_paypal_plugin_cancel_checkout_payment" ||
  41.             $request->attributes->get('_route') === "sylius_paypal_plugin_cancel_payment" ||
  42.             $request->attributes->get('_route') === "sylius_paypal_plugin_cancel_order" ||
  43.             $request->attributes->get('_route') === "payum_capture_do_session" ||
  44.             $request->attributes->get('_route') === "payum_notify_do" ||
  45.             $request->attributes->get('_route') === "sylius_paypal_plugin_complete_paypal_order"
  46.         ) {
  47.             $route $request->attributes->get('_route');
  48.             $routeChecker true;
  49.             // HS, mais permet de supprimer une variable de session si on sort du panier
  50.             if (in_array($request->getMethod(), ['GET'], true) && $request->getSession()->has('promotion_coupon_error') && $request->attributes->get('_route') !== "sylius_shop_cart_summary" && $request->attributes->get('_route') !== "sylius_shop_checkout_address") {
  51.                 $request->getSession()->remove('promotion_coupon_error');
  52.             }
  53.         }
  54.         if (!$routeChecker) {
  55.             return;
  56.         }
  57.         if ($request->getMethod() === Request::METHOD_POST) {
  58.             $this->writeLogFromBank($request$route);
  59.         }
  60.     }
  61.     private function writeLogFromBank(Request $requeststring $route): void {
  62.         $date = new \DateTime();
  63.         $logFile $this->kernel->getProjectDir().'/var/log/homepage/post_response_'.$date->format('Y_m_d').'.log';
  64.         if (!file_exists($logFile)) {
  65.             touch($logFile);
  66.         }
  67.         $write false;
  68.         $errorMessage "------------------------------------\n";
  69.         $errorMessage .=  "POST response ""\n";
  70.         $errorMessage .= "date : ".$date->format('d/m/Y H:i:s') . "\n";
  71.         $errorMessage .= "route : ".$route "\n";
  72.         foreach ($request->request->all() as $key => $value) {
  73.             if (is_array($value)) {
  74.                 $value json_encode($value);
  75.             }
  76.             if ($key !== "cookie_consent") {
  77.                 $write true;
  78.             }
  79.             $errorMessage .= $key ." : ".$value "\n";
  80.         }
  81.         if ($write) {
  82.             error_log($errorMessage3$logFile);
  83.         }
  84.     }
  85. }