vendor/webindustry/image-bundle/EventListener/KernelTerminateListener.php line 24

Open in your IDE?
  1. <?php
  2. namespace ImageBundle\EventListener;
  3. use Symfony\Component\HttpKernel\Event\KernelEvent;
  4. use Doctrine\ORM\EntityManager;
  5. use ImageBundle\Service\ImageService;
  6. class KernelTerminateListener
  7. {
  8.     
  9.     private $em;
  10.     private $imageService;
  11.     
  12.     public function __construct(EntityManager $emImageService $imageService
  13.     {
  14.         $this->em $em;
  15.         $this->imageService $imageService;
  16.     }
  17.     public function onKernelTerminate(KernelEvent $event)
  18.     {
  19.         if (!$this->imageService->isCacheOptimizationEnabled()) {
  20.             return;
  21.         }
  22.         $request $event->getRequest();
  23.         try {
  24.             $routeName $request->get('_route');
  25.             if ("liip_imagine_filter" != $routeName) {
  26.                 return;
  27.             }
  28.             $path $request->getPathInfo();
  29.             $imageId $this->extractImageIdFromPath($path);
  30.             $filter $this->extractFilterFromPath($path);
  31.             if ($imageId && $filter) {
  32.                 $image $this->em->getRepository("ImageBundle:Image")->find($imageId);
  33.                 if ($image) {
  34.                     $cacheStatus json_decode($image->getCacheStatusJson(), true);
  35.                     if (!is_array($cacheStatus)) {
  36.                         $cacheStatus = [];
  37.                     }
  38.                     $cacheStatus[$filter] = true;
  39.                     $image->setCacheStatusJson(json_encode($cacheStatus));
  40.                     $this->em->flush();
  41.                 }
  42.             }
  43.         }
  44.         catch (\Exception $e) {}
  45.     }
  46.     protected function extractImageIdFromPath($path)
  47.     {
  48.         $parts explode("/"$path);
  49.         if (count($parts) < 2) {
  50.             return false;
  51.         }
  52.         $imageId $partscount($parts) - ];
  53.         return $imageId;
  54.     }
  55.     protected function extractFilterFromPath($path)
  56.     {
  57.         $parts explode("/"$path);
  58.         if (count($parts) < 3) {
  59.             return false;
  60.         }
  61.         $filter $partscount($parts) - ];
  62.         return $filter;
  63.     }
  64. }