<?php
namespace DW\GingerBundle\Import\EventSubscriber;
use Doctrine\ORM\EntityManagerInterface;
use DW\GingerBundle\Import\Entity\FileImport;
use DW\GingerBundle\Import\Event\FileRemovedEvent;
use DW\GingerBundle\Import\Storage\FileManager;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class StorageSubscriber implements EventSubscriberInterface
{
/**
* @var EntityManagerInterface
*/
protected $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents()
{
return [
FileRemovedEvent::NAME => 'clearFileImport',
];
}
/**
* Remove linked file import.
*
* @param FileRemovedEvent $event
*
* @return void
*/
public function clearFileImport(FileRemovedEvent $event)
{
if ($event->getSource() !== FileManager::IMPORT_STORAGE) {
return;
}
$fileImport = $this->entityManager
->getRepository(FileImport::class)
->findOneByUploadUID($event->getFilename())
;
if (!$fileImport instanceof FileImport) {
return;
}
$this->entityManager->remove($fileImport);
$this->entityManager->flush();
}
}