/** * Imports website object from array * (see WebsiteImporter for structure and description). * * @param array $data * @param $rootPath * @param $test * * @return Website */ public function importWebsite(array $data, $rootPath, $test = false) { $website = new Website($test); if (isset($data['data'])) { $websiteData = $data['data']; $websiteOptions = new WebsiteOptions(); $websiteOptions->setWebsite($website); $website->setOptions($websiteOptions); $websitePagesMap = array(); foreach ($websiteData['pages'] as $websitePage) { $entityWebsitePage = new WebsitePage(); $entityWebsitePage->setWebsite($website); $entityWebsitePage->importFromArray($websitePage, $rootPath); if ($websitePage['is_root']) { $website->setRoot($entityWebsitePage); $this->om->persist($website); //$this->websitePageRepository->persistAsFirstChild($entityWebsitePage); } else { $entityWebsitePageParent = $websitePagesMap[$websitePage['parent_id']]; $entityWebsitePage->setParent($entityWebsitePageParent); $this->websitePageRepository->persistAsLastChildOf($entityWebsitePage, $entityWebsitePageParent); } if ($websitePage['is_homepage']) { $website->setHomePage($entityWebsitePage); } $websitePagesMap[$websitePage['id']] = $entityWebsitePage; } $this->om->flush(); $websiteOptions->importFromArray($this->webDir, $websiteData['options'], $rootPath); } return $website; }
/** * @ORM\PrePersist */ public function createOptionsAndRoot(LifecycleEventArgs $event) { $em = $event->getEntityManager(); $rootPage = $this->getRoot(); $options = $this->getOptions(); if ($rootPage == null) { $rootPage = new WebsitePage(); $rootPage->setWebsite($this); $rootPage->setIsSection(true); $rootPage->setTitle($this->getResourceNode()->getName()); $rootPage->setType(WebsitePageTypeEnum::ROOT_PAGE); $this->setRoot($rootPage); } if ($rootPage->getId() == null) { $em->getRepository('IcapWebsiteBundle:WebsitePage')->persistAsFirstChild($rootPage); } if ($options == null) { $options = new WebsiteOptions(); $options->setWebsite($this); $this->setOptions($options); } if ($options->getId() == null) { $em->persist($options); } /*if ($rootPage != null || $options != null) { $em->flush(); }*/ }
/** * @param Website $website * @param WebsitePage $parentPage * * @return \Icap\WebsiteBundle\Entity\WebsitePage */ public function createEmptyPage(Website $website, WebsitePage $parentPage) { $newPage = new WebsitePage(); $newPage->setWebsite($website); $newPage->setParent($parentPage); return $newPage; }