From ecfaed571b2c38f4bcc2b6a0fa39fba15a5126ce Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Fri, 11 Nov 2011 10:04:45 -0500 Subject: [PATCH] - Apply fixes fom trunk up to r5414 --- program/steps/addressbook/copy.inc | 22 ++++++++++++++++------ 1 files changed, 16 insertions(+), 6 deletions(-) diff --git a/program/steps/addressbook/copy.inc b/program/steps/addressbook/copy.inc index 4ee885b..5e526e1 100644 --- a/program/steps/addressbook/copy.inc +++ b/program/steps/addressbook/copy.inc @@ -28,8 +28,9 @@ $target = get_input_value('_to', RCUBE_INPUT_POST); $target_group = get_input_value('_togid', RCUBE_INPUT_POST); -$success = 0; -$maxnum = $RCMAIL->config->get('max_group_members', 0); +$success = 0; +$errormsg = 'copyerror'; +$maxnum = $RCMAIL->config->get('max_group_members', 0); foreach ($cids as $source => $cid) { @@ -40,7 +41,7 @@ // It maight happen when copying records from search result // Do nothing, go to next source - if ($target == $source) { + if ((string)$target == (string)$source) { continue; } @@ -56,8 +57,14 @@ foreach ($cid as $cid) { $a_record = $CONTACTS->get_record($cid, true); - // check if contact exists, if so, we'll need it's ID - $result = $TARGET->search('email', $a_record['email'], true, true); + // Check if contact exists, if so, we'll need it's ID + // Note: Some addressbooks allows empty email address field + if (!empty($a_record['email'])) + $result = $TARGET->search('email', $a_record['email'], 1, true, true); + else if (!empty($a_record['name'])) + $result = $TARGET->search('name', $a_record['name'], 1, true, true); + else + $result = new rcube_result_set(); // insert contact record if (!$result->count) { @@ -78,6 +85,7 @@ else { $record = $result->first(); $ids[] = $record['ID']; + $errormsg = empty($a_record['email']) ? 'contactnameexists' : 'contactexists'; } } @@ -101,11 +109,13 @@ else if ($plugin['result']) { $success = $plugin['result']; } + + $errormsg = $plugin['message'] ? $plugin['message'] : 'copyerror'; } } if ($success == 0) - $OUTPUT->show_message('copyerror', 'error'); + $OUTPUT->show_message($errormsg, 'error'); else $OUTPUT->show_message('copysuccess', 'notice', array('nr' => $success)); -- Gitblit v1.9.1