annotate vendor/sabre/vobject/lib/Property/Uri.php @ 43:771f6803cc4b default tip

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