17 "FORUM_COMMENT_ENTITY" =>
"EV",
18 'OPERATION' =>
'view',
19 'CLASS_FORMAT' =>
'CCalendarLiveFeed',
20 'METHOD_FORMAT' =>
'FormatEvent',
22 'FULL_SET' =>
array(
"calendar",
"calendar_comment"),
23 "COMMENT_EVENT" =>
array(
24 "MODULE_ID" =>
"calendar",
25 "EVENT_ID" =>
"calendar_comment",
26 "OPERATION" =>
"view",
27 "OPERATION_ADD" =>
"log_rights",
28 "ADD_CALLBACK" =>
array(
"CCalendarLiveFeed",
"AddComment_Calendar"),
29 "UPDATE_CALLBACK" =>
array(
"CSocNetLogTools",
"UpdateComment_Forum"),
30 "DELETE_CALLBACK" =>
array(
"CSocNetLogTools",
"DeleteComment_Forum"),
31 "CLASS_FORMAT" =>
"CSocNetLogTools",
32 "METHOD_FORMAT" =>
"FormatComment_Forum",
33 "METHOD_GET_URL" =>
array(
"CCalendarLiveFeed",
"GetCommentUrl"),
34 "RATING_TYPE_ID" =>
"FORUM_POST"
48 if (defined(
"BX_COMP_MANAGED_CACHE"))
56 $arFields[
'~PARAMS'] = unserialize(
$arFields[
'~PARAMS'], [
'allowed_classes' =>
false]);
63 $eventViewResult =
$APPLICATION->IncludeComponent(
'bitrix:calendar.livefeed.view',
'',
array(
66 "PATH_TO_USER" =>
$arParams[
"PATH_TO_USER"],
67 "MOBILE" => (
$arParams[
"MOBILE"] ??
null),
68 "LIVEFEED_ENTRY_PARAMS" =>
$arFields[
'~PARAMS']
71 array(
'HIDE_ICONS' =>
'Y')
77 "MESSAGE" => $eventViewResult[
'MESSAGE'],
78 "FOOTER_MESSAGE" => $eventViewResult[
'FOOTER_MESSAGE'],
79 "IS_IMPORTANT" =>
false,
80 "STYLE" =>
"calendar-confirm"
89 $calendarUrl = CCalendar::GetPath(
'user',
$arFields[
"USER_ID"]);
91 $arResult[
"EVENT_FORMATTED"][
"URL"] = $calendarUrl.((mb_strpos($calendarUrl,
"?") ===
false) ?
'?' :
'&').
'EVENT_ID='.$eventId;
95 if (Loader::includeModule(
'socialnetwork'))
99 while ($arRight = $dbRight->Fetch())
101 $arRights[] = $arRight[
'GROUP_CODE'];
105 $arResult[
'EVENT_FORMATTED'][
'DESTINATION'] =
'';
107 if (Loader::includeModule(
'socialnetwork'))
115 if (isset($eventViewResult[
'CACHED_JS_PATH']))
117 $arResult[
'CACHED_JS_PATH'] = $eventViewResult[
'CACHED_JS_PATH'];
120 $arResult[
'ENTITY'][
'FORMATTED'][
"NAME"] =
"ENTITY FORMATTED NAME";
125 if (Loader::includeModule(
'socialnetwork'))
130 $arFieldsTooltip =
array(
133 'LAST_NAME' =>
$arFields[
'~CREATED_BY_LAST_NAME'],
134 'SECOND_NAME' =>
$arFields[
'~CREATED_BY_SECOND_NAME'],
135 'LOGIN' =>
$arFields[
'~CREATED_BY_LOGIN'],
138 $arResult[
'CREATED_BY'][
'TOOLTIP_FIELDS'] = [];
140 if (Loader::includeModule(
'socialnetwork'))
154 is_array($arLogEvent[
"FIELDS_FORMATTED"])
155 && is_array($arLogEvent[
"FIELDS_FORMATTED"][
"EVENT"])
156 && array_key_exists(
"EVENT_ID", $arLogEvent[
"FIELDS_FORMATTED"][
"EVENT"])
157 && $arLogEvent[
"FIELDS_FORMATTED"][
"EVENT"][
"EVENT_ID"] ===
"calendar"
162 if ((
int)
$USER->GetId() === (
int)$arLogEvent[
"FIELDS_FORMATTED"][
"EVENT"][
'USER_ID'])
164 $eventId = $arLogEvent[
"FIELDS_FORMATTED"][
"EVENT"][
"SOURCE_ID"];
165 $editUrl = CCalendar::GetPath(
'user', $arLogEvent[
"FIELDS_FORMATTED"][
"EVENT"][
'USER_ID']);
166 $editUrl .= ((mb_strpos($editUrl,
"?") ===
false) ?
'?' :
'&') .
'EVENT_ID=EDIT' . $eventId;
175 'onclick' =>
'if (window.oViewEventManager[\''.$eventId.
'\']){window.oViewEventManager[\
''.$eventId.
'\'].DeleteEvent();};'
189 if (!Loader::includeModule(
'forum') || !Loader::includeModule(
'socialnetwork'))
195 $arFieldsMessage =
null;
214 if ((
string)$arLog[
'PARAMS'] !==
'')
216 $arLog[
'PARAMS'] = unserialize($arLog[
'PARAMS'], [
'allowed_classes' =>
false]);
217 if (!is_array($arLog[
'PARAMS']))
219 $arLog[
'PARAMS'] = [];
223 $calendarEvent = CCalendarEvent::GetList([
225 'ID' => $arLog[
'SOURCE_ID'],
228 'parseRecursion' =>
true,
229 'maxInstanceCount' => 1,
230 'fetchAttendees' =>
true,
231 'checkPermissions' =>
true,
232 'setDefaultLimit' =>
false
235 if ($calendarEvent && is_array($calendarEvent[0]))
237 $calendarEvent = $calendarEvent[0];
238 $calendarSettings = CCalendar::GetSettings();
239 $forumID = $calendarSettings[
'forum_id'];
241 if (isset($arLog[
'PARAMS'][
'COMMENT_XML_ID']) && $arLog[
'PARAMS'][
'COMMENT_XML_ID'])
243 $commentXmlId = $arLog[
'PARAMS'][
'COMMENT_XML_ID'];
247 $commentXmlId = CCalendarEvent::GetEventCommentXmlId($calendarEvent);
249 if (!$arLog[
'PARAMS'])
251 $arLog[
'PARAMS'] = [];
253 $arLog[
'PARAMS'][
'COMMENT_XML_ID'] = $commentXmlId;
260 'FORUM_ID' => $forumID,
261 'XML_ID' => $commentXmlId
264 if ($dbTopic && ($arTopic = $dbTopic->Fetch()))
266 $topicID = $arTopic[
'ID'];
273 $currentUserId = CCalendar::GetCurUserId();
274 $strPermission = ($currentUserId === (int)$calendarEvent[
'OWNER_ID'] ?
'Y' :
'M');
277 'POST_MESSAGE' =>
$arFields[
'TEXT_MESSAGE'],
279 'PERMISSION_EXTERNAL' =>
'Q',
280 'PERMISSION' => $strPermission,
286 $arFieldsMessage[
'TITLE'] =
'EVENT_'.$arLog[
'SOURCE_ID'];
287 $arFieldsMessage[
'TOPIC_XML_ID'] =
'EVENT_'.$arLog[
'SOURCE_ID'];
291 $GLOBALS[
'USER_FIELD_MANAGER']->EditFormAddFields(
'SONET_COMMENT',
$arTmp);
294 if (array_key_exists(
'UF_SONET_COM_DOC',
$arTmp))
298 else if (array_key_exists(
'UF_SONET_COM_FILE',
$arTmp))
300 $arFieldsMessage[
'FILES'] = [];
301 foreach (
$arTmp[
'UF_SONET_COM_FILE'] as $file_id)
303 $arFieldsMessage[
'FILES'][] = [
'FILE_ID' => $file_id];
308 $messageID =
ForumAddMessage(($topicID > 0 ?
'REPLY' :
'NEW'), $forumID, $topicID, 0, $arFieldsMessage, $sError, $sNote);
314 'ENTRY_ID' => $calendarEvent[
'ID'],
315 'ENTRY_USER_ID' => $calendarEvent[
'OWNER_ID'],
316 'COMMENT_ID' => $messageID
321 [
'MESSAGE_ID' => $messageID]
323 while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch())
325 $ufFileID[] = $arAddedMessageFiles[
'FILE_ID'];
328 $ufDocID =
$GLOBALS[
'USER_FIELD_MANAGER']->GetUserFieldValue(
'FORUM_MESSAGE',
'UF_FORUM_MESSAGE_DOC', $messageID, LANGUAGE_ID);
336 $sError =
GetMessage(
'EC_LF_ADD_COMMENT_SOURCE_ERROR');
340 'SOURCE_ID' => $messageID,
341 'MESSAGE' => ($arFieldsMessage ? $arFieldsMessage[
'POST_MESSAGE'] :
false),
342 'RATING_TYPE_ID' =>
'FORUM_POST',
343 'RATING_ENTITY_ID' => $messageID,
350 'URL' => $messageUrl ??
null
364 $messageUrl = CCalendar::GetPath(
"user",
$arFields[
"ENTRY_USER_ID"]);
365 $messageUrl .= ((mb_strpos($messageUrl,
"?") ===
false) ?
"?" :
"&") .
"EVENT_ID=" .
$arFields[
"ENTRY_ID"] .
"&MID=#ID#";
369 $messageUrl = str_replace(
'#ID#', (
int)
$arFields[
"COMMENT_ID"], $messageUrl);
378 if ($arSonetLogComment[
"EVENT_ID"] !==
"calendar_comment")
383 if (!Loader::includeModule(
'socialnetwork'))
391 "ID" => $arSonetLogComment[
"LOG_ID"],
392 "EVENT_ID" =>
"calendar"
396 array(
"ID",
"SOURCE_ID",
"PARAMS")
400 ($arLog =
$dbLog->Fetch())
401 && ((
int)$arLog[
"SOURCE_ID"] > 0)
404 CCalendarNotify::NotifyComment(
408 "LOG_ID" => $arLog[
"ID"],
409 "USER_ID" => $arSonetLogComment[
"USER_ID"],
410 "MESSAGE" => $arSonetLogComment[
"MESSAGE"],
411 "URL" => $arSonetLogComment[
"URL"]
421 || !Loader::includeModule(
"im")
430 && ($calendarEvent = CCalendarEvent::GetById($eventId))
433 $comment[
"URL"] = CCalendar::GetPath(
"user", $calendarEvent[
"OWNER_ID"],
true);
434 $comment[
"URL"] .= ((mb_strpos(
$comment[
"URL"],
"?") ===
false) ?
"?" :
"&") .
"EVENT_ID=".$calendarEvent[
"ID"] .
"&MID=" . (
int)
$comment[
"MESSAGE_ID"];
437 CCalendarNotify::NotifyComment($eventId,
$comment);
442 if ($entityType !==
"EV")
447 if (!Loader::includeModule(
'socialnetwork'))
454 $commentXmlId = $arData[
'PARAMS'][
'XML_ID'];
459 if ($commentXmlId !==
"EVENT_".$eventId)
461 $dbRes =
CSocNetLog::GetList(
array(
"ID" =>
"DESC"),
array(
"EVENT_ID" =>
"calendar",
"SOURCE_ID" => $eventId),
false,
false,
array(
"ID",
"ENTITY_ID",
"USER_ID",
"TITLE",
"MESSAGE",
"SOURCE_ID",
"PARAMS"));
463 $createNewSocnetLogEntry =
true;
466 if ((
string)
$arRes[
'PARAMS'] !==
"")
468 $arRes[
'PARAMS'] = unserialize(
$arRes[
'PARAMS'], [
'allowed_classes' =>
false]);
469 if (!is_array(
$arRes[
'PARAMS']))
475 if (isset(
$arRes[
'PARAMS'][
'COMMENT_XML_ID']) &&
$arRes[
'PARAMS'][
'COMMENT_XML_ID'] === $commentXmlId)
478 $createNewSocnetLogEntry =
false;
486 if ($createNewSocnetLogEntry && $parentRes)
490 "ENTITY_ID" => $parentRes[
"ENTITY_ID"],
491 "EVENT_ID" =>
"calendar",
492 "USER_ID" => $parentRes[
"USER_ID"],
494 "TITLE_TEMPLATE" =>
"#TITLE#",
495 "TITLE" => $parentRes[
"TITLE"],
496 "MESSAGE" => $parentRes[
"MESSAGE"],
497 "TEXT_MESSAGE" =>
'',
498 "SOURCE_ID" => $parentRes[
"SOURCE_ID"],
499 "ENABLE_COMMENTS" =>
"Y",
500 "CALLBACK_FUNC" =>
false,
501 "=LOG_DATE" => CDatabase::CurrentTimeFunction(),
502 "PARAMS" => serialize([
503 "COMMENT_XML_ID" => $commentXmlId
511 while ($arRights = $rsRights->Fetch())
513 $arCodes[] = $arRights[
'GROUP_CODE'];
521 $res[
'LOG_ENTRY_ID'] = $logId;
529 if ($entityType !==
"EV")
534 if ((
int)$logID <= 0)
541 $event = CCalendarEvent::GetById($eventID);
544 (new \Bitrix\Calendar\Core\Managers\Comment())->onEventCommentAdd([
545 'ID' =>
$event[
'ID'] ??
null,
546 'COMMENT_ID' => $arData[
'MESSAGE_ID'] ??
null,
547 'ATTENDEE_LIST' =>
$event[
'ATTENDEE_LIST'] ??
null,
548 'ATTENDEES_CODES' =>
$event[
'ATTENDEES_CODES'] ??
null,
555 if ($entityType !==
"EV")
560 if ((
int)$logID <= 0)
567 || !array_key_exists(
"ACTION", $arData)
568 || $arData[
"ACTION"] !==
"EDIT"
579 if ((
int)$logID <= 0)
586 if (Loader::includeModule(
'socialnetwork'))
590 while ($arRight = $dbRight->Fetch())
592 $arAccessCodes[] = $arRight[
'GROUP_CODE'];
596 $arFilesIds = $arData[
"PARAMS"][
"UF_FORUM_MESSAGE_DOC"];
597 $UF =
$GLOBALS[
"USER_FIELD_MANAGER"]->GetUserFields(
"FORUM_MESSAGE", $arData[
"MESSAGE_ID"], LANGUAGE_ID);
598 CCalendar::UpdateUFRights($arFilesIds, $arAccessCodes, $UF[
"UF_FORUM_MESSAGE_DOC"]);
603 if (!$entryFields[
'SKIP_TIME'])
605 $entryFields[
'DATE_FROM'] .=
' '.$entryFields[
'TIME_FROM'];
606 $entryFields[
'DATE_TO'] .=
' '.$entryFields[
'TIME_TO'];
610 if (!$entryFields[
'TZ_FROM'] && isset($entryFields[
'DEFAULT_TZ']))
612 $entryFields[
'TZ_FROM'] = $entryFields[
'DEFAULT_TZ'];
614 if (!$entryFields[
'TZ_TO'] && isset($entryFields[
'DEFAULT_TZ']))
616 $entryFields[
'TZ_TO'] = $entryFields[
'DEFAULT_TZ'];
619 if (isset($entryFields[
'DEFAULT_TZ']) && (
string)$entryFields[
'DEFAULT_TZ'] !==
'')
621 CCalendar::SaveUserTimezoneName(
$params[
"userId"], $entryFields[
'DEFAULT_TZ']);
624 if ($entryFields[
'SECTION'])
626 $entryFields[
'SECTIONS'] =
array($entryFields[
'SECTION']);
629 $entryFields[
"OWNER_ID"] =
$params[
"userId"];
630 $entryFields[
"CAL_TYPE"] =
$params[
"type"];
633 if (!$entryFields[
"ID"])
635 $accessCodes[] =
'U'.$params[
"userId"];
638 $accessCodes = array_unique($accessCodes);
639 $attendeeList = CCalendar::GetDestinationUsers($accessCodes);
641 if (trim($entryFields[
"NAME"]) ===
'')
643 $entryFields[
"NAME"] =
GetMessage(
'EC_DEFAULT_EVENT_NAME_V2');
646 $entryFields[
'IS_MEETING'] = (!empty($attendeeList) && $attendeeList !=
array(
$params[
"userId"]));
649 isset($entryFields[
'RRULE'])
650 && !empty($entryFields[
'RRULE'])
651 && is_array($entryFields[
'RRULE'][
'BYDAY'])
654 $entryFields[
'RRULE'][
'BYDAY'] = implode(
',', $entryFields[
'RRULE'][
'BYDAY']);
657 if ($entryFields[
'IS_MEETING'])
659 $entryFields[
'ATTENDEES_CODES'] = $accessCodes;
660 $entryFields[
'ATTENDEES'] = $attendeeList;
661 $entryFields[
'MEETING_HOST'] =
$params[
"userId"];
662 $entryFields[
'MEETING'] =
array(
663 'HOST_NAME' => CCalendar::GetUserName(
$params[
"userId"]),
672 $entryFields[
'ATTENDEES'] =
false;
675 $eventId = CCalendar::SaveEvent(
677 'arFields' => $entryFields,
678 'autoDetectSection' =>
true
684 if (
count($userFieldData) > 0)
686 CCalendarEvent::UpdateUserFields($eventId, $userFieldData);
689 foreach ($accessCodes as
$key => $value)
693 unset($accessCodes[
$key]);
694 $accessCodes[] =
"G2";
699 if ($entryFields[
'IS_MEETING'] && !empty($userFieldData[
'UF_WEBDAV_CAL_EVENT']))
701 $UF =
$GLOBALS[
'USER_FIELD_MANAGER']->GetUserFields(
"CALENDAR_EVENT", $eventId, LANGUAGE_ID);
702 CCalendar::UpdateUFRights($userFieldData[
'UF_WEBDAV_CAL_EVENT'], $accessCodes, $UF[
'UF_WEBDAV_CAL_EVENT']);
705 $socnetLogFields = Array(
707 "ENTITY_ID" =>
$params[
"userId"],
708 "USER_ID" =>
$params[
"userId"],
709 "=LOG_DATE" => CDatabase::CurrentTimeFunction(),
710 "TITLE_TEMPLATE" =>
"#TITLE#",
711 "TITLE" => $entryFields[
"NAME"],
717 foreach ($accessCodes as $value)
719 if (mb_strpos($value,
'SG') === 0)
721 $codes[] = $value .
'_K';
725 $codes = array_unique($codes);
727 if (Loader::includeModule(
'socialnetwork'))
730 array(
"ID" =>
"DESC"),
732 "EVENT_ID" =>
"calendar",
733 "SOURCE_ID" => $eventId
748 $socnetLogFields = array_merge($socnetLogFields,
array(
749 "EVENT_ID" =>
"calendar",
751 "SOURCE_ID" => $eventId,
752 "ENABLE_COMMENTS" =>
"Y",
753 "CALLBACK_FUNC" =>
false
766 $eventId = (int)
$params[
'eventId'];
768 $currentEvent = CCalendarEvent::GetList(
771 "PARENT_ID" => $eventId,
775 'parseRecursion' =>
false,
776 'fetchAttendees' =>
true,
777 'fetchMeetings' =>
true,
778 'checkPermissions' =>
false,
779 'setDefaultLimit' =>
false,
783 if ($currentEvent &&
count($currentEvent) > 0)
785 $currentEvent = $currentEvent[0];
788 $attendeesCodes =
$params[
'attendeesCodes'];
790 if (isset($attendeesCodes) && !is_array($attendeesCodes))
792 $attendeesCodes = explode(
',', $attendeesCodes);
794 if (empty($attendeesCodes) &&
$arFields[
'CREATED_BY'])
796 $attendeesCodes[] =
'U' . (int)
$arFields[
'CREATED_BY'];
798 if (!is_array($attendeesCodes))
800 $attendeesCodes = [];
804 $unfolowersList = [];
807 $currentEvent[
'IS_MEETING']
808 && !empty($currentEvent[
'ATTENDEE_LIST'])
809 && is_array($currentEvent[
'ATTENDEE_LIST'])
812 foreach ($currentEvent[
'ATTENDEE_LIST'] as $attendee)
814 if ($attendee[
'status'] !==
'N')
816 $folowersList[] = (int)$attendee[
'id'];
820 $unfolowersList[] = $attendee[
'id'];
826 $folowersList[] = (int)
$arFields[
'CREATED_BY'];
836 "=LOG_DATE" => CDatabase::CurrentTimeFunction(),
837 "TITLE_TEMPLATE" =>
"#TITLE#",
844 foreach ($attendeesCodes as $value)
846 $arAccessCodes[] = ($value ===
"UA") ?
"G2" : $value;
850 foreach ($arAccessCodes as $value)
852 if (mb_strpos($value,
'U') === 0)
854 $attendeeId = (int)mb_substr($value, 1);
855 if (in_array($attendeeId, $folowersList,
true))
862 if (mb_strpos($value,
'SG') === 0)
876 $arCodes[] =
'U'.$arFields[
'MEETING_HOST'];
880 if (Loader::includeModule(
'socialnetwork'))
883 array(
"ID" =>
"DESC"),
885 "EVENT_ID" =>
"calendar",
886 "SOURCE_ID" => $eventId
904 foreach ($unfolowersList as $value)
906 CSocNetLogFollow::Set((
int)$value,
"L" .
$arRes[
"ID"],
'N');
912 $arSoFields = array_merge($arSoFields,
array(
914 "EVENT_ID" =>
"calendar",
915 'MODULE_ID' =>
'calendar',
917 "SOURCE_ID" => $eventId,
918 "ENABLE_COMMENTS" =>
"Y",
919 "CALLBACK_FUNC" =>
false,
920 "PARAMS" =>
$arFields[
'RELATIONS'] ??
'',
927 CSocNetLog::counterIncrement(
array(
928 "ENTITY_ID" => $newlogId,
929 "EVENT_ID" =>
'calendar',
931 "FOR_ALL_ACCESS" =>
false,
932 "SEND_TO_AUTHOR" =>
"N"
935 if (!empty(
$arFields[
'RELATIONS']) && Loader::includeModule(
'forum'))
937 $commentsXmlId = CCalendarEvent::GetEventCommentXmlId(
$arFields);
938 $calendarSettings = CCalendar::GetSettings();
939 $forumID = $calendarSettings[
'forum_id'] ??
null;
942 'TITLE' => $commentsXmlId,
944 'MESSAGE' => $commentsXmlId,
946 'AUTHOR_NAME' =>
'SYSTEM',
947 'FORUM_ID' => $forumID,
948 'USER_START_ID' => 0,
949 'USER_START_NAME' =>
'SYSTEM',
950 'LAST_POSTER_NAME' =>
'SYSTEM',
951 'XML_ID' => $commentsXmlId,
956 foreach ($unfolowersList as $value)
958 CSocNetLogFollow::Set((
int)$value,
"L" . $newlogId,
'N');
964 if ($newlogId && (
$arFields[
'RECURRENCE_ID'] ??
null) > 0)
966 $commentXmlId =
false;
971 $arFields[
'~RELATIONS'] = unserialize(
$arFields[
'RELATIONS'], [
'allowed_classes' =>
false]);
973 if (is_array(
$arFields[
'~RELATIONS']) && array_key_exists(
'COMMENT_XML_ID',
$arFields[
'~RELATIONS']) &&
$arFields[
'~RELATIONS'][
'COMMENT_XML_ID'])
975 $commentXmlId =
$arFields[
'~RELATIONS'][
'COMMENT_XML_ID'];
981 $rrule = CCalendarEvent::ParseRRULE(
$event[
'RRULE'] ??
null);
982 $until = $rrule[
'~UNTIL'] ??
null;
984 if (Loader::includeModule(
'socialnetwork'))
987 array(
"ID" =>
"DESC"),
989 "EVENT_ID" =>
"calendar",
990 "SOURCE_ID" =>
$arFields[
'RECURRENCE_ID']
994 array(
"ID",
"SOURCE_ID",
"PARAMS",
"COMMENTS_COUNT")
999 if (isset(
$arRes[
'PARAMS']) && is_string(
$arRes[
'PARAMS']))
1001 $arRes[
'PARAMS'] = unserialize(
$arRes[
'PARAMS'], [
'allowed_classes' =>
false]);
1002 if (!is_array(
$arRes[
'PARAMS']))
1008 if (isset(
$arRes[
'PARAMS'][
'COMMENT_XML_ID']))
1010 if ($commentXmlId &&
$arRes[
'PARAMS'][
'COMMENT_XML_ID'] === $commentXmlId)
1021 "COMMENTS_COUNT" => (
int)(
$arRes[
'COMMENTS_COUNT'] ?? 0),
1022 "PARAMS" => serialize(
array(
1023 "COMMENT_XML_ID" => $commentXmlId
1029 $instanceDate = CCalendarEvent::ExtractDateFromCommentXmlId(
1030 $arRes[
'PARAMS'][
'COMMENT_XML_ID']
1032 if ($instanceDate && $until)
1034 $untilTs = CCalendar::Timestamp($until);
1035 $instanceDateTs = CCalendar::Timestamp($instanceDate);
1036 if ($instanceDateTs >= $untilTs)
1039 "SOURCE_ID" => $eventId
1054 if (Loader::includeModule(
"socialnetwork"))
1057 array(
"ID" =>
"DESC"),
1059 "EVENT_ID" =>
"calendar",
1060 "SOURCE_ID" => $eventId
1076 ($arData[
'ENTITY_TYPE_ID'] ??
null) ===
'FORUM_POST'
1077 && (
int)($arData[
'PARAM1'] ??
null) > 0
1078 && in_array($arData[
"MODULE_ID"],
array(
"forum",
"FORUM"))
1079 && preg_match(
'/^EVENT_(\d+)/', $arData[
"TITLE"], $match)
1082 $arCalendarSettings = CCalendar::GetSettings();
1083 $forumID = (int)$arCalendarSettings[
"forum_id"];
1084 $eventID = (int)$match[1];
1087 (
int)$arData[
'PARAM1'] === $forumID
1089 && ($arCalendarEvent = CCalendarEvent::GetById($eventID))
1090 && (
string)$arCalendarEvent[
"CAL_TYPE"] !==
''
1091 && !empty($arCalendarSettings[
"pathes"])
1092 && (
int)$arCalendarEvent[
"OWNER_ID"] > 0
1093 && in_array($arCalendarEvent[
"CAL_TYPE"],
array(
"user",
"group"))
1096 foreach ($arData[
'LID'] as
$siteId => $value)
1098 $messageUrl =
false;
1101 array_key_exists(
$siteId, $arCalendarSettings[
"pathes"])
1102 && is_array($arCalendarSettings[
"pathes"][
$siteId])
1103 && !empty($arCalendarSettings[
"pathes"][
$siteId])
1106 if ($arCalendarEvent[
"CAL_TYPE"] ===
"user")
1109 array_key_exists(
"path_to_user_calendar", $arCalendarSettings[
"pathes"][
$siteId])
1110 && !empty($arCalendarSettings[
"pathes"][
$siteId][
"path_to_user_calendar"])
1113 $messageUrl = CComponentEngine::MakePathFromTemplate(
1114 $arCalendarSettings[
"pathes"][
$siteId][
"path_to_user_calendar"],
1116 "user_id" => $arCalendarEvent[
'OWNER_ID'],
1122 array_key_exists(
"path_to_group_calendar", $arCalendarSettings[
"pathes"][
$siteId])
1123 && !empty($arCalendarSettings[
"pathes"][
$siteId][
"path_to_group_calendar"])
1126 $messageUrl = CComponentEngine::MakePathFromTemplate(
1127 $arCalendarSettings[
"pathes"][
$siteId][
"path_to_group_calendar"],
1129 "group_id" => $arCalendarEvent[
'OWNER_ID'],
1135 $arData[
'LID'][
$siteId] = ($messageUrl ? $messageUrl.
"?EVENT_ID=".$arCalendarEvent[
"ID"].
"&MID=".$arData[
'ENTITY_ID'].
"#message".$arData[
'ENTITY_ID'] :
"");
1141 $arData[
'TITLE'] =
'';
1142 $arData[
'BODY'] =
'';
1151 $unfolowersList = [];
1155 if (
$params[
'event'][
'IS_MEETING'])
1158 isset(
$params[
'event'][
'MEETING_HOST'])
1159 && (
int)
$params[
'event'][
'MEETING_HOST'] > 0
1162 $codesList[] =
'U' . (int)
$params[
'event'][
'MEETING_HOST'];
1165 if (isset(
$params[
'event'][
'ATTENDEE_LIST']) && is_array(
$params[
'event'][
'ATTENDEE_LIST']))
1167 foreach (
$params[
'event'][
'ATTENDEE_LIST'] as $attendee)
1171 (
int)$attendee[
'id'] === (
int)
$params[
'userId']
1175 (
int)$attendee[
'id'] !== (
int)
$params[
'userId']
1176 && $attendee[
'status'] ===
'N'
1180 $unfolowersList[] = (int)$attendee[
'id'];
1186 if (isset(
$params[
'event'][
'ATTENDEES_CODES']) && is_array(
$params[
'event'][
'ATTENDEES_CODES']))
1192 $codesList[] =
'G2';
1194 else if (mb_strpos(
$code,
'U') === 0)
1196 $attendeeId = (int)mb_substr(
$code, 1);
1197 if (!in_array($attendeeId, $unfolowersList,
true))
1199 $codesList[] =
$code;
1204 if (mb_strpos(
$code,
'SG') === 0)
1206 $codesList[] =
$code .
'_K';
1208 $codesList[] =
$code;
1217 && Loader::includeModule(
'socialnetwork')
1222 while ($logEntry =
$dbRes->Fetch())
1225 foreach ($unfolowersList as $value)
1227 CSocNetLogFollow::Set((
int)$value,
"L" . $logEntry[
'ID'],
'N');
1229 CSocNetLogFollow::Set((
int)
$params[
'userId'],
"L" . $logEntry[
'ID'],
$params[
'status']);
1233 && method_exists(ComponentHelper::class,
'userLogSubscribe')
1236 ComponentHelper::userLogSubscribe(
array(
1237 'logId' => $logEntry[
'ID'],
1238 'userId' => (
int)
$params[
'userId'],
1240 'COUNTER_COMMENT_PUSH',
1245 if (!empty($codesList))
1247 $codesList = array_unique($codesList);
static FormatEvent_CreateAvatar($arFields, $arParams, $source="CREATED_BY_")
static FormatEvent_FillTooltip($arFields, $arParams)
static OnChangeMeetingStatusEventEntry($params)
static OnSonetLogEntryMenuCreate($arLogEvent)
static OnAfterCommentAddAfter($entityType, $eventID, $arData, $logID=false)
static FixForumCommentURL($arData)
static AddEvent(&$arSocNetFeaturesSettings)
static OnDeleteCalendarEventEntry($eventId)
static OnForumCommentIMNotify($entityType, $eventId, $comment)
static SetCommentFileRights($arData, $logID)
static OnAfterSonetLogEntryAddComment($arSonetLogComment)
static OnAfterCommentUpdateAfter($entityType, $eventID, $arData, $logID=false)
static FormatEvent($arFields, $arParams)
static EditCalendarEventEntry($entryFields=[], $userFieldData=[], $accessCodes=[], $params=[])
static AddComment_Calendar($arFields)
static OnAfterCommentAddBefore($entityType, $eventId, $arData)
static GetCommentUrl($arFields=[])
static OnEditCalendarEventEntry($params)
static GetList($arOrder=Array("ID"=>"ASC"), $arFilter=Array(), $iNum=0, $arAddParams=array())
static GetList($arOrder=Array("SORT"=>"ASC"), $arFilter=Array(), $bCount=false, $iNum=0, $arAddParams=array())
static Add($arFields, $bSendEvent=true)
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array(), $arParams=array())
static Update($ID, $arFields)
static DeleteByLogID($LOG_ID)
static GetList($aSort=array(), $aFilter=array())
static Add($LOG_ID, $GROUP_CODE, $bShare=false, $followSet=true)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
ForumAddMessage( $MESSAGE_TYPE, $FID, $TID, $MID, $arFieldsG, &$strErrorMessage, &$strOKMessage, $iFileSize=false, $captcha_word="", $captcha_sid=0, $captcha_code="")
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if(intval($iTestTransaction) > 0) $arTmp
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
const SONET_SUBSCRIBE_ENTITY_USER
if( $_SERVER $arSocNetFeaturesSettings['REQUEST_METHOD']=="GET" &&($RestoreDefaults ?? null)<> '' && $SONET_RIGHT=="W" &&check_bitrix_sessid())
$GLOBALS['_____370096793']
if(CModule::IncludeModule("forum")) if(CModule::IncludeModule("blog")) $dbLog