protected function _insertNode(AbstractNestedNode $node, AbstractNestedNode $parent, $newLeftNode)
    {
        if ($parent->isDescendantOf($node, false)) {
            throw new InvalidArgumentException('Cannot insert node in itself or one of its descendants');
        }

        if (false === $this->_em->contains($parent)) {
            throw new InvalidArgumentException('Cannot insert in a non managed node');
        }

        $this->detachOrPersistNode($node);

        $newRightNode = $newLeftNode + $node->getWeight() - 1;
        $node->setLeftnode($newLeftNode)

                ->setRightnode($newRightNode)
                ->setLevel($parent->getLevel() + 1)
                ->setParent($parent)
                ->setRoot($parent->getRoot());

        $this->shiftRlValues($node, $node->getLeftnode(), $node->getWeight());

        $this->_em->refresh($parent);

        return $node;
    }
protected function _insertNode(AbstractNestedNode $node, AbstractNestedNode $parent, $newLeftNode)
    {
        if ($parent->isDescendantOf($node, false)) {
            throw new InvalidArgumentException('Cannot insert node in itself or one of its descendants');
        }

        if (false === $this->_em->contains($parent)) {
            throw new InvalidArgumentException('Cannot insert in a non managed node');
        }

        $this->detachOrPersistNode($node);

        $newRightNode = $newLeftNode + $node->getWeight() - 1;
        $node->setLeftnode($newLeftNode)

                ->setRightnode($newRightNode)
                ->setLevel($parent->getLevel() + 1)
                ->setParent($parent)
                ->setRoot($parent->getRoot());

        $this->shiftRlValues($node, $node->getLeftnode(), $node->getWeight());

        $this->_em->refresh($parent);

        return $node;
    }
protected function _insertNode ( AbstractNestedNode $ node , AbstractNestedNode $ parent , $ newLeftNode ) { if ( $ parent -> isDescendantOf ( $ node , false ) ) { throw new InvalidArgumentException ( 'Cannot insert node in itself or one of its descendants' ) ; } if ( false === $ this -> _em -> contains ( $ parent ) ) { throw new InvalidArgumentException ( 'Cannot insert in a non managed node' ) ; } $ this -> detachOrPersistNode ( $ node ) ; $ newRightNode = $ newLeftNode + $ node -> getWeight ( ) - 1 ; $ node -> setLeftnode ( $ newLeftNode ) -> setRightnode ( $ newRightNode ) -> setLevel ( $ parent -> getLevel ( ) + 1 ) -> setParent ( $ parent ) -> setRoot ( $ parent -> getRoot ( ) ) ; $ this -> shiftRlValues ( $ node , $ node -> getLeftnode ( ) , $ node -> getWeight ( ) ) ; $ this -> _em -> refresh ( $ parent ) ; return $ node ; }
Inserts a leaf node in a tree.

@param  \BackBee\NestedNode\AbstractNestedNode             $node         The node to be inserted
@param  \BackBee\NestedNode\AbstractNestedNode             $parent       The parent node
@param  int                                                $newLeftNode  The new left node of the inserted node

@return \BackBee\NestedNode\AbstractNestedNode             The inserted node
@throws \BackBee\Exception\InvalidArgumentException Occurs if the node is an ancestor of $parent or $parent is not flushed yet
Inserts a leaf node in a tree .