src/EventSubscriber/ImgUploaderSubscriber.php line 12

  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\Creative;
  4. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  5. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. class ImgUploaderSubscriber implements EventSubscriberInterface
  8. {
  9.     public function onBeforeEntityPersistedEvent(BeforeEntityPersistedEvent $event): void
  10.     {
  11.         $creative $event->getEntityInstance();
  12.         if (!$creative instanceof Creative) {
  13.             return;
  14.         }
  15.         $imageUrl '../public/uploads/creatives/' $event->getEntityInstance()->getPath();
  16.         $data getimagesize($imageUrl$info);
  17.         $bytes $this->formatSizeUnits(filesize($imageUrl));
  18.         $creative->setSize($data[0] . 'x' $data[1]);
  19.         $creative->setFilesize($bytes);
  20.     }
  21.     public function onBeforeEntityUpdatedEvent(BeforeEntityUpdatedEvent $event): void
  22.     {
  23.         $creative $event->getEntityInstance();
  24.         if (!$creative instanceof Creative) {
  25.             return;
  26.         }
  27.         $imageUrl '../public/uploads/creatives/' $event->getEntityInstance()->getPath();
  28.         $data getimagesize($imageUrl$info);
  29.         $bytes $this->formatSizeUnits(filesize($imageUrl));
  30.         $creative->setSize($data[0] . 'x' $data[1]);
  31.         $creative->setFilesize($bytes);
  32.     }
  33.     public static function getSubscribedEvents(): array
  34.     {
  35.         return [
  36.             BeforeEntityPersistedEvent::class => 'onBeforeEntityPersistedEvent',
  37.             BeforeEntityUpdatedEvent::class   => 'onBeforeEntityUpdatedEvent',
  38.         ];
  39.     }
  40.     private function formatSizeUnits($bytes): string
  41.     {
  42.         if ($bytes >= 1073741824) {
  43.             $bytes number_format($bytes 10737418242) . ' GB';
  44.         } elseif ($bytes >= 1048576) {
  45.             $bytes number_format($bytes 10485762) . ' MB';
  46.         } elseif ($bytes >= 1024) {
  47.             $bytes number_format($bytes 10242) . ' KB';
  48.         } elseif ($bytes 1) {
  49.             $bytes $bytes ' bytes';
  50.         } elseif ($bytes == 1) {
  51.             $bytes $bytes ' byte';
  52.         } else {
  53.             $bytes '0 bytes';
  54.         }
  55.         return $bytes;
  56.     }
  57. }