/** * Moves current node and its subtree to be the previous sibling of $sibling * The modifications in the current object and the tree are immediate * * @param Page $sibling Propel object for sibling node * @param PropelPDO $con Connection to use. * * @return Page The current Propel object */ public function moveToPrevSiblingOf($sibling, PropelPDO $con = null) { if (!$this->isInTree()) { throw new PropelException('A Page object must be already in the tree to be moved. Use the insertAsPrevSiblingOf() instead.'); } if ($sibling->isRoot()) { throw new PropelException('Cannot move to previous sibling of a root node.'); } if ($sibling->isDescendantOf($this)) { throw new PropelException('Cannot move a node as sibling of one of its subtree nodes.'); } $this->moveSubtreeTo($sibling->getLeftValue(), $sibling->getLevel() - $this->getLevel(), $con); return $this; }
/** * Test xxxNestedSet::makeRoot() */ public function testObjectMakeRoot() { $page = new Page(); $page->makeRoot(); $this->assertEquals(1, $page->getLeftValue(), 'Node left value must equal 1'); $this->assertEquals(2, $page->getRightValue(), 'Node right value must equal 2'); }
/** * Filter the query to restrict the result to roots of an object. * Same as ancestorsOf(), except that it includes the object passed as parameter in the result * * @param Page $page The object to use for roots search * * @return PageQuery The current query, for fluid interface */ public function rootsOf($page) { return $this->addUsingAlias(PagePeer::LEFT_COL, $page->getLeftValue(), Criteria::LESS_EQUAL)->addUsingAlias(PagePeer::RIGHT_COL, $page->getRightValue(), Criteria::GREATER_EQUAL); }