19 $eventId = (int)
$params[
'eventId'];
27 'bitrix:calendar.event.preview',
31 return ob_get_clean();
36 $eventId = (int)
$params[
'eventId'];
39 || !Loader::includeModule(
'calendar')
45 $events = \CCalendarEvent::getList(
51 'parseRecursion' =>
false,
52 'fetchAttendees' =>
true,
53 'checkPermissions' =>
true,
54 'setDefaultLimit' =>
false
58 return ($events && is_array($events[0]));
63 if (!Loader::includeModule(
'im'))
68 if (!(
$params[
'eventId'] ??
null) || !($eventId = (
int)
$params[
'eventId']))
74 $mapperFactory = ServiceLocator::getInstance()->get(
'calendar.service.mappers.factory');
76 $eventObject = $mapperFactory->getEvent()->getById($eventId);
77 $eventOptions = $eventObject->getEventOption();
78 $eventForView = \CCalendarEvent::getEventForViewInterface($eventId, [
79 'userId' => \CCalendar::GetCurUserId(),
80 'eventDate' =>
$params[
'eventDate'] ??
null,
85 || !self::shouldShowAttach($eventForView)
91 $attach = new \CIMMessageParamAttach(1, $eventObject->getColor());
93 'NAME' => $eventForView[
'NAME'],
97 $attach->AddDelimiter();
98 $attach->AddGrid(self::getImAttachGrid($eventForView, $eventOptions));
105 if (!Loader::includeModule(
'im'))
110 if (!class_exists(
'\Bitrix\Im\V2\Entity\Url\RichData'))
125 private static function getImAttachGrid(
array $eventForView, ?
EventOption $eventOption =
null):
array
131 if ($categoryName = $eventOption?->getCategory()->getName())
134 'NAME' => Loc::getMessage(
'CALENDAR_PREVIEW_ATTACH_CATEGORY'),
135 'VALUE' => $categoryName,
136 'DISPLAY' => $display,
137 'WIDTH' => $columnWidth,
142 'NAME' => Loc::getMessage(
'CALENDAR_PREVIEW_ATTACH_TIME'),
143 'VALUE' => self::getDateString($eventForView),
144 'DISPLAY' => $display,
145 'WIDTH' => $columnWidth,
148 if ($roomName = \CCalendar::GetTextLocation($eventForView[
'LOCATION'] ??
null))
151 'NAME' => Loc::getMessage(
'CALENDAR_PREVIEW_ATTACH_ROOM'),
152 'VALUE' => $roomName,
153 'DISPLAY' => $display,
154 'WIDTH' => $columnWidth,
158 $creator = self::getMeetingCreator($eventForView);
160 'NAME' => Loc::getMessage(
'CALENDAR_PREVIEW_ATTACH_CREATOR'),
161 'VALUE' => $creator[
'DISPLAY_NAME'],
162 'USER_ID' => $creator[
'ID'],
163 'DISPLAY' => $display,
164 'WIDTH' => $columnWidth,
167 if (
$description = ($eventForView[
'~DESCRIPTION'] ??
null))
170 'NAME' => Loc::getMessage(
'CALENDAR_PREVIEW_ATTACH_DESCRIPTION'),
172 'DISPLAY' => $display,
173 'WIDTH' => $columnWidth,
180 private static function shouldShowAttach(
array $eventForView): bool
191 private static function getDateString(
array $eventForView): string
193 $skipTime = $eventForView[
'DT_SKIP_TIME'] ===
'Y';
194 $fromTs = \CCalendar::Timestamp($eventForView[
'DATE_FROM']);
195 $toTs = \CCalendar::Timestamp($eventForView[
'DATE_TO']);
202 $fromTs -= $eventForView[
'~USER_OFFSET_FROM'];
203 $toTs -= $eventForView[
'~USER_OFFSET_TO'];
206 return \CCalendar::GetFromToHtml($fromTs, $toTs, $skipTime, $eventForView[
'DT_LENGTH']);
209 private static function getMeetingCreator(
array $eventForView): ?
array
211 $meetingCreator = [];
214 $eventForView[
'IS_MEETING']
215 && $eventForView[
'MEETING'][
'MEETING_CREATOR']
216 && $eventForView[
'MEETING'][
'MEETING_CREATOR'] !== $eventForView[
'MEETING_HOST']
219 $meetingCreator = \CCalendar::GetUser($eventForView[
'MEETING'][
'MEETING_CREATOR'],
true);
220 $meetingCreator[
'DISPLAY_NAME'] = \CCalendar::GetUserName($meetingCreator);
223 if (!$meetingCreator)
225 $meetingCreator = \CCalendar::GetUser($eventForView[
'MEETING_HOST'],
true);
226 $meetingCreator[
'DISPLAY_NAME'] = \CCalendar::GetUserName($meetingCreator);
229 return $meetingCreator;