17 private $attendees = [];
18 private $attachment =
'';
25 $this->attendees = $attendees;
26 $this->method = $method;
31 $event = $this->prepareRequestEvent();
32 $this->uid = isset($event[
'DAV_XML_ID']) ? $event[
'DAV_XML_ID'] : ICalUtil::getUniqId();
35 ->setMethod(Dictionary::METHODS[$this->method])
36 ->setTimezones(Timezone::getInstance()
37 ->setTimezoneId($event[
'TZ_FROM'])
38 ->setObservance(StandardObservances::getInstance()
39 ->setOffsetFrom($event[
'TZ_FROM'])
40 ->setOffsetTo($event[
'TZ_TO'])
44 ->setEvent(Event::getInstance($this->uid)
45 ->setName($event[
'NAME'])
46 ->setAttendees($this->attendees)
47 ->setStartsAt(
Util::getDateObject($event[
'DATE_FROM'], $event[
'SKIP_TIME'], $event[
'TZ_FROM']))
52 ->setWithTimezone(!$event[
'SKIP_TIME'])
53 ->setWithTime(!$event[
'SKIP_TIME'])
54 ->setOrganizer($this->attendees[$event[
'MEETING_HOST']], $this->getReplyAddress())
55 ->setDescription($event[
'DESCRIPTION'])
56 ->setTransparent(Dictionary::TRANSPARENT[$event[
'ACCESSIBILITY']])
57 ->setRRule($event[
'RRULE'])
58 ->setExdates($event[
'EXDATE'], $event[
'TZ_FROM'])
59 ->setLocation($event[
'TEXT_LOCATION'])
60 ->setSequence((
int)$event[
'VERSION'])
61 ->setStatus(Dictionary::INVITATION_STATUS[
'confirmed'])
70 return $this->attachment;
80 $event = $this->event;
81 $this->uid = $event[
'DAV_XML_ID'];
84 ->setMethod(Dictionary::METHODS[$this->method])
85 ->setEvent(Event::getInstance($event[
'DAV_XML_ID'])
86 ->setName($event[
'NAME'])
87 ->setAttendees([$this->attendees[$event[
'OWNER_ID']]])
88 ->setStartsAt(
Util::getDateObject($event[
'DATE_FROM'], $event[
'SKIP_TIME'], $event[
'TZ_FROM']))
91 ->setDtStamp(ICalUtil::getIcalDateTime())
92 ->setModified(ICalUtil::getIcalDateTime())
93 ->setWithTimezone(!$event[
'SKIP_TIME'])
94 ->setWithTime(!$event[
'SKIP_TIME'])
95 ->setOrganizer($event[
'ORGANIZER_MAIL'], $event[
'ORGANIZER_MAIL'][
'MAILTO'])
96 ->setDescription($event[
'DESCRIPTION'])
97 ->setTransparent($event[
'ACCESSIBILITY'])
99 ->setLocation($event[
'TEXT_LOCATION'])
100 ->setSequence((
int)$event[
'VERSION'])
101 ->setStatus(Dictionary::INVITATION_STATUS[
'confirmed'])
102 ->setUrl($event[
'URL'])
111 $event = $this->event;
112 $fullDay = $event[
'DT_SKIP_TIME'] ===
'Y';
115 ->setMethod(Dictionary::METHODS[$this->method])
116 ->setEvent(Event::getInstance($event[
'DAV_XML_ID'])
117 ->setName($event[
'NAME'])
118 ->setAttendees($this->attendees)
122 ->setDtStamp(ICalUtil::getIcalDateTime())
124 ->setWithTimezone(!$fullDay)
125 ->setWithTime(!$fullDay)
126 ->setOrganizer($this->attendees[$event[
'MEETING_HOST']], $this->getReplyAddress())
127 ->setDescription($event[
'DESCRIPTION'])
128 ->setTransparent(Dictionary::TRANSPARENT[$event[
'ACCESSIBILITY']])
130 ->setLocation($event[
'TEXT_LOCATION'])
131 ->setSequence((
int)$event[
'VERSION'] + 1)
132 ->setStatus(Dictionary::INVITATION_STATUS[
'cancelled'])
139 private function getReplyAddress(): string
141 if (Loader::includeModule(
'mail'))
145 $this->event[
'OWNER_ID'],
147 $this->event[
'PARENT_ID'],
155 private function prepareRequestEvent()
157 $event = $this->event;
159 if (!empty($event[
'ATTACHES']))
162 foreach ($event[
'ATTACHES'] as $attach)
164 $filesDesc[] = $attach[
'name'] .
' (' . $attach[
'link'] .
')';
167 if (!empty($event[
'DESCRIPTION']))
169 $event[
'DESCRIPTION'] .=
"\r\n";
171 $event[
'DESCRIPTION'] .=
Loc::getMessage(
'EC_FILES_TITLE') .
': ' . implode(
', ', $filesDesc);
__construct($data, $attendees, $method)
prepareCancelAttachment()
prepareRequestAttachment()
static getDateObject(string $date=null, $fullDay=true, $tz='UTC')
static getReplyTo($siteId, $userId, $entityType, $entityId, $entityLink=null, $backurl=null)
static getMessage($code, $replace=null, $language=null)