diff options
Diffstat (limited to 'program')
-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) |