| | |
| | | */ |
| | | public function __construct($vcard = null, $charset = RCUBE_CHARSET, $detect = false, $fieldmap = array()) |
| | | { |
| | | if (!empty($fielmap)) { |
| | | if (!empty($fieldmap)) { |
| | | $this->extend_fieldmap($fieldmap); |
| | | } |
| | | |
| | |
| | | if (preg_match('/^END:VCARD$/i', $line)) { |
| | | // parse vcard |
| | | $obj = new rcube_vcard(self::cleanup($vcard_block), $charset, true, self::$fieldmap); |
| | | if (!empty($obj->displayname) || !empty($obj->email)) { |
| | | // 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)) { |
| | | $out[] = $obj; |
| | | } |
| | | |
| | |
| | | $value[] = $attrvalues; |
| | | } |
| | | else if (is_bool($attrvalues)) { |
| | | // true means just tag, not tag=value, as in PHOTO;BASE64:... |
| | | // true means just a tag, not tag=value, as in PHOTO;BASE64:... |
| | | if ($attrvalues) { |
| | | $attr .= strtoupper(";$attrname"); |
| | | // vCard v3 uses ENCODING=B (#1489183) |
| | | if ($attrname == 'base64') { |
| | | $attr .= ";ENCODING=B"; |
| | | } |
| | | else { |
| | | $attr .= strtoupper(";$attrname"); |
| | | } |
| | | } |
| | | } |
| | | else { |
| | |
| | | } |
| | | return $result; |
| | | } |
| | | |
| | | $s = strtr($s, $rep2); |
| | | } |
| | | |
| | | return strtr($s, array("\r" => '', '\\\\' => '\\', '\n' => "\n", '\N' => "\n", '\,' => ',', '\;' => ';')); |
| | | // some implementations (GMail) use non-standard backslash before colon (#1489085) |
| | | // we will handle properly any backslashed character - removing dummy backslahes |
| | | // return strtr($s, array("\r" => '', '\\\\' => '\\', '\n' => "\n", '\N' => "\n", '\,' => ',', '\;' => ';')); |
| | | |
| | | $s = str_replace("\r", '', $s); |
| | | $pos = 0; |
| | | |
| | | while (($pos = strpos($s, '\\', $pos)) !== false) { |
| | | $next = substr($s, $pos + 1, 1); |
| | | if ($next == 'n' || $next == 'N') { |
| | | $s = substr_replace($s, "\n", $pos, 2); |
| | | } |
| | | else { |
| | | $s = substr_replace($s, '', $pos, 1); |
| | | } |
| | | |
| | | $pos += 1; |
| | | } |
| | | |
| | | return $s; |
| | | } |
| | | |
| | | /** |