Example #1
0
 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;
 }