3namespace Bitrix\Calendar\ICal\MailInvitation;
5use Bitrix\Calendar\ICal\Basic\RecurrenceRuleProperty;
6use Bitrix\Calendar\ICal\Builder\Attach;
7use Bitrix\Calendar\ICal\Builder\Attendee;
8use Bitrix\Calendar\ICal\Builder\Calendar;
9use Bitrix\Calendar\ICal\Builder\Dictionary;
10use Bitrix\Calendar\ICal\Builder\Event;
11use Bitrix\Calendar\ICal\Builder\StandardObservances;
12use Bitrix\Calendar\ICal\Builder\Timezone;
13use Bitrix\Calendar\Util;
15use Bitrix\Main\Loader;
16use Bitrix\Main\Localization\Loc;
17use Bitrix\Main\ObjectException;
18use Bitrix\Main\Type\Date;
46 $this->
event = $event;
65 && empty($this->event[
'ICAL_ATTACHES']?->getCollection())
73 if (!empty($this->event[
'ICAL_ATTACHES']?->getCollection()))
89 if (is_string($rrule))
91 $rrule = \CCalendarEvent::ParseRRULE($rrule);
94 return is_array($rrule)
104 if (empty($this->event[
'ICAL_ATTACHES']->getCollection()))
109 $filesDescription = [];
110 if (is_iterable($this->event[
'ICAL_ATTACHES']))
112 foreach ($this->event[
'ICAL_ATTACHES'] as $attach)
114 if ($attach instanceof
Attach)
116 $filesDescription[] =
"{$attach->getName()} ({$attach->getLink()})";
121 return Loc::getMessage(
'EC_FILES_TITLE') .
":\n" . implode(
"\n", $filesDescription) .
"";
133 : array_map(
function ($exDate) {
134 return new Date($exDate,
'd.m.Y');
135 }, explode(
';', $exDates));
142 protected function getOrganizerMailTo(): string
144 if (!Loader::includeModule(
'mail'))
150 $organizer = $this->
event[
'ICAL_ORGANIZER'];
151 if ($organizer ===
null)
153 $user = Helper::getUserById($this->event[
'MEETING_HOST']);
154 $organizer = Attendee::createInstance(
166 foreach ($boxes as $box)
169 if ($box[
'EMAIL'] === $organizer->getMailTo())
171 return $organizer->getMailTo();
181 [$replyTo,
$backUrl] = User::getReplyTo(
183 $this->event[
'OWNER_ID'],
185 $this->event[
'PARENT_ID'],
210 $isFullDay = $this->
event[
'DT_SKIP_TIME'] ===
'Y';
211 $icalEvent = Event::createInstance($this->uid)
218 ->setWithTimezone(!$isFullDay)
219 ->setWithTime(!$isFullDay)
221 ->setTransparent(Dictionary::TRANSPARENT[
$event[
'ACCESSIBILITY']] ?? Dictionary::TRANSPARENT[
'busy'])
223 ->setLocation(\CCalendar::GetTextLocation(
$event[
'LOCATION'] ??
null))
224 ->setSequence((
int)
$event[
'VERSION'])
225 ->setStatus(Dictionary::EVENT_STATUS[
'confirmed'])
228 if (!empty(
$event[
'ICAL_ATTENDEES']) && !(
$event[
'MEETING'][
'HIDE_GUESTS'] ??
true))
230 $icalEvent->setAttendees(
$event[
'ICAL_ATTENDEES']);
233 if (!empty(
$event[
'ICAL_ORGANIZER']))
235 $icalEvent->setOrganizer(
$event[
'ICAL_ORGANIZER'], $this->getOrganizerMailTo());
239 ->setMethod(
'REQUEST')
240 ->setTimezones(Timezone::createInstance()
241 ->setTimezoneId(Helper::getTimezoneObject(
$event[
'TZ_FROM']))
242 ->setObservance(StandardObservances::createInstance()
243 ->setOffsetFrom(Helper::getTimezoneObject(
$event[
'TZ_FROM']))
244 ->setOffsetTo(Helper::getTimezoneObject(
$event[
'TZ_TO']))
248 ->addEvent($icalEvent)
static createInstance(string $name=null)
prepareRecurrenceRule($rrule)
__construct(array $event)
static createInstance(array $event)
parseText(?string $description)
prepareExDate(string $exDates=null)
prepareDescription(string $description=null)
static getDateObject(string $date=null, ?bool $fullDay=true, ?string $tz='UTC')
static getUserMailboxes($userId=null, bool $onlyIds=false)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(Loader::includeModule( 'bitrix24')) elseif(Loader::includeModule('intranet') &&CIntranetUtils::getPortalZone() !=='ru') $description
if($request->getPost('Update') !==null) elseif( $request->getPost( 'Apply') !==null) elseif($request->getPost('RestoreDefaults') !==null) $backUrl