/** * @param DeepCloneAndSaveEvent $event */ public function postDeepCloneAndSave(DeepCloneAndSaveEvent $event) { $originalEntity = $event->getEntity(); if ($originalEntity instanceof HasPagePartsInterface) { $clonedEntity = $event->getClonedEntity(); $contexts = $this->pagePartReader->getPagePartContexts($originalEntity); foreach ($contexts as $context) { $this->em->getRepository('KunstmaanPagePartBundle:PagePartRef')->copyPageParts($this->em, $originalEntity, $clonedEntity, $context); } } if ($originalEntity instanceof HasPageTemplateInterface) { $clonedEntity = $event->getClonedEntity(); $newPageTemplateConfiguration = clone $this->pageTemplateConfiguratiorService->findOrCreateFor($originalEntity); $newPageTemplateConfiguration->setId(null); $newPageTemplateConfiguration->setPageId($clonedEntity->getId()); $this->em->persist($newPageTemplateConfiguration); } }
/** * @param HasPageTemplateInterface $page * @param Request $request * @param EntityManagerInterface $em * @param PagePartAdminFactory $pagePartAdminFactory * @param PageTemplateConfigurationReaderInterface $templateReader * @param PagePartConfigurationReaderInterface $pagePartReader * @param PageTemplateConfigurationService $pageTemplateConfiguratiorService */ public function __construct(HasPageTemplateInterface $page, Request $request, EntityManagerInterface $em, PagePartAdminFactory $pagePartAdminFactory, PageTemplateConfigurationReaderInterface $templateReader, PagePartConfigurationReaderInterface $pagePartReader, PageTemplateConfigurationService $pageTemplateConfiguratiorService) { parent::__construct(); $this->page = $page; $this->em = $em; $this->request = $request; $this->pagePartAdminFactory = $pagePartAdminFactory; $this->pageTemplates = $templateReader->getPageTemplates($page); $this->pagePartAdminConfigurations = $pagePartReader->getPagePartAdminConfigurators($page); $this->pageTemplateConfiguration = $pageTemplateConfiguratiorService->findOrCreateFor($page); foreach ($this->getPageTemplate()->getRows() as $row) { foreach ($row->getRegions() as $region) { $this->processRegion($region); } } }
/** * @param HasPageTemplateInterface $page The page * * @return string */ public function getPageTemplate(HasPageTemplateInterface $page) { return $this->templateConfiguration->findOrCreateFor($page)->getPageTemplate(); }