Пример #1
0
 /**
  * create a copy of a given page object in a given locale
  *
  * @param $page
  * @param $locale
  * @return \Networking\InitCmsBundle\Model\Page
  */
 public function makeTranslationCopy(PageInterface $page, $locale)
 {
     if ($this->getParameter('networking_init_cms.db_driver') == 'orm') {
         /** @var \Doctrine\Common\Persistence\ObjectManager $em */
         $em = $this->getService('doctrine')->getManager();
     } else {
         /** @var \Doctrine\Common\Persistence\ObjectManager $em */
         $em = $this->getService('doctrine_mongodb')->getManager();
     }
     /** @var \Networking\InitCmsBundle\Model\PageManagerInterface $pageManger */
     $pageManger = $this->getService('networking_init_cms.page_manager');
     $pageClass = $pageManger->getClassName();
     /** @var PageInterface $pageCopy */
     $pageCopy = new $pageClass();
     $pageCopy->setPageName($page->getPageName());
     $pageCopy->setMetaTitle($page->getMetaTitle());
     $pageCopy->setUrl($page->getUrl());
     $pageCopy->setMetaKeyword($page->getMetaKeyword());
     $pageCopy->setMetaDescription($page->getMetaDescription());
     $pageCopy->setActiveFrom($page->getActiveFrom());
     $pageCopy->setIsHome($page->getIsHome());
     $pageCopy->setLocale($locale);
     $pageCopy->setTemplateName($page->getTemplateName());
     $pageCopy->setOriginal($page);
     $layoutBlocks = $page->getLayoutBlock();
     foreach ($layoutBlocks as $layoutBlock) {
         /** @var $newLayoutBlock \Networking\InitCmsBundle\Model\LayoutBlockInterface */
         $newLayoutBlock = clone $layoutBlock;
         $content = $em->getRepository($newLayoutBlock->getClassType())->find($newLayoutBlock->getObjectId());
         $newContent = clone $content;
         $em->persist($newContent);
         $em->flush();
         $newLayoutBlock->setObjectId($newContent->getId());
         $newLayoutBlock->setPage($pageCopy);
         $em->persist($newLayoutBlock);
     }
     $em->persist($pageCopy);
     $em->flush();
     return $pageCopy;
 }