Author: sevein
Date: Thu Aug  2 23:30:35 2012
New Revision: 12038

Log:
Cleanups and some progress sorting by identifierTitle

Modified:
   trunk/lib/model/QubitInformationObject.php

Modified: trunk/lib/model/QubitInformationObject.php
==============================================================================
--- trunk/lib/model/QubitInformationObject.php  Thu Aug  2 22:13:57 2012        
(r12037)
+++ trunk/lib/model/QubitInformationObject.php  Thu Aug  2 23:30:35 2012        
(r12038)
@@ -1675,30 +1675,38 @@
           if ('next' == $position)
           {
             // Add where clause with culture fallback support
-            $criteria->add(
+            $criterion1 = $criteria->getNewCriterion(
               'title',
               'CONCAT(
                   COALESCE(identifier, ""),
                   COALESCE((CASE WHEN (current.TITLE IS NOT NULL AND 
current.TITLE <> "") THEN current.TITLE ELSE source.TITLE END), "")
-                ) > '.Propel::getConnection()->quote($current->title),
+                ) > 
'.Propel::getConnection()->quote($current->identifier.$current->title),
               Criteria::CUSTOM);
+            $criterion2 = $criteria->getNewCriterion('lft', $current->lft, 
Criteria::GREATER_THAN);
+            $criterion1->addOr($criterion2);
+            $criteria->add($criterion1);
 
             $criteria->addAscendingOrderByColumn('identifier');
             $criteria->addAscendingOrderByColumn('title');
+            $criteria->addAscendingOrderByColumn('lft');
           }
           else // 'previous'
           {
             // Add where clause with culture fallback support
-            $criteria->add(
+            $criterion1 = $criteria->getNewCriterion(
               'title',
               'CONCAT(
                   COALESCE(identifier, ""),
                   COALESCE((CASE WHEN (current.TITLE IS NOT NULL AND 
current.TITLE <> "") THEN current.TITLE ELSE source.TITLE END), "")
-                ) < '.Propel::getConnection()->quote($current->title),
+                ) < 
'.Propel::getConnection()->quote($current->identifier.$current->title),
               Criteria::CUSTOM);
+            $criterion2 = $criteria->getNewCriterion('lft', $current->lft, 
Criteria::LESS_THAN);
+            $criterion1->addOr($criterion2);
+            $criteria->add($criterion1);
 
             $criteria->addDescendingOrderByColumn('identifier');
             $criteria->addDescendingOrderByColumn('title');
+            $criteria->addDescendingOrderByColumn('lft');
           }
 
           break;
@@ -1773,6 +1781,7 @@
           continue;
         }
 
+        // Add item to array
         $results[] = $item;
       }
 
@@ -1788,111 +1797,47 @@
       switch ($sort)
       {
         case 'identifierTitle':
+        case 'title':
 
-          if ('next' == $position)
+          // Look for the last sibling
+          if (!isset($conditionLimit))
           {
-            // Look for the last sibling
-            if (!isset($conditionLimit))
-            {
-              $criteria = new Criteria;
-              $criteria->add(QubitInformationObject::PARENT_ID, 
$this->parentId);
-              $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 
'QubitInformationObject');
-              $criteria->addDescendingOrderByColumn('identifier');
-              $criteria->addDescendingOrderByColumn('title');
-              $criteria->setLimit(1);
+            $criteria = new Criteria;
+            $criteria->add(QubitInformationObject::PARENT_ID, $this->parentId);
+            $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 
'QubitInformationObject');
 
-              if (null === $informationObject = 
QubitInformationObject::getOne($criteria))
+            if ('next' == $position)
+            {
+              if ('identifierTitle' == $sort)
               {
-                throw new sfException;
+                $criteria->addDescendingOrderByColumn('identifier');
               }
-
-              $conditionLimit = $informationObject->id;
-            }
-
-            if ($conditionLimit == $last->id)
-            {
-              break 2;
+              $criteria->addDescendingOrderByColumn('title');
+              $criteria->addDescendingOrderByColumn('lft');
             }
-          }
-          else // 'previous'
-          {
-            // Look for the first sibling
-            if (!isset($conditionLimit))
+            else
             {
-              $criteria = new Criteria;
-              $criteria->add(QubitInformationObject::PARENT_ID, 
$this->parentId);
-              $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 
'QubitInformationObject');
-              $criteria->addAscendingOrderByColumn('identifier');
-              $criteria->addAscendingOrderByColumn('title');
-              $criteria->setLimit(1);
-
-              if (null === $informationObject = 
QubitInformationObject::getOne($criteria))
+              if ('identifierTitle' == $sort)
               {
-                throw new sfException;
+                $criteria->addAscendingOrderByColumn('identifier');
               }
-
-              $conditionLimit = $informationObject->id;
-            }
-
-            if ($conditionLimit == $last->id)
-            {
-              break 2;
+              $criteria->addAscendingOrderByColumn('title');
+              $criteria->addAscendingOrderByColumn('lft');
             }
-          }
-
-          break;
 
-        case 'title':
+            $criteria->setLimit(1);
 
-          if ('next' == $position)
-          {
-            // Look for the last sibling
-            if (!isset($conditionLimit))
+            if (null === $informationObject = 
QubitInformationObject::getOne($criteria))
             {
-              $criteria = new Criteria;
-              $criteria->add(QubitInformationObject::PARENT_ID, 
$this->parentId);
-              $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 
'QubitInformationObject');
-              $criteria->addDescendingOrderByColumn('title');
-              $criteria->addDescendingOrderByColumn('lft');
-              $criteria->setLimit(1);
-
-              if (null === $informationObject = 
QubitInformationObject::getOne($criteria))
-              {
-                throw new sfException;
-              }
-
-              $conditionLimit = $informationObject->id;
+              throw new sfException;
             }
 
-            if ($conditionLimit == $last->id)
-            {
-              break 2;
-            }
+            $conditionLimit = $informationObject->id;
           }
-          else // 'previous'
-          {
-            // Look for the first sibling
-            if (!isset($conditionLimit))
-            {
-              $criteria = new Criteria;
-              $criteria->add(QubitInformationObject::PARENT_ID, 
$this->parentId);
-              $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 
'QubitInformationObject');
-              $criteria->addAscendingOrderByColumn('title');
-              $criteria->addAscendingOrderByColumn('lft');
-              $criteria->setLimit(1);
 
-              if (null === $informationObject = 
QubitInformationObject::getOne($criteria))
-              {
-                throw new sfException;
-              }
-
-              $conditionLimit = $informationObject->id;
-            }
-
-            if ($conditionLimit == $last->id)
-            {
-              break 2;
-            }
+          if ($conditionLimit == $last->id)
+          {
+            break 2;
           }
 
           break;

-- 
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.

Reply via email to