From 3253b296c21c54df228de39ff3e4775974df81d5 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Fri, 20 May 2011 05:17:27 -0400 Subject: [PATCH] - Clear properly mailboxes cache on folder subscription change --- 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