diff options
author | alecpl <alec@alec.pl> | 2009-08-29 18:41:17 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2009-08-29 18:41:17 +0000 |
commit | e83f035887e3a463568465673ae92f365788c2a5 (patch) | |
tree | 4c6fee06d0c28dc88e21e6042052ddbb14cf659e /program/steps/addressbook | |
parent | 0131ec9724ce5e1e1abff188a2976c447f826a04 (diff) |
- Fix LDAP contact update when RDN field is changed (#1485788)
Diffstat (limited to 'program/steps/addressbook')
-rw-r--r-- | program/steps/addressbook/save.inc | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/program/steps/addressbook/save.inc b/program/steps/addressbook/save.inc index 639e0f2d1..b28294eea 100644 --- a/program/steps/addressbook/save.inc +++ b/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); |