vendor/kunstmaan/seo-bundle/EventListener/CloneListener.php line 36

Open in your IDE?
  1. <?php
  2. namespace Kunstmaan\SeoBundle\EventListener;
  3. use Doctrine\ORM\EntityManager;
  4. use Kunstmaan\AdminBundle\Entity\AbstractEntity;
  5. use Kunstmaan\AdminBundle\Event\DeepCloneAndSaveEvent;
  6. use Kunstmaan\AdminBundle\Helper\CloneHelper;
  7. use Kunstmaan\SeoBundle\Entity\Seo;
  8. /**
  9.  * This event will make sure the seo metadata is copied when a page is cloned
  10.  */
  11. class CloneListener
  12. {
  13.     /**
  14.      * @var EntityManager
  15.      */
  16.     private $em;
  17.     /**
  18.      * @var CloneHelper
  19.      */
  20.     private $cloneHelper;
  21.     /**
  22.      * @param EntityManager $em          The entity manager
  23.      * @param CloneHelper   $cloneHelper The clone helper
  24.      */
  25.     public function __construct(EntityManager $emCloneHelper $cloneHelper)
  26.     {
  27.         $this->em $em;
  28.         $this->cloneHelper $cloneHelper;
  29.     }
  30.     public function postDeepCloneAndSave(DeepCloneAndSaveEvent $event)
  31.     {
  32.         $originalEntity $event->getEntity();
  33.         if ($originalEntity instanceof AbstractEntity) {
  34.             /* @var Seo $seo */
  35.             $seo $this->em->getRepository(Seo::class)->findFor($originalEntity);
  36.             if (!\is_null($seo)) {
  37.                 /* @var Seo $clonedSeo */
  38.                 $clonedSeo $this->cloneHelper->deepCloneAndSave($seo);
  39.                 $clonedSeo->setRef($event->getClonedEntity());
  40.                 $this->em->persist($clonedSeo);
  41.                 $this->em->flush();
  42.             }
  43.         }
  44.     }
  45. }