Example #1
0
 /**
  * @param \CMS\Bundle\AdminBundle\Entity\Page $page the page
  */
 public function moveDown(\CMS\Bundle\AdminBundle\Entity\Page $page)
 {
     //get the area upper
     $entityManager = $this->_em;
     $pageArray = array('id' => $page->getId(), 'lft' => $page->getLft(), 'rgt' => $page->getRgt());
     $repositor = $entityManager->getRepository('CMSAdminBundle:Page');
     $pageUnder = $repositor->findOneArrayBy(array('lft' => $pageArray['rgt'] + 1));
     if ($pageUnder) {
         $del1 = $pageArray['rgt'] - $pageArray['lft'];
         $del2 = $pageUnder['rgt'] - $pageUnder['lft'];
         //calculate new lft, rgt of 2 node and swap
         $pageUnder['lft'] = $pageArray['lft'];
         $pageUnder['rgt'] = $pageArray['lft'] + $del2;
         $pageArray['lft'] = $pageUnder['rgt'] + 1;
         $pageArray['rgt'] = $pageArray['lft'] + $del1;
         $end = 0;
         //save new order
         $repositor->postOrderTraversal($pageUnder, $pageUnder['lft'], $end);
         $repositor->postOrderTraversal($pageArray, $pageArray['lft'], $end);
     }
 }