FileRemovalListener.php (1373B)
1 <?php 2 3 namespace PartKeepr\UploadedFileBundle\EventListener; 4 5 use Doctrine\Common\Annotations\Reader; 6 use Doctrine\ORM\Event\OnFlushEventArgs; 7 use PartKeepr\ImageBundle\Services\ImageService; 8 use PartKeepr\UploadedFileBundle\Entity\UploadedFile; 9 use PartKeepr\UploadedFileBundle\Services\UploadedFileService; 10 use Symfony\Component\PropertyAccess\PropertyAccessorInterface; 11 12 class FileRemovalListener 13 { 14 /** 15 * @var UploadedFileService 16 */ 17 private $uploadedFileService; 18 19 /** 20 * @var ImageService 21 */ 22 private $imageService; 23 24 /** 25 * @var Reader 26 */ 27 private $reader; 28 29 /** 30 * @var PropertyAccessorInterface 31 */ 32 private $propertyAccessor; 33 34 public function __construct( 35 UploadedFileService $uploadedFileService, 36 Reader $reader, 37 PropertyAccessorInterface $propertyAccessor 38 ) { 39 $this->uploadedFileService = $uploadedFileService; 40 $this->reader = $reader; 41 $this->propertyAccessor = $propertyAccessor; 42 } 43 44 public function onFlush(OnFlushEventArgs $eventArgs) 45 { 46 $em = $eventArgs->getEntityManager(); 47 $uow = $em->getUnitOfWork(); 48 foreach ($uow->getScheduledEntityDeletions() as $entity) { 49 if ($entity instanceof UploadedFile) { 50 $this->uploadedFileService->delete($entity); 51 } 52 } 53 } 54 }