src/Package/MediaThumbable/Tools/ThumbGenerator/ThumbGeneratorSubscriber.php line 58

Open in your IDE?
  1. <?php
  2. namespace App\Package\MediaThumbable\Tools\ThumbGenerator;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use App\Package\MediaThumbable\Tools\ThumbGenerator\ThumbGenerator,
  5.     App\Package\Admin\Main\Event\EntityUpdateEvent,
  6.     App\Package\Core\EntityInterface\SimpleEntityInterface;
  7. /**
  8.  * ThumbGeneratorSubscriber
  9.  * 
  10.  * Subscriber which listens for entity update event (created or updated)
  11.  * - if entity has thumbs then processes image path field and either generates, 
  12.  *   removes thumbs or calls "generateThumbs" function from entity (passes
  13.  *   ThumbGenerator object as argument of "generateThumbs")
  14.  * 
  15.  * @author     Daniel Balowski <d.balowski@openform.pl> (_creator)
  16.  * @copyright  Openform
  17.  * @since      03.2019
  18.  */
  19. class ThumbGeneratorSubscriber implements EventSubscriberInterface
  20. {
  21.     /**
  22.      * @var ThumbGenerator
  23.      */
  24.     protected $thumbGenerator;
  25.     /**
  26.      * @param ThumbGenerator  $thumbGenerator
  27.      */
  28.     public function __construct(ThumbGenerator $thumbGenerator)
  29.     {
  30.         $this->thumbGenerator $thumbGenerator;
  31.     }
  32.     /**
  33.      * @return array
  34.      */
  35.     public static function getSubscribedEvents() : array
  36.     {
  37.         return [
  38.             EntityUpdateEvent::NAME => [
  39.                 [ 'onEntityUpdate'800 ],
  40.             ]
  41.         ];
  42.     }
  43.     /**
  44.      * On entity update event
  45.      *
  46.      * @param EntityUpdateEvent  $event
  47.      * 
  48.      * @return void
  49.      */
  50.     public function onEntityUpdate(EntityUpdateEvent $event) : void
  51.     {
  52.         $entity $event->getUpdatedEntity();
  53.         $this->processGenerateThumbs$entity );
  54.         return;
  55.     }
  56.     /**
  57.      * Processes generate thumbs for entity
  58.      *
  59.      * @param SimpleEntityInterface  $entity
  60.      * 
  61.      * @return void
  62.      */
  63.     protected function processGenerateThumbs(SimpleEntityInterface $entity) : void
  64.     {
  65.         if (method_exists($entity'generateThumbs')) {
  66.             $entity->generateThumbs$this->thumbGenerator );
  67.             return;
  68.         }
  69.         if (! method_exists($entity'getThumb')) {
  70.             return;
  71.         }
  72.         if (
  73.             $entity->getImagePath() &&
  74.             $entity->getOldImagePath() !== $entity->getImagePath()
  75.         ) {
  76.             $this->thumbGenerator->generate(
  77.                 $entity,
  78.                 $entity->getThumb(),
  79.                 'getImagePath'
  80.             );
  81.             
  82.             return;
  83.         }
  84.         if (! $entity->getImagePath()) {
  85.             $this->thumbGenerator->removeThumbs($entity);
  86.         }
  87.         return;
  88.     }
  89. }