From 32eb977b1268ce1e32ab652af6059f49ce59c2f5 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 27 Nov 2014 05:40:40 -0500
Subject: [PATCH] Merge branch 'master' of github.com:roundcube/roundcubemail

---
 INSTALL                                   |    2 +-
 tests/src/Csv2vcard/gmail.csv             |    0 
 tests/src/Csv2vcard/gmail.vcf             |    2 ++
 program/lib/Roundcube/rcube_csv2vcard.php |   25 ++++++++++++++++++++++---
 program/lib/Roundcube/rcube_utils.php     |    2 +-
 5 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/INSTALL b/INSTALL
index ef1c59b..817d98c 100644
--- a/INSTALL
+++ b/INSTALL
@@ -12,7 +12,7 @@
 * The Apache, Lighttpd, Cherokee or Hiawatha web server
 * .htaccess support allowing overrides for DirectoryIndex
 * PHP Version 5.3.7 or greater including
-   - PCRE, DOM, JSON, XML, Session, Sockets (required)
+   - PCRE, DOM, JSON, Session, Sockets (required)
    - PHP Data Objects (PDO) with driver for either MySQL, PostgreSQL or SQLite (required)
    - Libiconv, Zip (recommended)
    - OpenSSL, Fileinfo, Mcrypt, mbstring (optional)
diff --git a/program/lib/Roundcube/rcube_csv2vcard.php b/program/lib/Roundcube/rcube_csv2vcard.php
index 802ca73..8eff4d5 100644
--- a/program/lib/Roundcube/rcube_csv2vcard.php
+++ b/program/lib/Roundcube/rcube_csv2vcard.php
@@ -302,6 +302,7 @@
             'Value' => array(
                 'home' => 'email:home',
                 'work' => 'email:work',
+                '*'    => 'email:other',
             ),
         ),
         'Phone' => array(
@@ -567,8 +568,19 @@
 
             foreach ($item as $item_key => $item_idx) {
                 $value = $data[$item_idx];
-                if ($value !== null && $value !== '' && ($data_idx = $this->gmail_label_map[$key][$item_key][$type])) {
-                    $contact[$data_idx] = $value;
+                if ($value !== null && $value !== '') {
+                    foreach (array($type, '*') as $_type) {
+                        if ($data_idx = $this->gmail_label_map[$key][$item_key][$_type]) {
+                            if (!empty($contact[$data_idx])) {
+                                $contact[$data_idx]   = (array) $contact[$data_idx];
+                                $contact[$data_idx][] = $value;
+                            }
+                            else {
+                                $contact[$data_idx] = $value;
+                            }
+                            break;
+                        }
+                    }
                 }
             }
         }
@@ -624,7 +636,14 @@
         $vcard = new rcube_vcard();
         foreach ($contact as $name => $value) {
             $name = explode(':', $name);
-            $vcard->set($name[0], $value, $name[1]);
+            if (is_array($value) && $name[0] != 'address') {
+                foreach ((array) $value as $val) {
+                    $vcard->set($name[0], $val, $name[1]);
+                }
+            }
+            else {
+                $vcard->set($name[0], $value, $name[1]);
+            }
         }
 
         // add to the list
diff --git a/program/lib/Roundcube/rcube_utils.php b/program/lib/Roundcube/rcube_utils.php
index a51247e..add97ee 100644
--- a/program/lib/Roundcube/rcube_utils.php
+++ b/program/lib/Roundcube/rcube_utils.php
@@ -797,7 +797,7 @@
         // try to parse string with DateTime first
         if (!empty($date)) {
             try {
-                $dt = new DateTime($date, $timezone);
+                $dt = $timezone ? new DateTime($date, $timezone) : new DateTime($date);
             }
             catch (Exception $e) {
                 // ignore
diff --git a/tests/src/Csv2vcard/gmail.csv b/tests/src/Csv2vcard/gmail.csv
index 1de3033..b95cb01 100644
--- a/tests/src/Csv2vcard/gmail.csv
+++ b/tests/src/Csv2vcard/gmail.csv
Binary files differ
diff --git a/tests/src/Csv2vcard/gmail.vcf b/tests/src/Csv2vcard/gmail.vcf
index 2a56311..e9486b2 100644
--- a/tests/src/Csv2vcard/gmail.vcf
+++ b/tests/src/Csv2vcard/gmail.vcf
@@ -8,6 +8,8 @@
 CATEGORIES:My Contacts,Test
 EMAIL;TYPE=INTERNET;TYPE=HOME:home@aaa.pl
 EMAIL;TYPE=INTERNET;TYPE=WORK:work@email.pl
+EMAIL;TYPE=INTERNET;TYPE=OTHER:unknown@email.com
+EMAIL;TYPE=INTERNET;TYPE=OTHER:other@email.com
 TEL;TYPE=pager:pager
 TEL;TYPE=pref:mainphone
 TEL;TYPE=home:homephone

--
Gitblit v1.9.1