src/Event/MinificationSubscriber.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Event;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpKernel\KernelEvents;
  5. use Symfony\Component\HttpKernel\HttpKernelInterface;
  6. use Pimcore\Model\WebsiteSetting;
  7. use Pimcore\Tool;
  8. class MinificationSubscriber implements EventSubscriberInterface
  9. {
  10.     public static function getSubscribedEvents()
  11.     {
  12.         return [
  13.             KernelEvents::RESPONSE => ['onKernelResponse', -256]
  14.         ];
  15.     }
  16.     public function onKernelResponse($event)
  17.     {
  18.         if (
  19.             $event->getRequestType() != HttpKernelInterface::MAIN_REQUEST
  20.             || strpos($event->getRequest()->get('_route'), 'admin') !== false // don't apply on admin pages
  21.         ) {
  22.             return;
  23.         }
  24.         
  25.         //dd($event->getRequest()->get('_route'));
  26.         $response $event->getResponse();
  27.         $buffer $response->getContent();
  28.         $replace = [
  29.             '/<!--[^\[](.*?)[^\]]-->/s' => '',
  30.             "/<\?php/" => '<?php ',
  31.             "/\n([\S])/" => '$1',
  32.             "/\r/" => '',
  33.             "/\n/" => '',
  34.             "/\t/" => '',
  35.             '/ +/' => ' ',
  36.         ];
  37.         if (false !== strpos($buffer'<pre>')) {
  38.             $replace = [
  39.                 '/<!--[^\[](.*?)[^\]]-->/s' => '',
  40.                 "/<\?php/" => '<?php ',
  41.                 "/\r/" => '',
  42.                 "/>\n</" => '><',
  43.                 "/>\s+\n</" => '><',
  44.                 "/>\n\s+</" => '><',
  45.             ];
  46.         }
  47.         $buffer preg_replace(array_keys($replace), array_values($replace), $buffer);
  48.         $response->setContent($buffer);
  49.     }
  50. }