summaryrefslogtreecommitdiff
path: root/program/steps/addressbook/save.inc
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2009-08-29 18:41:17 +0000
committeralecpl <alec@alec.pl>2009-08-29 18:41:17 +0000
commite83f035887e3a463568465673ae92f365788c2a5 (patch)
tree4c6fee06d0c28dc88e21e6042052ddbb14cf659e /program/steps/addressbook/save.inc
parent0131ec9724ce5e1e1abff188a2976c447f826a04 (diff)
- Fix LDAP contact update when RDN field is changed (#1485788)
Diffstat (limited to 'program/steps/addressbook/save.inc')
-rw-r--r--program/steps/addressbook/save.inc13
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);