alecpl
2012-03-05 0203f16312bc949a5cf46ce90fa43de9119e23a8
- Fix duplicate names handling in addressbook searches (#1488375)


7 files modified
37 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/steps/addressbook/delete.inc 3 ●●●● patch | view | raw | blame | history
program/steps/addressbook/export.inc 3 ●●●● patch | view | raw | blame | history
program/steps/addressbook/func.inc 18 ●●●●● patch | view | raw | blame | history
program/steps/addressbook/list.inc 2 ●●● patch | view | raw | blame | history
program/steps/addressbook/search.inc 3 ●●●● patch | view | raw | blame | history
program/steps/addressbook/undo.inc 7 ●●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Fix duplicate names handling in addressbook searches (#1488375)
- Fix displaying HTML messages from Disqus (#1488372)
- Exclude E_STRICT from error_reporting for PHP 5.4
- Copy all skins in installto script (#1488376)
program/steps/addressbook/delete.inc
@@ -72,6 +72,7 @@
// update saved search after data changed
if (($search_request = $_REQUEST['_search']) && isset($_SESSION['search'][$search_request])) {
    $sort_col = $RCMAIL->config->get('addressbook_sort_col', 'name');
    $search  = (array)$_SESSION['search'][$search_request];
    $records = array();
@@ -94,7 +95,7 @@
        while ($row = $result->next()) {
            $row['sourceid'] = $s;
            $key = $row['name'] . ':' . $row['sourceid'];
            $key = rcmail_contact_key($row, $sort_col);
            $records[$key] = $row;
        }
        unset($result);
program/steps/addressbook/export.inc
@@ -27,6 +27,7 @@
// Use search result
if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search']]))
{
    $sort_col = $RCMAIL->config->get('addressbook_sort_col', 'name');
    $search  = (array)$_SESSION['search'][$_REQUEST['_search']];
    $records = array();
@@ -44,7 +45,7 @@
        while ($row = $result->next()) {
            $row['sourceid'] = $s;
            $key = $row['name'] . ':' . $row['sourceid'];
            $key = rcmail_contact_key($row, $sort_col);
            $records[$key] = $row;
        }
        unset($result);
program/steps/addressbook/func.inc
@@ -729,6 +729,24 @@
}
function rcmail_contact_key($row, $sort_col)
{
    $key = $row[$sort_col] . ':' . $row['sourceid'];
    // add email to a key to not skip contacts with the same name (#1488375)
    if (!empty($row['email'])) {
         if (is_array($row['email'])) {
             $key .= ':' . implode(':', $row['email']);
         }
         else {
             $key .= ':' . $row['email'];
         }
     }
     return $key;
}
/**
 * Returns contact ID(s) and source(s) from GET/POST data
 *
program/steps/addressbook/list.inc
@@ -50,7 +50,7 @@
        while ($row = $result->next()) {
            $row['sourceid'] = $s;
            $key = $row[$sort_col] . ':' . $row['sourceid'];
            $key = rcmail_contact_key($row, $sort_col);
            $records[$key] = $row;
        }
        unset($result);
program/steps/addressbook/search.inc
@@ -147,6 +147,7 @@
    $sources    = $RCMAIL->get_address_sources();
    $search_set = array();
    $records    = array();
    $sort_col   = $RCMAIL->config->get('addressbook_sort_col', 'name');
    foreach ($sources as $s) {
        $source = $RCMAIL->get_address_book($s['id']);
@@ -185,7 +186,7 @@
        while ($row = $result->next()) {
            $row['sourceid'] = $s['id'];
            $key = $row['name'] . ':' . $row['sourceid'];
            $key = rcmail_contact_key($row, $sort_col);
            $records[$key] = $row;
        }
program/steps/addressbook/undo.inc
@@ -68,13 +68,6 @@
            continue;
        }
        while ($row = $result->next()) {
            $row['sourceid'] = $s;
            $key = $row['name'] . ':' . $row['sourceid'];
            $records[$key] = $row;
        }
        unset($result);
        $search[$s] = $source->get_search_set();
    }