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

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.     /**
  31.      * @param DeepCloneAndSaveEvent $event
  32.      */
  33.     public function postDeepCloneAndSave(DeepCloneAndSaveEvent $event)
  34.     {
  35.         $originalEntity $event->getEntity();
  36.         if ($originalEntity instanceof AbstractEntity) {
  37.             /* @var Seo $seo */
  38.             $seo $this->em->getRepository('KunstmaanSeoBundle:Seo')->findFor($originalEntity);
  39.             if (!\is_null($seo)) {
  40.                 /* @var Seo $clonedSeo */
  41.                 $clonedSeo $this->cloneHelper->deepCloneAndSave($seo);
  42.                 $clonedSeo->setRef($event->getClonedEntity());
  43.                 $this->em->persist($clonedSeo);
  44.                 $this->em->flush($clonedSeo);
  45.             }
  46.         }
  47.     }
  48. }