- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/lib/controller/controlbutton.php
- Класс: BitrixIntranetControllerControlButton
- Вызов: ControlButton::getTaskChat
private function getTaskChat($entityId)
{
$chatId = '';
global $USER;
$userId = $USER->GetID();
if (
!Loader::includeModule('tasks')
|| !Loader::includeModule('im')
|| !BitrixTasksAccessTaskAccessController::can(
$userId,
BitrixTasksAccessActionDictionary::ACTION_TASK_READ,
$entityId
)
)
{
return $chatId;
}
$taskData = $this->getTaskData($entityId);
$res = BitrixImModelChatTable::getList(array(
'select' => ['ID'],
'filter' => [
'=ENTITY_TYPE' => 'TASKS',
'=ENTITY_ID' => $entityId,
],
'limit' => 1
));
if ($chat = $res->fetch())
{
$chatId = $chat['ID'];
IntranetControlButton::addUserToChat($chatId, $userId);
}
else
{
$lockName = "chat_create_task_{$entityId}";
if (!Application::getConnection()->lock($lockName))
{
$this->addError(new Error(
Loc::getMessage('INTRANET_CONTROL_BUTTON_CREATE_CHAT_LOCK_ERROR'), 'lock_error')
);
return null;
}
$chatId = IntranetControlButton::createTaskChat($taskData, $userId);
Application::getConnection()->unlock($lockName);
}
return $chatId;
}