Networking\InitCmsBundle\Helper\PageHelper::makeTranslationCopy PHP Метод

makeTranslationCopy() публичный Метод

create a copy of a given page object in a given locale
public makeTranslationCopy ( Networking\InitCmsBundle\Model\PageInterface $page, $locale ) : Page
$page Networking\InitCmsBundle\Model\PageInterface
$locale
Результат 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;
    }