src/FlexApp/EventListener/ResponseListener.php line 28

Open in your IDE?
  1. <?php
  2. namespace FlexApp\EventListener;
  3. use FlexApp\Service\BBCodeManager;
  4. use Symfony\Component\DependencyInjection\ContainerInterface;
  5. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  9. use WebBundle\Helper\CookieHelper;
  10. class ResponseListener
  11. {
  12.     private ContainerInterface $container;
  13.     private BBCodeManager $bbCodeManager;
  14.     /**
  15.      * @param ContainerInterface $container
  16.      */
  17.     public function __construct(ContainerInterface $containerBBCodeManager $bbCodeManager)
  18.     {
  19.         $this->container $container;
  20.         $this->bbCodeManager $bbCodeManager;
  21.     }
  22.     public function onKernelResponse(ResponseEvent $event)
  23.     {
  24.         $response $event->getResponse();
  25.         $request $event->getRequest();
  26.         $response $this->parseCodes($response$request);
  27.         if ($this->container->getParameter('kernel.environment') == 'prod') {
  28.             $response $this->process($response);
  29.         }
  30.         $response CookieHelper::save($response);
  31.         return $response;
  32.     }
  33.     private function parseCodes(Response $responseRequest $request): Response
  34.     {
  35.         $route $request->attributes->get('_route');
  36.         $query $request->getPathInfo();
  37.         if ((strripos($route'adm.') === false) and (strripos($query'/import/') === false) and $route != '_wdt') {
  38.             $html $response->getContent();
  39.             $html $this->bbCodeManager->parse($html);
  40.             if (!($response instanceof BinaryFileResponse)) {
  41.                 $response->setContent($html);
  42.             }
  43.         }
  44.         return $response;
  45.     }
  46.     private function process(Response $response): Response
  47.     {
  48.         $contentType $response->headers->get('Content-Type''text/html');
  49.         if (!== stripos($contentType'text/html')) {
  50.             return $response;
  51.         }
  52.         $html $response->getContent();
  53.         //$html = preg_replace(['#[\n]*#u'], [''], $html);
  54.         $html preg_replace(['#[\t]*#u''#[\s]+#u''#[\s]+=[\s]+#u'], [''' ''='], $html);
  55.         $html preg_replace(['#(>)\s(<)#u''#(")\s(/?>)#u''#(;)\s(<)#u'/*'#(>)\s([A-Za-z])#u', '#([A-Za-z])\s(<)#u'*/], '$1$2'$html);
  56.         $response->setContent($html);
  57.         return $response;
  58.     }
  59. }