summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2013-02-17 16:23:30 +0100
committerAleksander Machniak <alec@alec.pl>2013-02-17 16:23:30 +0100
commiteafb68b32160c73646a6d067b9352d05ceaf5023 (patch)
tree77e70c08d1982e5775f482e6b107a51d5b64a3b5
parent33dc8249fd7c9add67c874cec8d517a315e41dac (diff)
- Fix regression in handling LDAP contact identifiers (#1488959)
-rw-r--r--CHANGELOG1
-rw-r--r--program/js/app.js4
-rw-r--r--program/steps/addressbook/func.inc23
3 files changed, 18 insertions, 10 deletions
diff --git a/CHANGELOG b/CHANGELOG
index de14e445d..d7c211dae 100644
--- a/CHANGELOG
+++ b/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
diff --git a/program/js/app.js b/program/js/app.js
index 4ecbda706..65ad8a3c3 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -4225,7 +4225,7 @@ function rcube_webmail()
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);
}
@@ -4233,7 +4233,7 @@ function rcube_webmail()
// 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);
}
diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc
index f6d2ae519..9b01ebaa3 100644
--- a/program/steps/addressbook/func.inc
+++ b/program/steps/addressbook/func.inc
@@ -769,20 +769,27 @@ function rcmail_get_cids($filter = null)
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;
}
}