2525use Doctrine \Common \EventSubscriber as DoctrineEventSubscriber ;
2626use Doctrine \ORM \EntityManagerInterface ;
2727use Doctrine \ORM \Event \LifecycleEventArgs ;
28+ use Doctrine \ORM \Event \ListenersInvoker ;
2829use Doctrine \ORM \Event \OnFlushEventArgs ;
2930use Doctrine \ORM \Event \PostFlushEventArgs ;
3031use Doctrine \ORM \Event \PreUpdateEventArgs ;
@@ -90,7 +91,8 @@ public function preUpdate(PreUpdateEventArgs $eventArgs): void
9091 {
9192 $ entity = $ eventArgs ->getObject ();
9293 $ entityManager = $ eventArgs ->getEntityManager ();
93- $ eventManager = $ entityManager ->getEventManager ();
94+ $ classMetadata = $ entityManager ->getClassMetadata (get_class ($ entity ));
95+ $ listenersInvoker = new ListenersInvoker ($ entityManager );
9496 $ connection = $ entityManager ->getConnection ();
9597 $ transactionNestingLevel = $ connection ->getTransactionNestingLevel ();
9698
@@ -99,14 +101,19 @@ public function preUpdate(PreUpdateEventArgs $eventArgs): void
99101
100102 $ eventArgs = new UpdateEventArgs ($ entity , $ originalEntity , $ entityManager );
101103
102- $ eventManager ->dispatchEvent (Events::preUpdateEnhanced, $ eventArgs );
104+ $ invoke = $ listenersInvoker ->getSubscribedSystems ($ classMetadata , Events::preUpdateEnhanced);
105+
106+ if ($ invoke !== ListenersInvoker::INVOKE_NONE ) {
107+ $ listenersInvoker ->invoke ($ classMetadata , Events::preUpdateEnhanced, $ entity , $ eventArgs , $ invoke );
108+ }
103109 }
104110
105111 public function postUpdate (LifecycleEventArgs $ eventArgs ): void
106112 {
107113 $ entity = $ eventArgs ->getObject ();
108114 $ entityManager = $ eventArgs ->getEntityManager ();
109- $ eventManager = $ entityManager ->getEventManager ();
115+ $ classMetadata = $ entityManager ->getClassMetadata (get_class ($ entity ));
116+ $ listenersInvoker = new ListenersInvoker ($ entityManager );
110117 $ connection = $ entityManager ->getConnection ();
111118 $ transactionNestingLevel = $ connection ->getTransactionNestingLevel ();
112119
@@ -115,7 +122,11 @@ public function postUpdate(LifecycleEventArgs $eventArgs): void
115122
116123 $ eventArgs = new UpdateEventArgs ($ entity , $ originalEntity , $ entityManager );
117124
118- $ eventManager ->dispatchEvent (Events::postUpdateEnhanced, $ eventArgs );
125+ $ invoke = $ listenersInvoker ->getSubscribedSystems ($ classMetadata , Events::postUpdateEnhanced);
126+
127+ if ($ invoke !== ListenersInvoker::INVOKE_NONE ) {
128+ $ listenersInvoker ->invoke ($ classMetadata , Events::postUpdateEnhanced, $ entity , $ eventArgs , $ invoke );
129+ }
119130 }
120131
121132 public function postFlush (PostFlushEventArgs $ eventArgs ): void
0 commit comments