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.