From 359e19a19dd45d64d14c7b29461f0fbe4f8a50bd Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 03 Aug 2011 06:40:29 -0400
Subject: [PATCH] - Fix EOL character in vCard exports (#1487873)

---
 CHANGELOG                            |    1 +
 program/include/rcube_vcard.php      |    7 ++++---
 program/steps/addressbook/export.inc |    5 +++--
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 45d9305..28c5c28 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Fix EOL character in vCard exports (#1487873)
 - Added optional "multithreading" autocomplete feature
 - Plugin API: Added 'config_get' hook
 - Fixed new_user_identity plugin to work with updated rcube_ldap class (#1487994)
diff --git a/program/include/rcube_vcard.php b/program/include/rcube_vcard.php
index 90ee7da..c7dfe53 100644
--- a/program/include/rcube_vcard.php
+++ b/program/include/rcube_vcard.php
@@ -33,7 +33,7 @@
     'FN' => array(),
     'N' => array(array('','','','','')),
   );
-  static private $fieldmap = array(
+  private static $fieldmap = array(
     'phone'    => 'TEL',
     'birthday' => 'BDAY',
     'website'  => 'URL',
@@ -65,6 +65,7 @@
   public $notes;
   public $email = array();
 
+  public static $eol = "\r\n";
 
   /**
    * Constructor
@@ -640,11 +641,11 @@
         if (self::is_empty($value))
           continue;
 
-        $vcard .= self::vcard_quote($type) . $attr . ':' . self::vcard_quote($value) . "\n";
+        $vcard .= self::vcard_quote($type) . $attr . ':' . self::vcard_quote($value) . self::$eol;
       }
     }
 
-    return "BEGIN:VCARD\nVERSION:3.0\n{$vcard}END:VCARD";
+    return 'BEGIN:VCARD' . self::$eol . 'VERSION:3.0' . self::$eol . $vcard . 'END:VCARD';
   }
 
 
diff --git a/program/steps/addressbook/export.inc b/program/steps/addressbook/export.inc
index f890aca..a710aa2 100644
--- a/program/steps/addressbook/export.inc
+++ b/program/steps/addressbook/export.inc
@@ -73,7 +73,8 @@
 while ($result && ($row = $result->next())) {
     // we already have a vcard record
     if ($row['vcard'] && $row['name']) {
-        echo rcube_vcard::rfc2425_fold($row['vcard']) . "\n";
+        $row['vcard'] = preg_replace('/\r?\n/', rcube_vcard::$eol, $row['vcard']);
+        echo rcube_vcard::rfc2425_fold($row['vcard']) . rcube_vcard::$eol;
     }
     // copy values into vcard object
     else {
@@ -90,7 +91,7 @@
             }
         }
 
-        echo $vcard->export(true) . "\n";
+        echo $vcard->export(true) . rcube_vcard::$eol;
     }
 }
 

--
Gitblit v1.9.1