diff options
author | thomascube <thomas@roundcube.net> | 2011-05-14 14:38:27 +0000 |
---|---|---|
committer | thomascube <thomas@roundcube.net> | 2011-05-14 14:38:27 +0000 |
commit | 0ec7fe4efc8f6e1cd8fba5084c5c1a30cd900370 (patch) | |
tree | c69d0925cb3e3f0af6016da8b865c8715d5eb989 /program/include | |
parent | 491133a0b24133bdeda1a07bb1e7bd06c7346bea (diff) |
Fix sort order when contact name is empty
Diffstat (limited to 'program/include')
-rw-r--r-- | program/include/rcube_contacts.php | 2 | ||||
-rw-r--r-- | program/include/rcube_mdb2.php | 26 |
2 files changed, 27 insertions, 1 deletions
diff --git a/program/include/rcube_contacts.php b/program/include/rcube_contacts.php index e7c078f7e..687b4b111 100644 --- a/program/include/rcube_contacts.php +++ b/program/include/rcube_contacts.php @@ -184,7 +184,7 @@ class rcube_contacts extends rcube_addressbook " 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 a68d1dd92..02ed17ac2 100644 --- a/program/include/rcube_mdb2.php +++ b/program/include/rcube_mdb2.php @@ -600,6 +600,32 @@ class rcube_mdb2 } } + /** + * 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) |