Aleksander Machniak
2013-02-17 60dabb35aed6689dd6b50cb885b3dbbf5504ef1f
- Fix regression in handling LDAP contact identifiers (#1488959)
3 files modified
28 ■■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/js/app.js 4 ●●●● patch | view | raw | blame | history
program/steps/addressbook/func.inc 23 ●●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Fix regression in handling LDAP contact identifiers (#1488959)
- Updated translations from Transifex
- Fix buggy error template in a frame (#1488938)
- Add addressbook widget on compose page in classic skin
program/js/app.js
@@ -4290,7 +4290,7 @@
        this.group_member_change('add', cid, dest, to.id);
      else {
        var lock = this.display_message(this.get_label('copyingcontact'), 'loading'),
          post_data = {_cid: cid, _source: source, _to: dest, _togid: to.id, _gid: group};
          post_data = {_cid: cid, _source: this.env.source, _to: dest, _togid: to.id, _gid: group};
        this.http_post('copy', post_data, lock);
      }
@@ -4298,7 +4298,7 @@
    // target is an addressbook
    else if (to.id != source) {
      var lock = this.display_message(this.get_label('copyingcontact'), 'loading'),
        post_data = {_cid: cid, _source: source, _to: to.id, _gid: group};
        post_data = {_cid: cid, _source: this.env.source, _to: to.id, _gid: group};
      this.http_post('copy', post_data, lock);
    }
program/steps/addressbook/func.inc
@@ -755,20 +755,27 @@
        return array();
    }
    $cid    = explode(',', $cid);
    $result = array();
    $cid        = explode(',', $cid);
    $got_source = strlen($source);
    $result     = array();
    // create per-source contact IDs array
    foreach ($cid as $id) {
        // get source from decoded ID
        if ($sep = strrpos($id, '-')) {
            $contact_id = substr($id, 0, $sep);
            $source_id  = substr($id, $sep+1);
            if (strlen($source_id)) {
                $result[(string)$source_id][] = $contact_id;
        // extract source ID from contact ID (it's there in search mode)
        // see #1488959 and #1488862 for reference
        if (!$got_source) {
            if ($sep = strrpos($id, '-')) {
                $contact_id = substr($id, 0, $sep);
                $source_id  = (string) substr($id, $sep+1);
                if (strlen($source_id)) {
                    $result[$source_id][] = $contact_id;
                }
            }
        }
        else {
            if (substr($id, -($got_source+1)) == "-$source") {
                $id = substr($id, 0, -($got_source+1));
            }
            $result[$source][] = $id;
        }
    }