diff --git a/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php b/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php index 2ffc7407..531eec70 100644 --- a/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php +++ b/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php @@ -1017,32 +1017,31 @@ class rcube_kolab_contacts extends rcube_addressbook */ private function _sort_contacts_comp($a, $b) { - $a_name = $a['name']; - $b_name = $b['name']; + $a_value = $a[$this->sort_col]; + $b_value = $b[$this->sort_col]; - if (!$a_name) { - $a_name = join(' ', array_filter(array($a['prefix'], $a['firstname'], - $a['middlename'], $a['surname'], $a['suffix']))); - if (!$a_name) { - $a_name = is_array($a['email']) ? $a['email'][0] : $a['email']; - } + if (!$a_value && $this->sort_col == 'name') { + $a_value = join(' ', array_filter(array($a['firstname'], $a['middlename'], $a['surname']))); } - if (!$b_name) { - $b_name = join(' ', array_filter(array($b['prefix'], $b['firstname'], - $b['middlename'], $b['surname'], $b['suffix']))); - if (!$b_name) { - $b_name = is_array($b['email']) ? $b['email'][0] : $b['email']; - } + if (!$a_value) { + $a_value = is_array($a['email']) ? $a['email'][0] : $a['email']; } - // return strcasecmp($a_name, $b_name); + if (!$b_value && $this->sort_col == 'name') { + $b_value = join(' ', array_filter(array($b['firstname'], $b['middlename'], $b['surname']))); + } + if (!$b_value) { + $b_value = is_array($b['email']) ? $b['email'][0] : $b['email']; + } + + // return strcasecmp($a_value, $b_value); // make sorting unicode-safe and locale-dependent - if ($a_name == $b_name) + if ($a_value == $b_value) return 0; - $arr = array($a_name, $b_name); + $arr = array($a_value, $b_value); sort($arr, SORT_LOCALE_STRING); - return $a_name == $arr[0] ? -1 : 1; + return $a_value == $arr[0] ? -1 : 1; } /**