From c7983b2bbc1591b567c1c364bd656c43e424de4c Mon Sep 17 00:00:00 2001 From: AD7six Date: Sun, 8 Feb 2015 18:22:08 +0000 Subject: [PATCH] Update moveUp too --- src/ORM/Behavior/TreeBehavior.php | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/ORM/Behavior/TreeBehavior.php b/src/ORM/Behavior/TreeBehavior.php index b993d82fb48..e402d758f38 100644 --- a/src/ORM/Behavior/TreeBehavior.php +++ b/src/ORM/Behavior/TreeBehavior.php @@ -570,6 +570,8 @@ protected function _moveUp($node, $number) } $edge = $this->_getMax(); + $width = $node->{$right} - $node->{$left}; + while ($number-- > 0) { list($nodeLeft, $nodeRight) = array_values($node->extract([$left, $right])); @@ -590,14 +592,10 @@ protected function _moveUp($node, $number) $this->_sync($nodeLeft - $nextNode->{$left}, '-', "BETWEEN {$nodeLeft} AND {$nodeRight}"); $this->_sync($edge - $nextNode->{$left} - ($nodeRight - $nodeLeft), '-', "> {$edge}"); - $newLeft = $nodeLeft; - if ($nodeLeft >= $nextNode->{$left} || $nodeLeft <= $nextNode->{$right}) { - $newLeft -= $edge - $nextNode->{$left} + 1; - } - $newLeft = $nodeLeft - ($nodeLeft - $nextNode->{$left}); + $shift = $node->{$right} - $nextNode->{$right}; - $node->set($left, $newLeft); - $node->set($right, $newLeft + ($nodeRight - $nodeLeft)); + $node->set($right, $node->{$left} + $width - $shift); + $node->set($left, $node->{$left} - $shift); } $node->dirty($left, false); @@ -673,10 +671,10 @@ protected function _moveDown($node, $number) $this->_sync($nextNode->{$left} - $nodeLeft, '-', "BETWEEN {$nextNode->{$left}} AND {$nextNode->{$right}}"); $this->_sync($edge - $nodeLeft - ($nextNode->{$right} - $nextNode->{$left}), '-', "> {$edge}"); - $move = $nextNode->{$right} - $node->{$right}; + $shift = $nextNode->{$right} - $node->{$right}; - $node->set($right, $node->{$left} + $width + $move); - $node->set($left, $node->{$left} + $move); + $node->set($right, $node->{$left} + $width + $shift); + $node->set($left, $node->{$left} + $shift); } $node->dirty($left, false);