24 $userId = \CCalendar::GetCurUserId();
27 Loader::includeModule(
'intranet')
28 && !ToolsManager::getInstance()->checkAvailabilityByToolId(
'calendar')
31 $this->
addError(
new Error(Loc::getMessage(
'EC_EVENT_NOT_FOUND')));
34 'isAvailable' =>
false,
40 $entry = \CCalendarEvent::getEventForViewInterface($entryId, [
41 'eventDate' => $dateFrom,
42 'timezoneOffset' => $timezoneOffset,
48 $this->
addError(
new Error(Loc::getMessage(
'EC_EVENT_NOT_FOUND'),
'EVENT_NOT_FOUND_01'));
52 if (!$entry || !$entry[
'ID'])
54 $this->
addError(
new Error(Loc::getMessage(
'EC_EVENT_NOT_FOUND'),
'EVENT_NOT_FOUND_02'));
58 $isExternalUser = Loader::includeModule(
'intranet') && !\Bitrix\Intranet\Util::isIntranetUser();
61 $responseParams[
'userId'] =
$userId;
62 $responseParams[
'userTimezone'] = \CCalendar::GetUserTimezoneName(
$userId);
63 $responseParams[
'entry'] = $entry;
64 $responseParams[
'userIndex'] = \CCalendarEvent::getUserIndex();
66 $responseParams[
'plannerFeatureEnabled'] = Bitrix24Manager::isPlannerFeatureEnabled();
67 $responseParams[
'entryUrl'] = \CCalendar::getEntryUrl(
73 $responseParams[
'dayOfWeekMonthFormat'] = (
74 \Bitrix\Main\Context::getCurrent()
76 ->getDayOfWeekMonthFormat()
79 $sections = \CCalendarSect::GetList([
81 'ID' => $entry[
'SECTION_ID'],
84 'checkPermissions' =>
false,
85 'getPermissions' =>
true
87 $responseParams[
'section'] = $sections[0] ??
null;
89 if (!$responseParams[
'section'])
91 $this->
addError(
new Error(Loc::getMessage(
'EC_EVENT_NOT_FOUND'),
'SECTION_NOT_FOUND'));
97 'type' => \CCalendar::GetType(),
98 'bIntranet' => \CCalendar::IsIntranetEnabled(),
99 'bSocNet' => \CCalendar::IsSocNet(),
103 $userId = \CCalendar::GetCurUserId();
108 $UF = \CCalendarEvent::GetEventUserFields(
$event);
110 if (isset(
$event[
'UF_CRM_CAL_EVENT']))
112 $event[
'UF_CRM_CAL_EVENT'] = $UF[
'UF_CRM_CAL_EVENT'];
113 if (empty(
$event[
'UF_CRM_CAL_EVENT'][
'VALUE']))
115 $event[
'UF_CRM_CAL_EVENT'] =
false;
119 if (isset(
$event[
'UF_WEBDAV_CAL_EVENT']))
121 $event[
'UF_WEBDAV_CAL_EVENT'] = $UF[
'UF_WEBDAV_CAL_EVENT'];
122 if(empty(
$event[
'UF_WEBDAV_CAL_EVENT'][
'VALUE']))
124 $event[
'UF_WEBDAV_CAL_EVENT'] =
false;
133 $userId = \CCalendar::GetCurUserId();
135 $viewComments =
$event[
'permissions'][
'view_comments'];
138 $meetingHost =
false;
141 $userIndex = \CCalendarEvent::getUserIndex();
142 $attendees = [
'y' => [],
'n' => [],
'q' => [],
'i' => []];
144 if (isset(
$event[
'ATTENDEE_LIST']) && is_array(
$event[
'ATTENDEE_LIST']))
146 foreach (
$event[
'ATTENDEE_LIST'] as $attendee)
148 if (
$userId === (
int)$attendee[
'id'])
150 $curUserStatus = $attendee[
'status'];
151 $viewComments =
true;
154 $status = (mb_strtolower($attendee[
'status']) ===
'h' || empty($attendee[
'status']))
156 : $attendee[
'status']
158 $attendees[mb_strtolower(
$status)][] = $userIndex[$attendee[
'id']];
159 if ($attendee[
'status'] ===
'H')
161 $meetingHost = $userIndex[$attendee[
'id']];
162 $meetingHost[
'ID'] = $attendee[
'id'];
168 if (!$meetingHost && isset(
$event[
'MEETING_HOST']))
170 $meetingHost = \CCalendar::GetUser(
$event[
'MEETING_HOST'],
true);
173 if ($meetingHost && is_array($meetingHost))
175 $meetingHost[
'DISPLAY_NAME'] = \CCalendar::GetUserName($meetingHost);
176 if (!isset($meetingHost[
'AVATAR']))
178 $meetingHost[
'AVATAR'] = \CCalendar::GetUserAvatarSrc($meetingHost);
180 $meetingHost[
'URL'] = \CCalendar::GetUserUrl($meetingHost[
"ID"], (
$params[
"PATH_TO_USER"] ??
''));
183 $params[
'id'] =
'calendar_view_slider_'.mt_rand();
189 $params[
'timezoneHint'] = $timezoneHint;
193 $params[
'rruleDescription'] = \CCalendarEvent::GetRRULEDescription(
$event,
false);
196 $params[
'attendees'] = $attendees ?? [];
198 $params[
'curUserStatus'] = $curUserStatus;
199 $params[
'meetingHost'] = $meetingHost;
200 $params[
'meetingHostDisplayName'] = $meetingHost[
'DISPLAY_NAME'] ??
null;
203 $meetingCreator = $this->getMeetingCreator(
$event);
204 $params[
'meetingCreatorUrl'] = $meetingCreator[
'URL'] ??
null;
205 $params[
'meetingCreatorDisplayName'] = $meetingCreator[
'DISPLAY_NAME'] ??
null;
206 $params[
'meetingCreatorCollabUser'] = $meetingCreator[
'COLLAB_USER'] ??
false;
208 $params[
'isHighImportance'] =
$event[
'IMPORTANCE'] ===
'high';
211 $params[
'isWebdavEvent'] =
$event[
'UF_WEBDAV_CAL_EVENT'] ??
null;
212 $params[
'isCrmEvent'] = (
$event[
'UF_CRM_CAL_EVENT'] ??
null) && !$isExternalUser;
215 $params[
'isIntranetEnabled'] = \CCalendar::IsIntranetEnabled();
221 $params[
'canAttendeeEditCalendar'] =
$event[
'permissions'][
'editLocation'] ||
$event[
'permissions'][
'editAttendees'];
224 $params[
'showComments'] = $viewComments;
227 if (!empty(
$params[
'isWebdavEvent']))
229 $params[
'filesView'] = $this->getFilesView(
$event)->getContent();
231 if (!empty(
$params[
'isCrmEvent']))
233 $params[
'crmView'] = $this->getCrmView(
$event)->getContent();
237 'UF_CRM_CAL_EVENT' =>
$params[
'event'][
'UF_CRM_CAL_EVENT'] ??
null,
238 'UF_WEBDAV_CAL_EVENT' =>
$params[
'event'][
'UF_WEBDAV_CAL_EVENT'] ??
null,
239 'PARENT_ID' =>
$params[
'event'][
'PARENT_ID'],
240 'ID' =>
$params[
'event'][
'ID'],
241 'CREATED_BY' =>
$params[
'event'][
'CREATED_BY'],
244 $params[
'event'] = \CCalendarEvent::FixCommentsIfEventIsBroken(
$params[
'event']);
247 isset(
$params[
'event'][
'RELATIONS'][
'COMMENT_XML_ID'])
248 &&
$params[
'event'][
'RELATIONS'][
'COMMENT_XML_ID']
251 $signedEvent[
'ENTITY_XML_ID'] =
$params[
'event'][
'RELATIONS'][
'COMMENT_XML_ID'];
255 $signedEvent[
'ENTITY_XML_ID'] = \CCalendarEvent::GetEventCommentXmlId(
$params[
'event']);
258 $params[
'signedEvent'] = (
new Signer())->sign(Json::encode($signedEvent));
260 $params[
'isCollabUser'] = $isCollabUser;
261 $params[
'downloadIcsEnabled'] = (
$event[
'permissions'][
'view_full'] ??
null) && $isCollabUser;