comparison vendor/sabre/vobject/lib/Property/Uri.php @ 7:430dbd5346f7

vendor sabre as distributed
author Charlie Root
date Sat, 13 Jan 2018 09:06:10 -0500
parents
children
comparison
equal deleted inserted replaced
6:cec75ba50afc 7:430dbd5346f7
1 <?php
2
3 namespace Sabre\VObject\Property;
4
5 use Sabre\VObject\Property;
6
7 /**
8 * URI property
9 *
10 * This object encodes URI values. vCard 2.1 calls these URL.
11 *
12 * @copyright Copyright (C) 2011-2015 fruux GmbH (https://fruux.com/).
13 * @author Evert Pot (http://evertpot.com/)
14 * @license http://sabre.io/license/ Modified BSD License
15 */
16 class Uri extends Text {
17
18 /**
19 * In case this is a multi-value property. This string will be used as a
20 * delimiter.
21 *
22 * @var string|null
23 */
24 public $delimiter = null;
25
26 /**
27 * Returns the type of value.
28 *
29 * This corresponds to the VALUE= parameter. Every property also has a
30 * 'default' valueType.
31 *
32 * @return string
33 */
34 public function getValueType() {
35
36 return "URI";
37
38 }
39
40 /**
41 * Sets a raw value coming from a mimedir (iCalendar/vCard) file.
42 *
43 * This has been 'unfolded', so only 1 line will be passed. Unescaping is
44 * not yet done, but parameters are not included.
45 *
46 * @param string $val
47 * @return void
48 */
49 public function setRawMimeDirValue($val) {
50
51 // Normally we don't need to do any type of unescaping for these
52 // properties, however.. we've noticed that Google Contacts
53 // specifically escapes the colon (:) with a blackslash. While I have
54 // no clue why they thought that was a good idea, I'm unescaping it
55 // anyway.
56 //
57 // Good thing backslashes are not allowed in urls. Makes it easy to
58 // assume that a backslash is always intended as an escape character.
59 if ($this->name === 'URL') {
60 $regex = '# (?: (\\\\ (?: \\\\ | : ) ) ) #x';
61 $matches = preg_split($regex, $val, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
62 $newVal = '';
63 foreach($matches as $match) {
64 switch($match) {
65 case '\:' :
66 $newVal.=':';
67 break;
68 default :
69 $newVal.=$match;
70 break;
71 }
72 }
73 $this->value = $newVal;
74 } else {
75 $this->value = $val;
76 }
77
78 }
79
80 /**
81 * Returns a raw mime-dir representation of the value.
82 *
83 * @return string
84 */
85 public function getRawMimeDirValue() {
86
87 if (is_array($this->value)) {
88 return $this->value[0];
89 } else {
90 return $this->value;
91 }
92
93 }
94
95 }