Fix duplicate entries supression in autocomplete result (#1490290)

pull/229/merge
Aleksander Machniak 10 years ago
parent 83f1f6b12f
commit e1c8fe5c4a

@ -16,6 +16,7 @@ CHANGELOG Roundcube Webmail
- Fix fatal errors on systems without mbstring extension or mb_regex_encoding() function (#1490280)
- Fix cursor position on reply below the quote in HTML mode (#1490263)
- Fix so "over quota" errors are displayed also in message compose page
- Fix duplicate entries supression in autocomplete result (#1490290)
RELEASE 1.1.0
-------------

@ -88,16 +88,18 @@ if (!empty($book_types) && strlen($search)) {
continue;
}
$index = $contact;
// skip duplicates
if (!in_array($contact, $contacts)) {
if (empty($contacts[$index])) {
$contact = array('name' => $contact, 'type' => $sql_arr['_type']);
if (($display = rcube_addressbook::compose_search_name($sql_arr, $email, $name)) && $display != $contact['name']) {
$contact['display'] = $display;
}
$contacts[] = $contact;
$sort_keys[] = sprintf('%s %03d', $contact['display'] ?: $name, $idx++);
$contacts[$index] = $contact;
$sort_keys[$index] = sprintf('%s %03d', $contact['display'] ?: $name, $idx++);
if (count($contacts) >= $MAXNUM) {
break 2;
@ -124,34 +126,40 @@ if (!empty($book_types) && strlen($search)) {
if ($group_prop['email']) {
$idx = 0;
foreach ((array)$group_prop['email'] as $email) {
$contacts[] = array(
'name' => format_email_recipient($email, $group['name']),
'email' => $email,
$index = format_email_recipient($email, $group['name']);
if (empty($contacts[$index])) {
$sort_keys[$index] = sprintf('%s %03d', $group['name'] , $idx++);
$contacts[$index] = array(
'name' => $index,
'email' => $email,
'type' => 'group',
'id' => $group['ID'],
'source' => $id,
);
if (count($contacts) >= $MAXNUM) {
break 2;
}
}
}
}
// show group with count
else if (($result = $abook->count()) && $result->count) {
if (empty($contacts[$group['name']])) {
$sort_keys[$group['name']] = $group['name'];
$contacts[$group['name']] = array(
'name' => $group['name'] . ' (' . intval($result->count) . ')',
'type' => 'group',
'id' => $group['ID'],
'source' => $id,
'source' => $id
);
$sort_keys[] = sprintf('%s %03d', $group['name'] , $idx++);
if (count($contacts) >= $MAXNUM) {
break 2;
break;
}
}
}
// show group with count
else if (($result = $abook->count()) && $result->count) {
$sort_keys[] = $group['name'];
$contacts[] = array(
'name' => $group['name'] . ' (' . intval($result->count) . ')',
'type' => 'group',
'id' => $group['ID'],
'source' => $id
);
if (count($contacts) >= $MAXNUM) {
break;
}
}
}
}
}

Loading…
Cancel
Save