diff options
author | alecpl <alec@alec.pl> | 2009-10-05 07:20:36 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2009-10-05 07:20:36 +0000 |
commit | 757d2bb92430a2654be0aee2c299c6ef3a3fdc2b (patch) | |
tree | 9cfd55bc80e4e9024db60f941e16840822dc9664 | |
parent | 3f97120cb1f546f9c7973f11949e37ac1fb23412 (diff) |
- Fix bugs in unused addressbook copy contact function (#1486199)
-rw-r--r-- | program/steps/addressbook/copy.inc | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/program/steps/addressbook/copy.inc b/program/steps/addressbook/copy.inc index a27b67b09..bc082b675 100644 --- a/program/steps/addressbook/copy.inc +++ b/program/steps/addressbook/copy.inc @@ -25,23 +25,28 @@ if (!$OUTPUT->ajax_call) $cid = get_input_value('_cid', RCUBE_INPUT_POST); $target = get_input_value('_to', RCUBE_INPUT_POST); -if ($cid && preg_match('/^[a-z0-9\-_=]+(,[a-z0-9\-_=]+)*$/i', $cid) && strlen($target) && $target != $source) + +if ($cid && preg_match('/^[a-z0-9\-_=]+(,[a-z0-9\-_=]+)*$/i', $cid) && strlen($target) && $target !== $source) { - $success = false; + $success = 0; $TARGET = $RCMAIL->get_address_book($target); if ($TARGET && $TARGET->ready && !$TARGET->readonly) { - $plugin = $RCMAIL->plugins->exec_hook('create_contact', array('record' => $CONTACTS->search($CONTACTS->primary_key, $cid), 'source' => $target)); + $arr_cids = split(',', $cid); + foreach ($arr_cids as $cid) { + $plugin = $RCMAIL->plugins->exec_hook('create_contact', array('record' => $CONTACTS->get_record($cid, true), 'source' => $target)); $a_record = $plugin['record']; if (!$plugin['abort']) - $success = $TARGET->insert($CONTACTS->search($a_record, true)); + if ($TARGET->insert($a_record, true)) + $success++; + } } - if (empty($success)) + if ($success == 0) $OUTPUT->show_message('copyerror', 'error'); else - $OUTPUT->show_message('copysuccess', 'notice', array('nr' => count($success))); + $OUTPUT->show_message('copysuccess', 'notice', array('nr' => $success)); // close connection to second address directory $TARGET->close(); |