From 000fe38c715ddf50be615a91612cb3f9f4a7600c Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Wed, 18 May 2011 10:06:31 -0400
Subject: [PATCH] Flip field type aliases (#1487910)
---
program/include/rcube_vcard.php | 23 ++++++++++++++++++++---
1 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/program/include/rcube_vcard.php b/program/include/rcube_vcard.php
index 4457bf3..7d5f309 100644
--- a/program/include/rcube_vcard.php
+++ b/program/include/rcube_vcard.php
@@ -49,7 +49,7 @@
'spouse' => 'X-SPOUSE',
);
private $typemap = array('iPhone' => 'mobile', 'CELL' => 'mobile');
- private $phonetypemap = array('HOME1' => 'HOME', 'BUSINESS1' => 'WORK', 'BUSINESS2' => 'WORK2', 'WORKFAX' => 'BUSINESSFAX');
+ private $phonetypemap = array('HOME1' => 'HOME', 'BUSINESS1' => 'WORK', 'BUSINESS2' => 'WORK2', 'BUSINESSFAX' => 'WORKFAX');
private $addresstypemap = array('BUSINESS' => 'WORK');
private $immap = array('X-JABBER' => 'jabber', 'X-ICQ' => 'icq', 'X-MSN' => 'msn', 'X-AIM' => 'aim', 'X-YAHOO' => 'yahoo', 'X-SKYPE' => 'skype', 'X-SKYPE-USERNAME' => 'skype');
@@ -95,6 +95,10 @@
($detected_charset = self::detect_encoding(self::vcard_encode($this->raw))) && $detected_charset != RCMAIL_CHARSET) {
$this->raw = self::charset_convert($this->raw, $detected_charset);
}
+
+ // consider FN empty if the same as the primary e-mail address
+ if ($this->raw['FN'][0][0] == $this->raw['EMAIL'][0][0])
+ $this->raw['FN'][0][0] = '';
// find well-known address fields
$this->displayname = $this->raw['FN'][0][0];
@@ -327,6 +331,19 @@
}
}
+ /**
+ * Setter for individual vcard properties
+ *
+ * @param string VCard tag name
+ * @param array Value-set of this vcard property
+ * @param boolean Set to true if the value-set should be appended instead of replacing any existing value-set
+ */
+ public function set_raw($tag, $value, $append = false)
+ {
+ $index = $append ? count($this->raw[$tag]) : 0;
+ $this->raw[$tag][$index] = (array)$value;
+ }
+
/**
* Find index with the '$type' attribute
@@ -402,7 +419,7 @@
if (preg_match('/^END:VCARD$/i', $line)) {
// parse vcard
$obj = new rcube_vcard(self::cleanup($vcard_block), $charset, true);
- if (!empty($obj->displayname))
+ if (!empty($obj->displayname) || !empty($obj->email))
$out[] = $obj;
$in_vcard_block = false;
@@ -647,7 +664,7 @@
return $result;
}
else {
- return strtr($s, array("\r" => '', '\\\\' => '\\', '\n' => "\n", '\N' => "\n", '\,' => ',', '\;' => ';'));
+ return strtr($s, array("\r" => '', '\\\\' => '\\', '\n' => "\n", '\N' => "\n", '\,' => ',', '\;' => ';', '\:' => ':'));
}
}
--
Gitblit v1.9.1