src/EventListener/UploadableImageListener.php line 63

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Doctrine\ORM\Event\LifecycleEventArgs;
  4. use Vich\UploaderBundle\Templating\Helper\UploaderHelper;
  5. use App\Entity\Utils\IUploadableImage;
  6. use Vich\UploaderBundle\Event\Event as VichEvent;
  7. use App\Service\Image\ImageManager;
  8. use App\Service\Utils\DataMapping;
  9. class UploadableImageListener
  10. {
  11.     private $uploaderHelper;
  12.     private $imageManager;
  13.     private $dataMapping;
  14.     public function __construct(
  15.         UploaderHelper $uploaderHelper,
  16.         ImageManager $imageManager,
  17.         DataMapping $dataMapping
  18.     ) {
  19.         $this->uploaderHelper $uploaderHelper;
  20.         $this->imageManager $imageManager;
  21.         $this->dataMapping $dataMapping;
  22.     }
  23.     public function prePersist(LifecycleEventArgs $args)
  24.     {
  25.         $this->persistUrl($args);
  26.     }
  27.     public function preUpdate(LifecycleEventArgs $args)
  28.     {
  29.         $this->persistUrl($args);
  30.     }
  31.     private function persistUrl(LifecycleEventArgs $args)
  32.     {
  33.         $this->setImageUrl($args);
  34.         $this->setPictoUrl($args);
  35.     }
  36.     private function setImageUrl(LifecycleEventArgs $args)
  37.     {
  38.         $entity $args->getObject();
  39.         if ($entity instanceof IUploadableImage && property_exists($entity'imageName')) {
  40.             $path $this->uploaderHelper->asset($entity'imageFile');
  41.             $entity->setImageUrl($path);
  42.         }
  43.     }
  44.     private function setPictoUrl(LifecycleEventArgs $args)
  45.     {
  46.         $entity $args->getObject();
  47.         if ($entity instanceof IUploadableImage && property_exists($entity'pictoName')) {
  48.             $path $this->uploaderHelper->asset($entity'pictoFile');
  49.             $entity->setPictoUrl($path);
  50.         }
  51.     }
  52.     public function onVichuploaderPostupload(VichEvent $event)
  53.     {
  54.         $object $event->getObject();
  55.         $mapping $event->getMapping();
  56.         if (!$object instanceof IUploadableImage) {
  57.             return;
  58.         }
  59.         $fileFromMapping $this->dataMapping->getFullPathFile($object$mapping);
  60.         $this->imageManager->convertImage($fileFromMapping);
  61.     }
  62. }