/**
  * @param PageLocalization $localization
  * @return array
  */
 private function getPageLocalizationData(PageLocalization $localization)
 {
     $template = $localization->getTemplate();
     $currentRevision = $this->getAuditReader()->getCurrentRevision($localization::CN(), $localization->getId());
     $publishedLocalization = $this->findLocalizationPublishedVersion($localization);
     // @TODO: add to int cast inside AuditReader.
     $isLatestVersionPublished = $localization->isPublished() && $localization->getPublishedRevision() === (int) $currentRevision;
     // main data
     $localizationData = array('template' => $template->getId(), 'scheduled' => $localization->getScheduleTime() !== null, 'path' => $localization->getPathPart(), 'full_path' => (string) $localization->getFullPath(), 'date' => $localization->getCreationTime()->format('Y-m-d'), 'active' => $publishedLocalization ? $publishedLocalization->isActive() : $localization->isActive(), 'published' => $localization->isPublished(), 'published_latest' => $isLatestVersionPublished);
     // redirect data
     $localizationData = array_merge($localizationData, $this->getPageLocalizationRedirectData($localization));
     // additional data for Application Page Localization
     if ($localization instanceof ApplicationLocalization) {
         $localizationData = array_merge($localizationData, $this->getApplicationPageLocalizationData($localization));
     }
     //		$applicationBasePath = new Path('');
     //		if ($localization instanceof Entity\PageLocalization) {
     //			if ( ! $page->isRoot()) {
     //				$parentPage = $page->getParent();
     //				$parentLocalization = $parentPage->getLocalization($locale);
     //
     //				if ( ! is_null($parentLocalization) && $parentPage instanceof Entity\ApplicationPage) {
     //
     //					$applicationId = $parentPage->getApplicationId();
     //					$application = PageApplicationCollection::getInstance()
     //							->createApplication($parentLocalization, $this->entityManager);
     //
     //					if (empty($application)) {
     //						throw new CmsException(null, "Application '$applicationId' was not found");
     //					}
     //
     //					$applicationBasePath = $application->generatePath($data);
     //				}
     //			}
     //		}
     // No public stuff for group/temporary pages
     //		if ( ! $localization instanceof Entity\GroupLocalization) {
     //			$localizationId = $data->getId();
     //			// FIXME: causes "N" queries for "N" pages loaded in sitemap. Bad.
     //			$publicLocalization = $publicEm->find(Localization::CN(), $localizationId);
     //		}
     // Additional base path received from application
     //		$array['basePath'] = $applicationBasePath->getFullPath(Path::FORMAT_RIGHT_DELIMITER);
     return $localizationData;
     //		$localizationCount = $page->getLocalizations()->count();
     //		$array['localization_count'] = $localizationCount;
 }
Beispiel #2
0
 /**
  * @param PageLocalization $localization
  * @return Set\PageSet
  */
 protected function getPageTemplateHierarchy(PageLocalization $localization)
 {
     $template = $localization->getTemplate();
     $page = $localization->getPage();
     if (empty($template)) {
         throw new RuntimeException("No template assigned to the page {$localization->getId()}");
     }
     $pageSet = $this->getTemplateTemplateHierarchy($template);
     $pageSet[] = $page;
     return $pageSet;
 }