12 'attendees' =>
'attendees',
15 'location' =>
'location',
16 'recurringRule' =>
'recurringRule',
17 'creatorId' =>
'creatorId',
19 'excludedDates' =>
'excludedDates',
24 'recurringRule' =>
'recurringRule',
27 'startTimezone' =>
'startTimezone',
28 'endTimezone' =>
'endTimezone',
29 'location' =>
'location',
30 'attendees' =>
'attendees',
31 'description' =>
'description',
32 'ownerId' =>
'ownerId',
33 'creatorId' =>
'creatorId',
34 'accessibility' =>
'accessibility',
35 'transparent' =>
'transparent',
36 'isPrivate' =>
'isPrivate',
37 'importance' =>
'importance',
38 'calendarType' =>
'calendarType',
39 'specialLabel' =>
'specialLabel',
40 'isFullDay' =>
'isFullDay',
42 'section' =>
'section',
44 'isActive' =>
'isActive',
45 'deleted' =>
'deleted',
46 'originalDateFrom' =>
'originalDateFrom',
60 private array $differenceFields = [];
92 $this->
event = $event;
103 $this->eventValueForCompare = $this->transformValuesForCompare($this->event);
104 $this->originalValueForCompare = $this->transformValuesForCompare($this->originalEvent);
105 $this->compareFields();
107 $this->significantFields = array_intersect($this->
getDifferenceKeyFields(), $this->getSignificantFields());
117 return (
bool)$this->differenceFields;
139 private function getFields():
array
158 return array_keys($this->differenceFields);
167 'event' => $this->differenceFields,
168 'originalEvent' => array_intersect_key($this->originalValueForCompare, $this->differenceFields),
179 'name' =>
$event->getName(),
180 'recurringRule' =>
$event->isRecurrence() ?
$event->getRecurringRule()->toString() :
null,
181 'start' => (string)
$event->getStart(),
182 'end' => (string)
$event->getEnd(),
183 'startTimeZone' =>
$event->getStartTimeZone() ? (string)
$event->getStartTimeZone() :
null,
184 'endTimeZone' =>
$event->getEndTimeZone() ? (string)
$event->getEndTimeZone() :
null,
185 'location' =>
$event->getLocation() ? (string)
$event->getLocation()->toString() :
'',
186 'attendees' => (string)
$event->getAttendeesCollection(),
187 'description' => trim(
$event->getDescription()),
188 'ownerId' =>
$event->getOwner() ?
$event->getOwner()->getId() :
null,
189 'creatorId' =>
$event->getCreator() ?
$event->getCreator()->getId():
null,
190 'hostId' =>
$event->getEventHost() ?
$event->getEventHost()->getId() :
null,
191 'meetingDescription' =>
$event->getMeetingDescription() ? (string)
$event->getMeetingDescription() :
null,
192 'accessibility' => (string)
$event->getAccessibility(),
193 'transparent' => (string)
$event->getTransparent(),
194 'isPrivate' => (string)
$event->getIsPrivate(),
195 'importance' => (string)
$event->getImportance(),
196 'calendarType' => (string)
$event->getCalendarType(),
197 'specialLabel' => (string)
$event->getSpecialLabel(),
198 'excludedDates' => (string)
$event->getExcludedDateCollection(),
199 'isFullDay' =>
$event->isFullDayEvent(),
200 'color' => (string)
$event->getColor(),
201 'section' =>
$event->getSection()->getId(),
202 'version' =>
$event->getVersion(),
203 'uid' => (string)
$event->getUid(),
204 'isActive' =>
$event->isActive(),
205 'deleted' =>
$event->isDeleted(),
206 'recurrenceId' =>
$event->getRecurrenceId(),
207 'originalDateFrom' =>
$event->getOriginalDateFrom(),
208 'dateCreate' => (string)
$event->getDateCreate(),
209 'dateModified' => (string)
$event->getDateModified(),
210 'reminds' => (string)
$event->getRemindCollection(),
217 private function getSignificantFields():
array
219 return self::SIGNIFICANT_FIELDS;
225 private function getCompareFields():
array
227 return self::COMPARE_FIELDS;
233 private function compareFields(): void
235 $this->compareHandler();
243 private function compareHandler(): void
245 foreach ($this->getCompareFields() as $field)
247 if (($this->eventValueForCompare[$field] ??
null) != ($this->originalValueForCompare[$field] ??
null))
249 $this->differenceFields[$field] = $this->eventValueForCompare[$field] ??
null;
259 if ($this->originalEvent->getExcludedDateCollection() || $this->event->getExcludedDateCollection())
262 $this->originalEvent->getExcludedDateCollection(),
263 $this->event->getExcludedDateCollection()
265 if (!$excludedDatesManager->isEqual())
267 $this->differenceFields[
'excludedDates'] = $excludedDatesManager
268 ->getDiffCollection()->toString(
';');
282 if (!$remindersCompareManager->isEqual())
284 $this->differenceFields[
'reminds'] = $remindersCompareManager->getDiffCollection()->toString(
';');
293 return $this->differenceFields;