PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.4.8
Booking for Appointments and Events Calendar – Amelia v2.4.8
2.4.8 2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / vendor / sabre / vobject / lib / Property / ICalendar / Period.php
ameliabooking / vendor / sabre / vobject / lib / Property / ICalendar Last commit date
CalAddress.php 7 months ago Date.php 7 months ago DateTime.php 7 months ago Duration.php 7 months ago Period.php 7 months ago Recur.php 7 months ago
Period.php
136 lines
1 <?php
2
3 namespace AmeliaVendor\Sabre\VObject\Property\ICalendar;
4
5 use AmeliaVendor\Sabre\VObject\DateTimeParser;
6 use AmeliaVendor\Sabre\VObject\Property;
7 use AmeliaVendor\Sabre\Xml;
8
9 /**
10 * Period property.
11 *
12 * This object represents PERIOD values, as defined here:
13 *
14 * http://tools.ietf.org/html/rfc5545#section-3.8.2.6
15 *
16 * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
17 * @author Evert Pot (http://evertpot.com/)
18 * @license http://sabre.io/license/ Modified BSD License
19 */
20 class Period extends Property
21 {
22 /**
23 * In case this is a multi-value property. This string will be used as a
24 * delimiter.
25 *
26 * @var string
27 */
28 public $delimiter = ',';
29
30 /**
31 * Sets a raw value coming from a mimedir (iCalendar/vCard) file.
32 *
33 * This has been 'unfolded', so only 1 line will be passed. Unescaping is
34 * not yet done, but parameters are not included.
35 *
36 * @param string $val
37 */
38 public function setRawMimeDirValue($val)
39 {
40 $this->setValue(explode($this->delimiter, $val));
41 }
42
43 /**
44 * Returns a raw mime-dir representation of the value.
45 *
46 * @return string
47 */
48 public function getRawMimeDirValue()
49 {
50 return implode($this->delimiter, $this->getParts());
51 }
52
53 /**
54 * Returns the type of value.
55 *
56 * This corresponds to the VALUE= parameter. Every property also has a
57 * 'default' valueType.
58 *
59 * @return string
60 */
61 public function getValueType()
62 {
63 return 'PERIOD';
64 }
65
66 /**
67 * Sets the json value, as it would appear in a jCard or jCal object.
68 *
69 * The value must always be an array.
70 */
71 public function setJsonValue(array $value)
72 {
73 $value = array_map(
74 function ($item) {
75 return strtr(implode('/', $item), [':' => '', '-' => '']);
76 },
77 $value
78 );
79 parent::setJsonValue($value);
80 }
81
82 /**
83 * Returns the value, in the format it should be encoded for json.
84 *
85 * This method must always return an array.
86 *
87 * @return array
88 */
89 public function getJsonValue()
90 {
91 $return = [];
92 foreach ($this->getParts() as $item) {
93 list($start, $end) = explode('/', $item, 2);
94
95 $start = DateTimeParser::parseDateTime($start);
96
97 // This is a duration value.
98 if ('P' === $end[0]) {
99 $return[] = [
100 $start->format('Y-m-d\\TH:i:s'),
101 $end,
102 ];
103 } else {
104 $end = DateTimeParser::parseDateTime($end);
105 $return[] = [
106 $start->format('Y-m-d\\TH:i:s'),
107 $end->format('Y-m-d\\TH:i:s'),
108 ];
109 }
110 }
111
112 return $return;
113 }
114
115 /**
116 * This method serializes only the value of a property. This is used to
117 * create xCard or xCal documents.
118 *
119 * @param Xml\Writer $writer XML writer
120 */
121 protected function xmlSerializeValue(Xml\Writer $writer)
122 {
123 $writer->startElement(strtolower($this->getValueType()));
124 $value = $this->getJsonValue();
125 $writer->writeElement('start', $value[0][0]);
126
127 if ('P' === $value[0][1][0]) {
128 $writer->writeElement('duration', $value[0][1]);
129 } else {
130 $writer->writeElement('end', $value[0][1]);
131 }
132
133 $writer->endElement();
134 }
135 }
136