diff --git a/Entity/Repository/UploadedFileRepository.php b/Entity/Repository/UploadedFileRepository.php index 4f538704471822d39cc2547cd7bf911222bb8ce0..fd55f6d599d297b5bc237e795e509bb7f3418b9b 100644 --- a/Entity/Repository/UploadedFileRepository.php +++ b/Entity/Repository/UploadedFileRepository.php @@ -11,6 +11,7 @@ use Doctrine\ORM\EntityRepository; use Gaufrette\Filesystem; use Irstea\FileUploadBundle\Entity\UploadedFile; use Irstea\FileUploadBundle\Event\FileUploadCompleteEvent; +use Irstea\FileUploadBundle\Exception\RejectedFileException; use Irstea\FileUploadBundle\FileUploadEvents; use Irstea\FileUploadBundle\Model\FileManagerInterface; use Irstea\FileUploadBundle\Model\UploadedFileInterface; @@ -105,12 +106,22 @@ class UploadedFileRepository extends EntityRepository implements FileManagerInte ->setMimeType($fs->mimeType($path)) ->setEtat(UploadedFileInterface::ETAT_ORPHELIN); - $this->eventDispatcher->dispatch(FileUploadEvents::UPLOAD_COMPLETE, new FileUploadCompleteEvent($file)); - $this->_em->persist($file); - $this->_em->flush(); - $this->log(LogLevel::INFO, 'File completed', ['file' => $file]); + try { + $this->eventDispatcher->dispatch(FileUploadEvents::UPLOAD_COMPLETE, new FileUploadCompleteEvent($file)); + + $this->_em->flush(); + $this->log(LogLevel::INFO, 'File completed', ['file' => $file]); + + } catch(RejectedFileException $ex) { + $file->setEtat(UploadedFileInterface::ETAT_REJETE); + + $this->_em->flush(); + $this->log(LogLevel::WARNING, 'File rejected', ['file' => $file, 'exception' => $ex]); + + throw $ex; + } } /**