From 0ec7fe4efc8f6e1cd8fba5084c5c1a30cd900370 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Sat, 14 May 2011 10:38:27 -0400
Subject: [PATCH] Fix sort order when contact name is empty

---
 program/include/rcube_mdb2.php     |   26 ++++++++++++++++++++++++++
 program/include/rcube_contacts.php |    2 +-
 2 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/program/include/rcube_contacts.php b/program/include/rcube_contacts.php
index e7c078f..687b4b1 100644
--- a/program/include/rcube_contacts.php
+++ b/program/include/rcube_contacts.php
@@ -184,7 +184,7 @@
                 " AND c.user_id=?" .
                 ($this->group_id ? " AND m.contactgroup_id=?" : "").
                 ($this->filter ? " AND (".$this->filter.")" : "") .
-            " ORDER BY c.name, c.email",
+            " ORDER BY ". $this->db->concat('c.name', 'c.email'),
             $start_row,
             $length,
             $this->user_id,
diff --git a/program/include/rcube_mdb2.php b/program/include/rcube_mdb2.php
index a68d1dd..02ed17a 100644
--- a/program/include/rcube_mdb2.php
+++ b/program/include/rcube_mdb2.php
@@ -600,6 +600,32 @@
         }
     }
 
+    /**
+     * Abstract SQL statement for value concatenation
+     *
+     * @return string SQL statement to be used in query
+     * @access public
+     */
+    function concat(/* col1, col2, ... */)
+    {
+        $func = '';
+        switch($this->db_provider) {
+            case 'mysql':
+            case 'mysqli':
+                $func = 'CONCAT';
+                $delim = ', ';
+                break;
+            case 'mssql':
+            case 'sqlsrv':
+                $delim = ' + ';
+                break;
+            default:
+                $delim = ' || ';
+        }
+        
+        return $func . '(' . join($delim, func_get_args()) . ')';
+    }
+
 
     /**
      * Encodes non-UTF-8 characters in string/array/object (recursive)

--
Gitblit v1.9.1