src/App/EventListener/ImagesUploadListener.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\Central\Storage\Image;
  4. use App\Entity\ImagesAwareInterface;
  5. use App\Service\Uploader\ImageUploader;
  6. use Symfony\Component\EventDispatcher\GenericEvent;
  7. use Webmozart\Assert\Assert;
  8. class ImagesUploadListener
  9. {
  10.     /** @var ImageUploader */
  11.     private $uploader;
  12.     public function __construct(ImageUploader $uploader)
  13.     {
  14.         $this->uploader $uploader;
  15.     }
  16.     public function uploadImages(GenericEvent $event): void
  17.     {
  18.         $subject $event->getSubject();
  19.         Assert::isInstanceOf($subjectImagesAwareInterface::class);
  20.         $this->uploadSubjectImages($subject);
  21.     }
  22.     public function uploadImage(GenericEvent $event): void
  23.     {
  24.         $image $event->getSubject();
  25.         Assert::isInstanceOf($imageImage::class);
  26.         if ($image->hasFile()) {
  27.             $this->uploader->upload($image);
  28.         }
  29.     }
  30.     private function uploadSubjectImages(ImagesAwareInterface $subject): void
  31.     {
  32.         $images $subject->getImages();
  33.         foreach ($images as $image) {
  34.             if ($image->hasFile()) {
  35.                 $this->uploader->upload($image);
  36.             } elseif($image->getBase64() !== null){
  37.                 $this->uploader->uploadBase64($image);
  38.             }
  39.             // Upload failed? Let's remove that image.
  40.             if (null === $image->getPath()) {
  41.                 $images->removeElement($image);
  42.             }
  43.         }
  44.     }
  45. }