![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/vendor/doctrine/data-fixtures/src/Executor/ |
<?php declare(strict_types=1); namespace Doctrine\Common\DataFixtures\Executor; use Doctrine\Common\DataFixtures\Event\Listener\ORMReferenceListener; use Doctrine\Common\DataFixtures\Purger\ORMPurgerInterface; use Doctrine\Common\DataFixtures\ReferenceRepository; use Doctrine\ORM\Decorator\EntityManagerDecorator; use Doctrine\ORM\EntityManager; use Doctrine\ORM\EntityManagerInterface; /** @internal */ trait ORMExecutorCommon { /** @var EntityManager|EntityManagerDecorator */ private EntityManagerInterface $em; private EntityManagerInterface $originalManager; private ORMReferenceListener $listener; public function __construct(EntityManagerInterface $em, ?ORMPurgerInterface $purger = null) { $this->originalManager = $em; // Make sure, wrapInTransaction() exists on the EM. // To be removed when dropping support for ORM 2 $this->em = $em instanceof EntityManager || $em instanceof EntityManagerDecorator ? $em : new class ($em) extends EntityManagerDecorator { }; if ($purger !== null) { $this->purger = $purger; $this->purger->setEntityManager($em); } parent::__construct($em); $this->listener = new ORMReferenceListener($this->referenceRepository); $em->getEventManager()->addEventSubscriber($this->listener); } /** * Retrieve the EntityManagerInterface instance this executor instance is using. * * @return EntityManagerInterface */ public function getObjectManager() { return $this->originalManager; } /** @inheritDoc */ public function setReferenceRepository(ReferenceRepository $referenceRepository) { $this->em->getEventManager()->removeEventListener( $this->listener->getSubscribedEvents(), $this->listener, ); parent::setReferenceRepository($referenceRepository); $this->listener = new ORMReferenceListener($this->referenceRepository); $this->em->getEventManager()->addEventSubscriber($this->listener); } }