Author: david
Date: Thu Aug 23 14:26:11 2012
New Revision: 12179

Log:
Convert CONCAT() results to CHAR type to sort alphabetically, rather than by 
ASCII value (Capitals before miniscules). Add lft sort to 
addTreeViewSortCriteria() method to match getTreeViewSiblings() sort order 
exactly.  Use PHP to concatenate values for previous/next title sort like 
r12175. Fixes issue 1327.

Modified:
   trunk/lib/model/QubitInformationObject.php

Modified: trunk/lib/model/QubitInformationObject.php
==============================================================================
--- trunk/lib/model/QubitInformationObject.php  Thu Aug 23 13:53:23 2012        
(r12178)
+++ trunk/lib/model/QubitInformationObject.php  Thu Aug 23 14:26:11 2012        
(r12179)
@@ -1700,10 +1700,10 @@
           if ('next' == $position)
           {
             $criteria->add('title',
-              'CONCAT(
+              'CONVERT(CONCAT(
                   COALESCE(identifier, " "),
                   COALESCE((CASE WHEN (current.TITLE IS NOT NULL AND 
current.TITLE <> "") THEN current.TITLE ELSE source.TITLE END), ""),
-                  LPAD(lft, 12, 0))
+                  LPAD(lft, 12, 0)), CHAR)
                 > '.$concatCurrent,
               Criteria::CUSTOM);
 
@@ -1714,10 +1714,10 @@
           else // 'previous'
           {
             $criteria->add('title',
-              'CONCAT(
+              'CONVERT(CONCAT(
                 COALESCE(identifier, " "),
                 COALESCE((CASE WHEN (current.TITLE IS NOT NULL AND 
current.TITLE <> "") THEN current.TITLE ELSE source.TITLE END), ""),
-                LPAD(lft, 12, 0))
+                LPAD(lft, 12, 0)), CHAR)
                 < '.$concatCurrent,
               Criteria::CUSTOM);
 
@@ -1732,12 +1732,15 @@
 
           $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 
'QubitInformationObject');
 
+          $concatCurrent = $current->title;
+          $concatCurrent .= str_pad($current->lft, 12, '0', STR_PAD_LEFT);
+          $concatCurrent = Propel::getConnection()->quote($concatCurrent);
+
           if ('next' == $position)
           {
             $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))',
+              'CONVERT(CONCAT(COALESCE((CASE WHEN (current.TITLE IS NOT NULL 
AND current.TITLE <> "") THEN current.TITLE ELSE source.TITLE END), ""), 
LPAD(lft, 12, 0)), CHAR)
+                > '.$concatCurrent,
               Criteria::CUSTOM);
 
             $criteria->addAscendingOrderByColumn('title');
@@ -1746,9 +1749,8 @@
           else // 'previous'
           {
             $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))',
+              'CONVERT(CONCAT(COALESCE((CASE WHEN (current.TITLE IS NOT NULL 
AND current.TITLE <> "") THEN current.TITLE ELSE source.TITLE END), ""), 
LPAD(lft, 12, 0)), CHAR)
+                < '.$concatCurrent,
               Criteria::CUSTOM);
 
             $criteria->addDescendingOrderByColumn('title');
@@ -1882,11 +1884,17 @@
         $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 
'QubitInformationObject');
         $criteria->addAscendingOrderByColumn('identifier');
         $criteria->addAscendingOrderByColumn('title');
+        $criteria->addAscendingOrderByColumn('lft');
+
         break;
+
       case 'title':
         $criteria = QubitCultureFallback::addFallbackCriteria($criteria, 
'QubitInformationObject');
         $criteria->addAscendingOrderByColumn('title');
+        $criteria->addAscendingOrderByColumn('lft');
+
         break;
+
       default:
         $criteria->addAscendingOrderByColumn(self::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