Changeset 2f9fdbf in github
- Timestamp:
- Nov 14, 2011 6:21:39 AM (19 months ago)
- Branches:
- master, HEAD, courier-fix, dev-browser-capabilities, pdo, release-0.8
- Children:
- 854fbf6
- Parents:
- be58b50
- Files:
-
- 2 edited
-
CHANGELOG (modified) (1 diff)
-
program/steps/mail/autocomplete.inc (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
CHANGELOG
rbd34cad r2f9fdbf 2 2 =========================== 3 3 4 - Fix sorting autocomplete results (#1488084) 4 5 - Add option to set session name (#1486433) 5 6 - Add option to skip alternative email addresses in autocompletion -
program/steps/mail/autocomplete.inc
r710b1bd r2f9fdbf 55 55 if (!empty($book_types) && strlen($search)) { 56 56 $contacts = array(); 57 $sort_keys = array(); 57 58 $books_num = count($book_types); 58 59 $search_lc = mb_strtolower($search); … … 67 68 $email_arr = (array)$abook->get_col_values('email', $sql_arr, true); 68 69 $email_cnt = count($email_arr); 70 $idx = 0; 69 71 foreach ($email_arr as $email) { 70 72 if (empty($email)) { … … 81 83 // skip duplicates 82 84 if (!in_array($contact, $contacts)) { 83 $contacts[] = $contact; 85 $contacts[] = $contact; 86 $sort_keys[] = sprintf('%s %03d', $sql_arr['name'] , $idx++); 87 84 88 if (count($contacts) >= $MAXNUM) 85 89 break 2; … … 103 107 // group (distribution list) with email address(es) 104 108 if ($group_prop['email']) { 109 $idx = 0; 105 110 foreach ((array)$group_prop['email'] as $email) { 106 $contacts[] = format_email_recipient($email, $group['name']); 111 $contacts[] = format_email_recipient($email, $group['name']); 112 $sort_keys[] = sprintf('%s %03d', $group['name'] , $idx++); 113 107 114 if (count($contacts) >= $MAXNUM) 108 115 break 2; … … 111 118 // show group with count 112 119 else if (($result = $abook->count()) && $result->count) { 113 $contacts[] = array('name' => $group['name'] . ' (' . intval($result->count) . ')', 'id' => $group['ID'], 'source' => $id); 120 $contacts[] = array('name' => $group['name'] . ' (' . intval($result->count) . ')', 'id' => $group['ID'], 'source' => $id); 121 $sort_keys[] = $group['name']; 122 114 123 if (count($contacts) >= $MAXNUM) 115 124 break; … … 119 128 } 120 129 121 usort($contacts, 'contact_results_sort'); 130 if (count($contacts)) { 131 // sort contacts index 132 asort($sort_keys, SORT_LOCALE_STRING); 133 // re-sort contacts according to index 134 foreach ($sort_keys as $idx => $val) { 135 $sort_keys[$idx] = $contacts[$idx]; 136 } 137 $contacts = array_values($sort_keys); 138 } 122 139 } 123 140 124 141 $OUTPUT->command('ksearch_query_results', $contacts, $search, $sid); 125 142 $OUTPUT->send(); 126 127 128 function contact_results_sort($a, $b)129 {130 $name_a = is_array($a) ? $a['name'] : $a;131 $name_b = is_array($b) ? $b['name'] : $b;132 return strcoll(trim($name_a, '" '), trim($name_b, '" '));133 }134
Note: See TracChangeset
for help on using the changeset viewer.
