summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
Diffstat (limited to 'program')
-rw-r--r--program/include/rcube_contacts.php2
-rw-r--r--program/include/rcube_mdb2.php26
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)