Author: sevein
Date: Wed Aug  8 18:06:15 2012
New Revision: 12054

Log:
Use CONCAT + COALESCE + LPAD to make title sorting work properly when dealing 
with NULL values

Modified:
   trunk/lib/model/QubitInformationObject.php

Modified: trunk/lib/model/QubitInformationObject.php
==============================================================================
--- trunk/lib/model/QubitInformationObject.php  Wed Aug  8 18:05:06 2012        
(r12053)
+++ trunk/lib/model/QubitInformationObject.php  Wed Aug  8 18:06:15 2012        
(r12054)
@@ -1672,42 +1672,7 @@
 
           $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 
'QubitInformationObject');
 
-          if ('next' == $position)
-          {
-            // Add where clause with culture fallback support
-            $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->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
-            $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->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');
-          }
+          die("TODO");
 
           break;
 
@@ -1717,34 +1682,22 @@
 
           if ('next' == $position)
           {
-            // Add where clause with culture fallback support
-            $criterion1 = $criteria->getNewCriterion('title',
-              '(CASE
-                  WHEN (current.TITLE IS NOT NULL AND current.TITLE <> "")
-                    THEN current.TITLE
-                  ELSE source.TITLE
-                END) > '.Propel::getConnection()->quote($current->title),
+            $criteria->add('title',
+              'CONCAT(COALESCE((CASE WHEN (current.TITLE IS NOT NULL AND 
current.TITLE <> "") THEN current.TITLE ELSE source.TITLE END), ""), LPAD(lft, 
12, 0))
+                >
+               
CONCAT(COALESCE('.Propel::getConnection()->quote($current->title).', ""), 
LPAD('.Propel::getConnection()->quote($current->lft).', 12, 0))',
               Criteria::CUSTOM);
-            $criterion2 = $criteria->getNewCriterion('lft', $current->lft, 
Criteria::GREATER_THAN);
-            $criterion1->addOr($criterion2);
-            $criteria->add($criterion1);
 
             $criteria->addAscendingOrderByColumn('title');
             $criteria->addAscendingOrderByColumn('lft');
           }
           else // 'previous'
           {
-            // Add where clause with culture fallback support
-            $criterion1 = $criteria->getNewCriterion('title',
-              '(CASE
-                  WHEN (current.TITLE IS NOT NULL AND current.TITLE <> "")
-                    THEN current.TITLE
-                  ELSE source.TITLE
-                END) < '.Propel::getConnection()->quote($current->title),
+            $criteria->add('title',
+              'CONCAT(COALESCE((CASE WHEN (current.TITLE IS NOT NULL AND 
current.TITLE <> "") THEN current.TITLE ELSE source.TITLE END), ""), LPAD(lft, 
12, 0))
+                <
+               
CONCAT(COALESCE('.Propel::getConnection()->quote($current->title).', ""), 
LPAD('.Propel::getConnection()->quote($current->lft).', 12, 0))',
               Criteria::CUSTOM);
-            $criterion2 = $criteria->getNewCriterion('lft', $current->lft, 
Criteria::LESS_THAN);
-            $criterion1->addOr($criterion2);
-            $criteria->add($criterion1);
 
             $criteria->addDescendingOrderByColumn('title');
             $criteria->addDescendingOrderByColumn('lft');

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