summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2011-05-14 14:38:27 +0000
committerthomascube <thomas@roundcube.net>2011-05-14 14:38:27 +0000
commit0ec7fe4efc8f6e1cd8fba5084c5c1a30cd900370 (patch)
treec69d0925cb3e3f0af6016da8b865c8715d5eb989
parent491133a0b24133bdeda1a07bb1e7bd06c7346bea (diff)
Fix sort order when contact name is empty
-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)