Respect new configurable sort order for contacts

This commit is contained in:
Thomas Bruederli 2012-02-08 15:09:55 +01:00
parent dc3a82198b
commit b5a44da343

View file

@ -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;
}
/**