summaryrefslogtreecommitdiff
path: root/roundcubemail/program/steps
diff options
context:
space:
mode:
authoralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2009-08-29 18:41:17 +0000
committeralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2009-08-29 18:41:17 +0000
commite6acc84d685860d9e2345af3a07cda2074d92fe8 (patch)
treedf40259f62f48e60c6b75cc6bc58e12c9448854d /roundcubemail/program/steps
parentbbe73e1571d7d0a98c9814cbbd4779f0614fab95 (diff)
- Fix LDAP contact update when RDN field is changed (#1485788)
git-svn-id: https://svn.roundcube.net/trunk@2889 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/steps')
-rw-r--r--roundcubemail/program/steps/addressbook/save.inc13
1 files changed, 10 insertions, 3 deletions
diff --git a/roundcubemail/program/steps/addressbook/save.inc b/roundcubemail/program/steps/addressbook/save.inc
index 639e0f2d1..b28294eea 100644
--- a/roundcubemail/program/steps/addressbook/save.inc
+++ b/roundcubemail/program/steps/addressbook/save.inc
@@ -57,17 +57,24 @@ if (!empty($cid))
$plugin = $RCMAIL->plugins->exec_hook('save_contact', array('id' => $cid, 'record' => $a_record, 'source' => get_input_value('_source', RCUBE_INPUT_GPC)));
$a_record = $plugin['record'];
- if (!$plugin['abort'] && $CONTACTS->update($cid, $a_record))
+ if (!$plugin['abort'] && ($result = $CONTACTS->update($cid, $a_record)))
{
+ // LDAP DN change
+ if (is_string($result) && strlen($result)>1) {
+ $newcid = $result;
+ // change cid in POST for 'show' action
+ $_POST['_cid'] = $newcid;
+ }
+
// define list of cols to be displayed
$a_js_cols = array();
- $record = $CONTACTS->get_record($cid, true);
+ $record = $CONTACTS->get_record($newcid ? $newcid : $cid, true);
foreach (array('name', 'email') as $col)
$a_js_cols[] = (string)$record[$col];
// update the changed col in list
- $OUTPUT->command('parent.update_contact_row', $cid, $a_js_cols);
+ $OUTPUT->command('parent.update_contact_row', $cid, $a_js_cols, $newcid);
// show confirmation
$OUTPUT->show_message('successfullysaved', 'confirmation', null, false);