/** * Collects array of ID keys * @return int[] */ public function collectIds() { //TODO: check if all elements are entities $ids = Entity::collectIds($this); return $ids; }
/** * @param Localization $localization * @return array */ private function getLocalizationData(Localization $localization) { $page = $localization->getMaster(); $allLocalizationData = array(); foreach ($page->getLocalizations() as $locale => $pageLocalization) { $allLocalizationData[$locale] = $pageLocalization->getId(); } $ancestorIds = Entity::collectIds($localization->getAncestors()); // abstract localization data $localizationData = array('root' => $page->isRoot(), 'tree_path' => $ancestorIds, 'locale' => $localization->getLocaleId(), 'localizations' => $allLocalizationData, 'lock' => $this->getLocalizationEditLockData($localization), 'is_visible_in_menu' => $localization->isVisibleInMenu(), 'is_visible_in_sitemap' => $localization->isVisibleInSitemap(), 'include_in_search' => $localization->isIncludedInSearch(), 'page_change_frequency' => $localization->getChangeFrequency(), 'page_priority' => $localization->getPagePriority(), 'internal_html' => null, 'contents' => array()); if ($localization instanceof PageLocalization) { $creationTime = $localization->getCreationTime(); $publicationSchedule = $localization->getScheduleTime(); $localizationData = array_replace($localizationData, array('keywords' => $localization->getMetaKeywords(), 'description' => $localization->getMetaDescription(), 'created_date' => $creationTime->format('Y-m-d'), 'created_time' => $creationTime->format('H:i:s'), 'scheduled_date' => $publicationSchedule ? $publicationSchedule->format('Y-m-d') : null, 'scheduled_time' => $publicationSchedule ? $publicationSchedule->format('H:i:s') : null, 'active' => $localization->isActive(), 'template' => array('id' => $localization->getTemplate()->getId(), 'title' => $localization->getTemplateLocalization()->getTitle()))); } elseif ($localization instanceof TemplateLocalization) { $layoutData = null; if ($page->hasLayout($this->getMedia())) { $layoutName = $page->getLayoutName($this->getMedia()); $layout = $this->getActiveTheme()->getLayout($layoutName); if ($layout !== null) { $layoutData = array('id' => $layout->getName(), 'title' => $layout->getTitle()); } } $localizationData = array_replace($localizationData, array('layouts' => $this->getActiveThemeLayoutsData(), 'layout' => $layoutData)); } return array_replace($this->loadNodeMainData($localization), $localizationData); }