diff --git a/public/uploads/post/2021/20210317-035213ovh_feu1.jpg b/public/uploads/post/2021/20210317-035213ovh_feu1.jpg deleted file mode 100644 index 0e4e0e8..0000000 Binary files a/public/uploads/post/2021/20210317-035213ovh_feu1.jpg and /dev/null differ diff --git a/src/Event/EntityManager/EntityManagerEvent.php b/src/Event/EntityManager/EntityManagerEvent.php index 29cf9e3..b7a3518 100644 --- a/src/Event/EntityManager/EntityManagerEvent.php +++ b/src/Event/EntityManager/EntityManagerEvent.php @@ -15,6 +15,9 @@ class EntityManagerEvent extends Event const CREATE_EVENT = 'entity_manager_event.create'; const UPDATE_EVENT = 'entity_manager_event.update'; const DELETE_EVENT = 'entity_manager_event.delete'; + const PRE_CREATE_EVENT = 'entity_manager_event.pre_create'; + const PRE_UPDATE_EVENT = 'entity_manager_event.pre_update'; + const PRE_DELETE_EVENT = 'entity_manager_event.pre_delete'; protected EntityInterface $entity; diff --git a/src/EventSuscriber/BlogPostEventSubscriber.php b/src/EventSuscriber/BlogPostEventSubscriber.php index f653f83..d38dbf3 100644 --- a/src/EventSuscriber/BlogPostEventSubscriber.php +++ b/src/EventSuscriber/BlogPostEventSubscriber.php @@ -15,7 +15,7 @@ use Symfony\Component\Finder\Finder; * * @author Simon Vieille */ -class BlogPostEventSubscriber implements EventSubscriberInterface +class BlogPostEventSubscriber extends EntityManagerEventSubscriber { protected Filesystem $filesystem; protected PostRepositoryQuery $query; @@ -26,14 +26,6 @@ class BlogPostEventSubscriber implements EventSubscriberInterface $this->query = $query; } - public static function getSubscribedEvents() - { - return [ - EntityManagerEvent::UPDATE_EVENT => 'onUpdate', - EntityManagerEvent::DELETE_EVENT => 'onDelete', - ]; - } - public function support(EntityInterface $entity) { return $entity instanceof Post; diff --git a/src/EventSuscriber/EntityManagerEventSubscriber.php b/src/EventSuscriber/EntityManagerEventSubscriber.php index ef819f1..856360d 100644 --- a/src/EventSuscriber/EntityManagerEventSubscriber.php +++ b/src/EventSuscriber/EntityManagerEventSubscriber.php @@ -10,18 +10,17 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface; * * @author Simon Vieille */ -class EntityManagerEventSubscriber implements EventSubscriberInterface +abstract class EntityManagerEventSubscriber implements EventSubscriberInterface { - public function __construct() - { - } - public static function getSubscribedEvents() { return [ EntityManagerEvent::CREATE_EVENT => 'onCreate', EntityManagerEvent::UPDATE_EVENT => 'onUpdate', EntityManagerEvent::DELETE_EVENT => 'onDelete', + EntityManagerEvent::PRE_CREATE_EVENT => 'onPreCreate', + EntityManagerEvent::PRE_UPDATE_EVENT => 'onPreUpdate', + EntityManagerEvent::PRE_DELETE_EVENT => 'onPreDelete', ]; } @@ -36,4 +35,16 @@ class EntityManagerEventSubscriber implements EventSubscriberInterface public function onDelete(EntityManagerEvent $event) { } + + public function onPreCreate(EntityManagerEvent $event) + { + } + + public function onPreUpdate(EntityManagerEvent $event) + { + } + + public function onPreDelete(EntityManagerEvent $event) + { + } } diff --git a/src/Manager/EntityManager.php b/src/Manager/EntityManager.php index 8216aab..cad899f 100644 --- a/src/Manager/EntityManager.php +++ b/src/Manager/EntityManager.php @@ -27,7 +27,10 @@ class EntityManager public function create(EntityInterface $entity): self { + $this->eventDispatcher->dispatch(new EntityManagerEvent($entity), EntityManagerEvent::PRE_CREATE_EVENT); + $this->persist($entity); + $this->eventDispatcher->dispatch(new EntityManagerEvent($entity), EntityManagerEvent::CREATE_EVENT); return $this; @@ -35,7 +38,10 @@ class EntityManager public function update(EntityInterface $entity): self { + $this->eventDispatcher->dispatch(new EntityManagerEvent($entity), EntityManagerEvent::PRE_UPDATE_EVENT); + $this->persist($entity); + $this->eventDispatcher->dispatch(new EntityManagerEvent($entity), EntityManagerEvent::UPDATE_EVENT); return $this; @@ -43,6 +49,8 @@ class EntityManager public function delete(EntityInterface $entity): self { + $this->eventDispatcher->dispatch(new EntityManagerEvent($entity), EntityManagerEvent::PRE_DELETE_EVENT); + $this->entityManager->remove($entity); $this->flush();