From 2965a981b7ec22866fbdf2d567d87e2d068d3617 Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Fri, 31 Jul 2015 16:04:08 -0400
Subject: [PATCH] Allow to search and import missing PGP pubkeys from keyservers using Publickey.js

---
 program/steps/addressbook/copy.inc |   35 ++++++++++++++++++++---------------
 1 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/program/steps/addressbook/copy.inc b/program/steps/addressbook/copy.inc
index 5e526e1..e4e2765 100644
--- a/program/steps/addressbook/copy.inc
+++ b/program/steps/addressbook/copy.inc
@@ -5,8 +5,11 @@
  | program/steps/addressbook/copy.inc                                    |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2007, The Roundcube Dev Team                            |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2007-2013, The Roundcube Dev Team                       |
+ |                                                                       |
+ | Licensed under the GNU General Public License version 3 or            |
+ | any later version with exceptions for skins & plugins.                |
+ | See the README file for a full license statement.                     |
  |                                                                       |
  | PURPOSE:                                                              |
  |   Copy a contact record from one direcotry to another                 |
@@ -14,9 +17,6 @@
  +-----------------------------------------------------------------------+
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
-
- $Id: copy.inc 471 2007-02-09 21:25:50Z thomasb $
-
 */
 
 // only process ajax requests
@@ -25,15 +25,14 @@
 
 
 $cids         = rcmail_get_cids();
-$target       = get_input_value('_to', RCUBE_INPUT_POST);
-$target_group = get_input_value('_togid', RCUBE_INPUT_POST);
+$target       = rcube_utils::get_input_value('_to', rcube_utils::INPUT_POST);
+$target_group = rcube_utils::get_input_value('_togid', rcube_utils::INPUT_POST);
 
 $success  = 0;
 $errormsg = 'copyerror';
 $maxnum   = $RCMAIL->config->get('max_group_members', 0);
 
-foreach ($cids as $source => $cid)
-{
+foreach ($cids as $source => $cid) {
     // Something wrong, target not specified
     if (!strlen($target)) {
         break;
@@ -57,10 +56,16 @@
     foreach ($cid as $cid) {
         $a_record = $CONTACTS->get_record($cid, true);
 
+        // avoid copying groups
+        if ($a_record['_type'] == 'group')
+            continue;
+
         // 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);
+        // @TODO: should we check all email addresses?
+        $email = $CONTACTS->get_col_values('email', $a_record, true);
+        if (!empty($email))
+            $result = $TARGET->search('email', $email[0], 1, true, true);
         else if (!empty($a_record['name']))
             $result = $TARGET->search('name', $a_record['name'], 1, true, true);
         else
@@ -83,9 +88,9 @@
             }
         }
         else {
-            $record = $result->first();
-            $ids[] = $record['ID'];
-            $errormsg = empty($a_record['email']) ? 'contactnameexists' : 'contactexists';
+            $record   = $result->first();
+            $ids[]    = $record['ID'];
+            $errormsg = empty($email) ? 'contactnameexists' : 'contactexists';
         }
     }
 
@@ -114,7 +119,7 @@
     }
 }
 
-if ($success == 0)
+if (!$success)
     $OUTPUT->show_message($errormsg, 'error');
 else
     $OUTPUT->show_message('copysuccess', 'notice', array('nr' => $success));

--
Gitblit v1.9.1