• Модуль: 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;
}