comparison vendor/sabre/vobject/lib/Property/Binary.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
6 LogicException,
7 Sabre\VObject\Property;
8
9 /**
10 * BINARY property
11 *
12 * This object represents BINARY values.
13 *
14 * Binary values are most commonly used by the iCalendar ATTACH property, and
15 * the vCard PHOTO property.
16 *
17 * This property will transparently encode and decode to base64.
18 *
19 * @copyright Copyright (C) 2011-2015 fruux GmbH (https://fruux.com/).
20 * @author Evert Pot (http://evertpot.com/)
21 * @license http://sabre.io/license/ Modified BSD License
22 */
23 class Binary extends Property {
24
25 /**
26 * In case this is a multi-value property. This string will be used as a
27 * delimiter.
28 *
29 * @var string|null
30 */
31 public $delimiter = null;
32
33 /**
34 * Updates the current value.
35 *
36 * This may be either a single, or multiple strings in an array.
37 *
38 * @param string|array $value
39 * @return void
40 */
41 public function setValue($value) {
42
43 if(is_array($value)) {
44
45 if(count($value) === 1) {
46 $this->value = $value[0];
47 } else {
48 throw new \InvalidArgumentException('The argument must either be a string or an array with only one child');
49 }
50
51 } else {
52
53 $this->value = $value;
54
55 }
56
57 }
58
59 /**
60 * Sets a raw value coming from a mimedir (iCalendar/vCard) file.
61 *
62 * This has been 'unfolded', so only 1 line will be passed. Unescaping is
63 * not yet done, but parameters are not included.
64 *
65 * @param string $val
66 * @return void
67 */
68 public function setRawMimeDirValue($val) {
69
70 $this->value = base64_decode($val);
71
72 }
73
74 /**
75 * Returns a raw mime-dir representation of the value.
76 *
77 * @return string
78 */
79 public function getRawMimeDirValue() {
80
81 return base64_encode($this->value);
82
83 }
84
85 /**
86 * Returns the type of value.
87 *
88 * This corresponds to the VALUE= parameter. Every property also has a
89 * 'default' valueType.
90 *
91 * @return string
92 */
93 public function getValueType() {
94
95 return 'BINARY';
96
97 }
98
99 /**
100 * Returns the value, in the format it should be encoded for json.
101 *
102 * This method must always return an array.
103 *
104 * @return array
105 */
106 public function getJsonValue() {
107
108 return array(base64_encode($this->getValue()));
109
110 }
111
112 /**
113 * Sets the json value, as it would appear in a jCard or jCal object.
114 *
115 * The value must always be an array.
116 *
117 * @param array $value
118 * @return void
119 */
120 public function setJsonValue(array $value) {
121
122 $value = array_map('base64_decode', $value);
123 parent::setJsonValue($value);
124
125 }
126
127 }