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