- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/controllers/calendar.php
- Класс: BitrixTasksScrumControllersCalendar
- Вызов: Calendar::createCalendarChat
private function createCalendarChat(array $eventData, int $userId): int
{
if (!Loader::includeModule('im'))
{
return 0;
}
$chat = new CIMChat(0);
$chatFields = [
'TITLE' => $eventData['TITLE'],
'TYPE' => IM_MESSAGE_CHAT,
'ENTITY_TYPE' => CCalendar::CALENDAR_CHAT_ENTITY_TYPE,
'ENTITY_ID' => $eventData['ID'],
'SKIP_ADD_MESSAGE' => 'Y',
'AUTHOR_ID' => $userId,
'USERS' => $eventData['USER_IDS']
];
$chatId = $chat->add($chatFields);
if ($chatId)
{
$pathToCalendar = CCalendar::getPathForCalendarEx($userId);
$pathToEvent = CHTTP::urlAddParams($pathToCalendar, ['EVENT_ID' => $eventData['ID']]);
$chatMessageFields = [
'FROM_USER_ID' => $userId,
'MESSAGE' => Loc::getMessage(
'TSC_CHAT_MESSAGE',
[
'#EVENT_TITLE#' => '[url=' . $pathToEvent . ']' . $eventData['TITLE'] . '[/url]',
'#DATETIME_FROM#' => CCalendar::Date(
CCalendar::Timestamp($eventData['DATE_FROM']),
$eventData['DT_SKIP_TIME'] === 'N',
true, true
)
]
),
'SYSTEM' => 'Y',
'INCREMENT_COUNTER' => 'N',
'PUSH' => 'Y',
'TO_CHAT_ID' => $chatId,
'SKIP_USER_CHECK' => 'Y',
'SKIP_COMMAND' => 'Y'
];
CIMChat::addMessage($chatMessageFields);
$eventData['MEETING']['CHAT_ID'] = $chatId;
CCalendar::SaveEvent([
'arFields' => [
'ID' => $eventData['ID'],
'MEETING' => $eventData['MEETING']
],
'checkPermission' => false,
'userId' => $eventData['CREATED_BY']
]);
CCalendar::clearCache('event_list');
}
return $chatId;
}