- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/operator.php
- Класс: BitrixImOpenLinesOperator
- Вызов: Operator::openChat
public function openChat($userCode)
{
if (BitrixImUser::getInstance($this->userId)->isExtranet())
{
return false;
}
$chat = new Chat();
$result = $chat->load(Array(
'USER_CODE' => $userCode,
'ONLY_LOAD' => 'Y',
));
if ($result)
{
$parsedUserCode = SessionCommon::parseUserCode($userCode);
$lineId = $parsedUserCode['CONFIG_ID'];
if ($chat->getData('AUTHOR_ID') != $this->userId)
{
$sessionField = $chat->getFieldData(Chat::FIELD_SESSION);
$sessionCrmField = $chat->getFieldData(Chat::FIELD_CRM);
$result = false;
if (empty($sessionCrmField))
{
if (BitrixImOpenLinesConfig::canJoin($lineId, $sessionField['CRM_ENTITY_TYPE'], $sessionField['CRM_ENTITY_ID']))
{
$result = true;
}
}
else
{
foreach ($sessionCrmField as $crmEntityType => $crmEntityId)
{
if (BitrixImOpenLinesConfig::canJoin($lineId, $crmEntityType, $crmEntityId))
{
$result = true;
break;
}
}
}
}
}
if ($result)
{
return $chat->getData();
}
$this->error = new BasicError(__METHOD__, 'ACCESS_DENIED', Loc::getMessage('IMOL_OPERATOR_ERROR_ACCESS_DENIED'));
return false;
}