public function getAncestors(Page $page) { $left = $page->getLeftValue(); $right = $page->getRightValue(); $searchCondition = $this->getSearchCondition(); $repository = $this->getNestedSetRepository(); // Will include the self node if required in the end $searchCondition->leftLessThan($left)->rightGreaterThan($right); //$searchCondition->levelGreaterThanOrEqualsTo($level); $orderRule = $repository->createSelectOrderRule()->byLevelDescending(); $ancestors = $repository->search($searchCondition, $orderRule); return $ancestors; }
/** * Called when page structure is changed * @param Page $master * @return array of changed localizations */ private function pageChange(Page $master, $force = false) { // Run for all children $pageLocalizationEntity = PageLocalization::CN(); $dql = "SELECT l FROM {$pageLocalizationEntity} l JOIN l.master m\n\t\t\t\tWHERE m.left >= :left\n\t\t\t\tAND m.right <= :right\n\t\t\t\tORDER BY l.locale, m.left"; $pageLocalizations = $this->em->createQuery($dql)->setParameters(array('left' => $master->getLeftValue(), 'right' => $master->getRightValue()))->getResult(); $changedLocalizations = array(); foreach ($pageLocalizations as $pageLocalization) { $changedLocalization = $this->generatePath($pageLocalization, $force); if (!is_null($changedLocalization)) { $changedLocalizations[] = $changedLocalization; } } return $changedLocalizations; }