Author: sevein
Date: Thu Jun 21 17:33:20 2012
New Revision: 11794
Log:
Delete old functionality to move siblings in QubitMenu, in favour of new ORM
methods moveTo{Prev,Next}SiblingOf
Modified:
trunk/lib/model/QubitMenu.php
Modified: trunk/lib/model/QubitMenu.php
==============================================================================
--- trunk/lib/model/QubitMenu.php Thu Jun 21 17:16:04 2012 (r11793)
+++ trunk/lib/model/QubitMenu.php Thu Jun 21 17:33:20 2012 (r11794)
@@ -239,87 +239,6 @@
}
/**
- * Called as a method of the intended *parent* menu of the $newMenu object,
- * inserts $newMenu in position right before $referenceMenu
- *
- * @param QubitMenu $newMenu new menu to create or move
- * @param QubitMenu $referenceMenu reference object for positioning $newMenu
- * @return QubitMenu $newMenu object
- */
- public function insertBefore(QubitMenu $newMenu, $referenceMenu = null)
- {
- // TODO: Test if object already exists in hierarchy
- //$sql = "SELECT count(*) as exists FROM '.QubitMenu::TABLE_NAME.' WHERE
id = ".$newMenu->id;
-
- // Lock db, start transaction
- $sql = 'LOCK TABLE '.QubitMenu::TABLE_NAME.' WRITE;';
-
- // TODO: Currently NOT testing for $existingObject
- $existingObject = false;
- if ($existingObject || true)
- {
- if (!is_null($referenceMenu))
- {
- // If referenceMenu is set, then insert $newMenu just before it
- $newLft = $referenceMenu->getLft();
- }
- else
- {
- // If $referenceMenu is null then insert $newMenu as last child
- $newLft = $this->getRgt();
- }
-
- $sql .= 'SELECT @oldlft := lft, @oldrgt := rgt FROM
'.QubitMenu::TABLE_NAME.' WHERE id = '.$newMenu->id.';';
- $sql .= 'SELECT @width := @oldrgt - @oldlft + 1;';
- $sql .= 'SELECT @newlft := '.$newLft.';';
- $sql .= 'SELECT @newrgt := @newlft + @width - 1;';
- $sql .= 'SELECT @shift := @newlft - @oldlft;';
-
- // Make room for $newMenu in new location
- $sql .= 'UPDATE '.QubitMenu::TABLE_NAME.' SET lft = lft + @width WHERE
lft >= @newlft;';
- $sql .= 'UPDATE '.QubitMenu::TABLE_NAME.' SET rgt = rgt + @width WHERE
rgt >= @newlft;';
-
- if ($newMenu->getLft() < $newLft)
- {
- // Move $newMenu (+ children) to new location
- $sql .= 'UPDATE '.QubitMenu::TABLE_NAME.' SET lft = lft + @shift WHERE
lft >= @oldlft AND lft <= @oldrgt;';
- $sql .= 'UPDATE '.QubitMenu::TABLE_NAME.' SET rgt = rgt + @shift WHERE
rgt >= @oldlft AND rgt <= @oldrgt;';
-
- // Close gap left in $newMenu's old location
- $sql .= 'UPDATE '.QubitMenu::TABLE_NAME.' SET lft = lft - @width WHERE
lft > @oldrgt;';
- $sql .= 'UPDATE '.QubitMenu::TABLE_NAME.' SET rgt = rgt - @width WHERE
rgt > @oldrgt;';
- }
- else
- {
- // Move $newMenu (+ children) to new location (taking into account that
- // current lft/right values of $newMenu are + $width)
- $sql .= 'UPDATE '.QubitMenu::TABLE_NAME.' SET lft = lft + @shift -
@width WHERE lft >= @oldlft + @width AND lft <= @oldrgt + @width;';
- $sql .= 'UPDATE '.QubitMenu::TABLE_NAME.' SET rgt = rgt + @shift -
@width WHERE rgt >= @oldlft + @width AND rgt <= @oldrgt + @width;';
-
- // Close gap left in $newMenu's old location
- $sql .= 'UPDATE '.QubitMenu::TABLE_NAME.' SET lft = lft - @width WHERE
lft > @oldrgt + @width;';
- $sql .= 'UPDATE '.QubitMenu::TABLE_NAME.' SET rgt = rgt - @width WHERE
rgt > @oldrgt + @width;';
- }
-
- // Update parent_id
- $sql .= 'UPDATE '.QubitMenu::TABLE_NAME.' SET parent_id = '.$this->id.'
WHERE id = '.$newMenu->id.';';
- }
-
- $sql .= 'UNLOCK TABLES';
-
- $conn = Propel::getConnection();
- $stmt = $conn->prepare($sql);
- $stmt->execute();
-
- $stmt->closeCursor();
-
- $conn->clearStatementCache();
-
- // TODO: return id for newly inserted $newMenu (last insert id?)
- return QubitMenu::getById($newMenu->id);
- }
-
- /**
* Move this menu before $referenceMenu
*
* @param integer reference menu id
@@ -327,20 +246,9 @@
*/
public function moveBeforeById($referenceMenuId)
{
- // Limit re-sorting to list of siblings
- $parent = $this->parent;
-
- $criteria = new Criteria;
- $criteria->add(QubitMenu::ID, $referenceMenuId);
- $criteria->addAnd(QubitMenu::LFT, $parent->getLft(),
Criteria::GREATER_THAN);
- $criteria->addAnd(QubitMenu::RGT, $parent->getRgt(), Criteria::LESS_THAN);
-
- if ($referenceMenu = QubitMenu::getOne($criteria))
+ if (null !== $prev = QubitMenu::getById($referenceMenuId))
{
- $parent->insertBefore($this, $referenceMenu);
-
- // Refresh moved object to get up-to-date data from db
- $this->clear();
+ $this->moveToPrevSiblingOf($prev);
}
return $this;
@@ -354,36 +262,9 @@
*/
public function moveAfterById($referenceMenuId)
{
- // Limit re-sorting to list of siblings
- $parent = $this->parent;
-
- $criteria = new Criteria;
- $criteria->add(QubitMenu::ID, $referenceMenuId);
- $criteria->addAnd(QubitMenu::LFT, $parent->getLft(),
Criteria::GREATER_THAN);
- $criteria->addAnd(QubitMenu::RGT, $parent->getRgt(), Criteria::LESS_THAN);
-
- if ($nextMenu = QubitMenu::getOne($criteria))
+ if (null !== $next = QubitMenu::getById($referenceMenuId))
{
- // Need to get menu *after* the "next" menu, because we only have an
- // insertBefore() method
- $criteria = new Criteria;
- $criteria->add(QubitMenu::LFT, $nextMenu->getRgt(),
Criteria::GREATER_THAN);
- $criteria->addAnd(QubitMenu::LFT, $parent->getLft(),
Criteria::GREATER_THAN);
- $criteria->addAnd(QubitMenu::RGT, $parent->getRgt(),
Criteria::LESS_THAN);
- $criteria->addAscendingOrderByColumn(QubitMenu::LFT);
-
- if ($referenceMenu = QubitMenu::getOne($criteria))
- {
- $parent->insertBefore($this, $referenceMenu);
- }
- else
- {
- // If no referenceMenu found, then move to end of sibling list
- $parent->insertBefore($this, null);
- }
-
- // Refresh moved object to get up-to-date data from db
- $this->clear();
+ $this->moveToNextSiblingOf($next);
}
return $this;
--
You received this message because you are subscribed to the Google Groups
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/qubit-commits?hl=en.