• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/controller/controlbutton.php
  • Класс: BitrixIntranetControllerControlButton
  • Вызов: ControlButton::getCalendarChat
private function getCalendarChat($entityId, $entityData = [])
{
	global $USER;

	$chatId = '';

	if (!Loader::includeModule('calendar') || !Loader::includeModule('im'))
	{
		return $chatId;
	}

	$userId = $USER->GetId();
	$calendarData = $this->getCalendarData($entityId, $entityData);

	if (!in_array($userId, $calendarData['USER_IDS']))
	{
		return $chatId;
	}

	if ($calendarData['MEETING']['CHAT_ID'] > 0)
	{
		$chatId = $calendarData['MEETING']['CHAT_ID'];
		IntranetControlButton::addUserToChat($chatId, $userId);
	}
	else
	{
		$lockName = "chat_create_calendar_event_{$entityId}";
		if (!Application::getConnection()->lock($lockName))
		{
			$this->addError(new Error(
				Loc::getMessage('INTRANET_CONTROL_BUTTON_CREATE_CHAT_LOCK_ERROR'), 'lock_error')
			);
			return null;
		}
		
		$parentCalendarData = [];
		if ($calendarData['RECURRENCE_ID'])
		{
			$parentCalendarData = $this->getCalendarData($calendarData['RECURRENCE_ID']);
		}

		$chatId = IntranetControlButton::createCalendarChat($calendarData, $userId, $parentCalendarData);

		Application::getConnection()->unlock($lockName);
	}

	return $chatId;
}