src/Subscriber/Content/ImagesetImageSubscriber.php line 67

Open in your IDE?
  1. <?php
  2. namespace App\Subscriber\Content;
  3. use App\Event\Content\ImagesetImageDeleteEvent;
  4. use App\Service\Content\ImagesetService;
  5. use Liip\ImagineBundle\Service\FilterService;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. class ImagesetImageSubscriber implements EventSubscriberInterface
  8. {
  9.     protected ImagesetService $imagesetService;
  10.     /**
  11.      * @var string[]
  12.      */
  13.     protected array $filters = [
  14.         'photos',
  15.         'thumbs',
  16.     ];
  17.     protected FilterService $filterService;
  18.     /**
  19.      * ImagesetImageSubscriber constructor.
  20.      */
  21.     public function __construct(ImagesetService $imagesetServiceFilterService $filterService)
  22.     {
  23.         $this->imagesetService $imagesetService;
  24.         $this->filterService $filterService;
  25.     }
  26.     public static function getSubscribedEvents(): array
  27.     {
  28.         return [
  29.             ImagesetImageDeleteEvent::class => [
  30.                 ['onImageDeletedRemoveFiles'0],
  31.                 ['onImageDeletedBustCache'0],
  32.                 ['onImageDeletedRecuceNumberOfPicsFlag'1],
  33.             ],
  34.         ];
  35.     }
  36.     /**
  37.      * @throws \Doctrine\ORM\ORMException
  38.      * @throws \Doctrine\ORM\OptimisticLockException
  39.      */
  40.     public function onImageDeletedRecuceNumberOfPicsFlag(ImagesetImageDeleteEvent $event)
  41.     {
  42.         $imageset $event->getEntity()->getContentImageset();
  43.         $imageset->setPics($imageset->getPics() - 1);
  44.         $this->imagesetService->storeEntity($imageset);
  45.     }
  46.     public function onImageDeletedRemoveFiles(ImagesetImageDeleteEvent $event)
  47.     {
  48.         $image $event->getEntity();
  49.         $content $image->getContentImageset()->getContent();
  50.         $largeFile $this->imagesetService->getSourceFile($content->getId(), $image->getId());
  51.         if (is_file($largeFile)) {
  52.             unlink($largeFile);
  53.         }
  54.         $this->imagesetService->deleteImageFiltersInStorage($image);
  55.     }
  56.     public function onImageDeletedBustCache(ImagesetImageDeleteEvent $event)
  57.     {
  58.         $image $event->getEntity();
  59.         foreach ($this->filters as $filter) {
  60.             $this->imagesetService->bustCacheForImagesetImage($image$filter);
  61.         }
  62.     }
  63. }