/** * {@inheritdoc} */ public function loadSnapshots(SiteInterface $site) { $now = new \Datetime(); $query = $this->getEntityManager()->createQuery(sprintf(' SELECT s,p FROM %s s INNER JOIN s.page p WHERE s.enabled = 1 AND s.site = %d AND s.publicationDateStart <= \'%s\' AND ( s.publicationDateEnd IS NULL OR s.publicationDateEnd >= \'%s\' ) ORDER BY s.position ASC ', $this->class, $site->getId(), $now->format('Y-m-d H:i:s'), $now->format('Y-m-d H:i:s'))); $query->setHint(\Gedmo\Translatable\TranslatableListener::HINT_INNER_JOIN, true); $query->setHint(\Doctrine\ORM\Query::HINT_CUSTOM_OUTPUT_WALKER, 'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker'); $query->setHint(\Gedmo\Translatable\TranslatableListener::HINT_TRANSLATABLE_LOCALE, $site->getLocale()); $snapshots = array(); foreach ($query->execute() as $snap) { $snapshots[$snap->getPage()->getId()] = $snap; } $this->snapshots = $snapshots; }
/** * {@inheritdoc} */ public function loadPages(SiteInterface $site) { $query = $this->getEntityManager()->createQuery(sprintf('SELECT p FROM %s p INDEX BY p.id WHERE p.site = %d ORDER BY p.position ASC', $this->class, $site->getId())); $query->setHint(\Doctrine\ORM\Query::HINT_CUSTOM_OUTPUT_WALKER, 'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker'); $query->setHint(\Gedmo\Translatable\TranslatableListener::HINT_TRANSLATABLE_LOCALE, $site->getLocale()); $pages = $query->execute(); foreach ($pages as $page) { $parent = $page->getParent(); $page->disableChildrenLazyLoading(); if (!$parent) { continue; } $pages[$parent->getId()]->disableChildrenLazyLoading(); //$pages[$parent->getId()]->addChildren($page); } return $pages; }