Esempio n. 1
0
 /**
  * Shift position values for pages siblings of and after $page by $delta.
  *
  * @param  Page                 $page               The page for which to shift position.
  * @param  integer              $delta              The shift value of position.
  * @param  boolean              $strict             Does $page is include (true) or not (false, by default).
  *
  * @return PageRepository
  */
 private function shiftPosition(Page $page, $delta, $strict = false)
 {
     if (true === $page->hasMainSection()) {
         return $this;
     }
     $query = $this->createQueryBuilder('p')->set('p._position', 'p._position + :delta_node')->andWhere('p._section = :section')->andWhere('p._position >= :position')->setParameters(['delta_node' => $delta, 'section' => $page->getSection(), 'position' => $page->getPosition()]);
     if (true === $strict) {
         $query->andWhere('p != :page')->setParameter('page', $page);
     } else {
         $page->setPosition($page->getPosition() + $delta);
     }
     $query->update()->getQuery()->execute();
     return $this;
 }