source/Io/Input/MaterialUploadSubscriber.php line 38

Open in your IDE?
  1. <?php
  2. namespace App\Io\Input;
  3. use App\Domain\Model\Filemanagement\AdditionalMaterial;
  4. use App\Domain\Model\Study\Experiment;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Oneup\UploaderBundle\Event\PostUploadEvent;
  7. use Oneup\UploaderBundle\UploadEvents;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. class MaterialUploadSubscriber implements EventSubscriberInterface
  10. {
  11.     private EntityManagerInterface $em;
  12.     /**
  13.      * @param EntityManagerInterface $em
  14.      */
  15.     public function __construct(EntityManagerInterface $em)
  16.     {
  17.         $this->em $em;
  18.     }
  19.     public static function getSubscribedEvents()
  20.     {
  21.         return [
  22.             UploadEvents::postUpload('materials') => ['onMaterialPostUpload'],
  23.         ];
  24.     }
  25.     /**
  26.      * @param PostUploadEvent $event
  27.      *
  28.      * Every time a file is uploaded we want to save the metadata about this file
  29.      */
  30.     public function onMaterialPostUpload(PostUploadEvent $event)
  31.     {
  32.         $experiment $this->em->getRepository(Experiment::class)->find($event->getRequest()->get('studyId'));
  33.         $entity AdditionalMaterial::createMaterial(
  34.             $event->getRequest()->get('originalFilename'),
  35.             $event->getFile()->getBasename(),
  36.             $event->getFile()->getSize(),
  37.             $event->getFile()->getMimeType(),
  38.             $experiment
  39.         );
  40.         $this->em->persist($entity);
  41.         $this->em->flush();
  42.     }
  43. }