PluginProbe
Fluent Booking – The Ultimate Appointments Scheduling, Events Booking, Events Calendar Solution / 2.5.0
Fluent Booking – The Ultimate Appointments Scheduling, Events Booking, Events Calendar Solution v2.5.0
2.5.0 2.4.0 2.3.0 2.2.5 2.2.0 2.1.2 2.1.1 trunk 1.10.0 1.10.01 1.10.02 1.5.0 1.5.01 1.5.02 1.5.1 1.5.10 1.5.20 1.5.21 1.5.22 1.5.23 1.5.24 1.5.25 1.6.0 1.7.0 1.7.1 All 34 releases
← All changes | vendor/wpfluent/caldav/src/ICal/Event.php +31 -9 1.5.0 → 2.5.0 View file →
@@ -61,24 +61,42 @@
61 61 'dtstart' => $this->getDtStart(),
62 62 'dtend' => $this->getDtEnd()
63 63 ];
64 64
65 + $timezone = !empty($this->data['timezone']) && $this->data['timezone'] !== 'UTC'
66 + ? $this->data['timezone']
67 + : null;
68 +
69 + $prefix = $timezone ? ';TZID=' . $timezone . ':' : ':';
70 + $format = $timezone ? 'Ymd\THis' : $this->dateTimeFormat;
71 +
65 72 foreach ($dates as $key => $value) {
66 73
67 - $dateTime = $value;
74 + if ($this->isPrefixedDateTime($value)) {
75 + continue;
76 + }
68 77
69 - if (is_string($value)) {
70 - $dateTime = new DateTime($value, new DateTimeZone('UTC'));
78 + $dateTime = is_string($value)
79 + ? new DateTime($value, new DateTimeZone('UTC'))
80 + : $value;
81 +
82 + if (!$dateTime instanceof DateTime) {
83 + throw new Exception("Invalid value: {$value} for {$key}.");
71 84 }
72 85
73 - if ($dateTime instanceof DateTime) {
74 - $this->data[$key] = $dateTime->format($this->dateTimeFormat);
75 - } else {
76 - throw new Exception("Invalid value: {$value} for {$key}.");
86 + if ($timezone) {
87 + $dateTime->setTimezone(new DateTimeZone($timezone));
77 88 }
89 +
90 + $this->data[$key] = $prefix . $dateTime->format($format);
78 91 }
79 92 }
80 93
94 + private function isPrefixedDateTime($value)
95 + {
96 + return is_string($value) && isset($value[0]) && ($value[0] === ':' || $value[0] === ';');
97 + }
98 +
81 99 protected function getDtStart()
82 100 {
83 101 if (!isset($this->data['dtstart'])) {
84 102 if (!isset($this->data['DTSTART'])) {
@@ -164,8 +182,10 @@
164 182 }
165 183
166 184 $str = rtrim($str, ';');
167 185
186 + $str .= ';SCHEDULE-AGENT=CLIENT';
187 +
168 188 $str .= ":mailto:{$attendee['email']}";
169 189
170 190 $attendee['str'] = $str;
171 191 }
@@ -205,8 +225,10 @@
205 225 }
206 226
207 227 $str = rtrim($str, ';');
208 228
229 + $str .= ';SCHEDULE-AGENT=CLIENT';
230 +
209 231 $str .= ":mailto:{$organizer['email']}";
210 232
211 233 $organizer['str'] = $str;
212 234 }
@@ -337,10 +359,10 @@
337 359 $calendar[] = "DTSTAMP:{$this->data['dtstamp']}";
338 360 $calendar[] = "LAST-MODIFIED:{$this->data['last-modified']}";
339 361 $calendar[] = "SEQUENCE:{$this->data['sequence']}";
340 362 $calendar[] = "UID:{$this->data['uid']}";
341 - $calendar[] = "DTSTART:{$this->data['dtstart']}";
342 - $calendar[] = "DTEND:{$this->data['dtend']}";
363 + $calendar[] = "DTSTART{$this->data['dtstart']}";
364 + $calendar[] = "DTEND{$this->data['dtend']}";
343 365
344 366 if (isset($this->data['transp'])) {
345 367 $calendar[] = "TRANSP:{$this->data['transp']}";
346 368 } else {