diff options
author | Aleksander Machniak <alec@alec.pl> | 2014-08-01 12:49:37 +0200 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2014-08-01 12:52:33 +0200 |
commit | 1fac787d2cedc2ada103418bf91895b3edf1dd8f (patch) | |
tree | fa809234923c7ceb849bc7348b3bb31a8224dbbc /program/lib/Roundcube/rcube_vcard.php | |
parent | d1749659d25c5b68600aef3557284cedff8dded1 (diff) |
Fix various iCloud vCard issues, added fallback for external photos (#1489993)
Conflicts:
program/steps/addressbook/func.inc
Diffstat (limited to 'program/lib/Roundcube/rcube_vcard.php')
-rw-r--r-- | program/lib/Roundcube/rcube_vcard.php | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/program/lib/Roundcube/rcube_vcard.php b/program/lib/Roundcube/rcube_vcard.php index 4a2684f10..96add110f 100644 --- a/program/lib/Roundcube/rcube_vcard.php +++ b/program/lib/Roundcube/rcube_vcard.php @@ -110,7 +110,7 @@ class rcube_vcard public function load($vcard, $charset = RCUBE_CHARSET, $detect = false) { self::$values_decoded = false; - $this->raw = self::vcard_decode($vcard); + $this->raw = self::vcard_decode(self::cleanup($vcard)); // resolve charset parameters if ($charset == null) { @@ -496,7 +496,7 @@ class rcube_vcard if (preg_match('/^END:VCARD$/i', $line)) { // parse vcard - $obj = new rcube_vcard(self::cleanup($vcard_block), $charset, true, self::$fieldmap); + $obj = new rcube_vcard($vcard_block, $charset, true, self::$fieldmap); // FN and N is required by vCard format (RFC 2426) // on import we can be less restrictive, let's addressbook decide if (!empty($obj->displayname) || !empty($obj->surname) || !empty($obj->firstname) || !empty($obj->email)) { @@ -532,9 +532,9 @@ class rcube_vcard // Cleanup $vcard = preg_replace(array( // convert special types (like Skype) to normal type='skype' classes with this simple regex ;) - '/item(\d+)\.(TEL|EMAIL|URL)([^:]*?):(.*?)item\1.X-ABLabel:(?:_\$!<)?([\w-() ]*)(?:>!\$_)?./s', - '/^item\d*\.X-AB.*$/m', // remove cruft like item1.X-AB* - '/^item\d*\./m', // remove item1.ADR instead of ADR + '/item(\d+)\.(TEL|EMAIL|URL)([^:]*?):(.*?)item\1.X-ABLabel:(?:_\$!<)?([\w-() ]*)(?:>!\$_)?./si', + '/^item\d*\.X-AB.*$/mi', // remove cruft like item1.X-AB* + '/^item\d*\./mi', // remove item1.ADR instead of ADR '/\n+/', // remove empty lines '/^(N:[^;\R]*)$/m', // if N doesn't have any semicolons, add some ), |