From a3b85d7b8560cdc1057fcaffa3acbd247b4b5b7a Mon Sep 17 00:00:00 2001 From: Thomas B. <thomas@roundcube.net> Date: Mon, 07 Oct 2013 13:19:03 -0400 Subject: [PATCH] Merge pull request #133 from cwickert/release-0.9-canned-responses --- program/steps/addressbook/export.inc | 25 +++++++++++++++---------- 1 files changed, 15 insertions(+), 10 deletions(-) diff --git a/program/steps/addressbook/export.inc b/program/steps/addressbook/export.inc index 04b98a3..11c9ca4 100644 --- a/program/steps/addressbook/export.inc +++ b/program/steps/addressbook/export.inc @@ -7,7 +7,10 @@ | This file is part of the Roundcube Webmail client | | Copyright (C) 2008-2011, The Roundcube Dev Team | | Copyright (C) 2011, Kolab Systems AG | - | Licensed under the GNU GPL | + | | + | 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: | | Export the selected address book as vCard file | @@ -16,14 +19,12 @@ | Author: Thomas Bruederli <roundcube@gmail.com> | | Author: Aleksander Machniak <machniak@kolabsys.com> | +-----------------------------------------------------------------------+ - - $Id$ - */ // Use search result if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search']])) { + $sort_col = $RCMAIL->config->get('addressbook_sort_col', 'name'); $search = (array)$_SESSION['search'][$_REQUEST['_search']]; $records = array(); @@ -41,7 +42,7 @@ while ($row = $result->next()) { $row['sourceid'] = $s; - $key = $row['name'] . ':' . $row['sourceid']; + $key = rcube_addressbook::compose_contact_key($row, $sort_col); $records[$key] = $row; } unset($result); @@ -66,29 +67,33 @@ } // send downlaod headers -send_nocacheing_headers(); header('Content-Type: text/x-vcard; charset='.RCMAIL_CHARSET); header('Content-Disposition: attachment; filename="rcube_contacts.vcf"'); while ($result && ($row = $result->next())) { // we already have a vcard record if ($row['vcard'] && $row['name']) { - echo rcube_vcard::rfc2425_fold($row['vcard']) . "\n"; + // fix folding and end-of-line chars + $row['vcard'] = preg_replace('/\r|\n\s+/', '', $row['vcard']); + $row['vcard'] = preg_replace('/\n/', rcube_vcard::$eol, $row['vcard']); + echo rcube_vcard::rfc2425_fold($row['vcard']) . rcube_vcard::$eol; } // copy values into vcard object else { - $vcard = new rcube_vcard($row['vcard']); + $vcard = new rcube_vcard(); + $vcard->extend_fieldmap($CONTACTS->vcard_map); + $vcard->load($row['vcard']); $vcard->reset(); foreach ($row as $key => $values) { list($field, $section) = explode(':', $key); foreach ((array)$values as $value) { - if (is_array($value) || strlen($value)) + if (is_array($value) || @strlen($value)) $vcard->set($field, $value, strtoupper($section)); } } - echo $vcard->export(true) . "\n"; + echo $vcard->export(true) . rcube_vcard::$eol; } } -- Gitblit v1.9.1