- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/operator.php
- Класс: BitrixImOpenLinesOperator
- Вызов: Operator::checkAccess
private function checkAccess()
{
if (!$this->moduleLoad)
{
return [
'RESULT' => false
];
}
if ($this->chatId <= 0)
{
$this->error = new BasicError(__METHOD__, 'CHAT_ID', Loc::getMessage('IMOL_OPERATOR_ERROR_CHAT_ID'));
return [
'RESULT' => false
];
}
if ($this->userId <= 0)
{
$this->error = new BasicError(__METHOD__, 'USER_ID', Loc::getMessage('IMOL_OPERATOR_ERROR_USER_ID'));
return [
'RESULT' => false
];
}
$orm = BitrixImModelRelationTable::getList([
"select" => ["ID", "ENTITY_TYPE" => "CHAT.ENTITY_TYPE"],
"filter" => [
"=CHAT_ID" => $this->chatId,
"=USER_ID" => $this->userId,
],
]);
if ($relation = $orm->fetch())
{
if ($relation["ENTITY_TYPE"] != "LINES")
{
$this->error = new BasicError(__METHOD__, 'CHAT_TYPE', Loc::getMessage('IMOL_OPERATOR_ERROR_CHAT_TYPE'));
return [
'RESULT' => false
];
}
}
else
{
$ormChat = BitrixImModelChatTable::getById($this->chatId);
if($chat = $ormChat->fetch())
{
if($chat['TYPE'] == IM_MESSAGE_OPEN_LINE)
{
$parsedUserCode = SessionCommon::parseUserCode($chat['ENTITY_ID']);
$lineId = $parsedUserCode['CONFIG_ID'];
$fieldData = explode("|", $chat['ENTITY_DATA_1']);
if(!BitrixImOpenLinesConfig::canJoin($lineId, ($fieldData[0] == 'Y'? $fieldData[1]: null), ($fieldData[0] == 'Y'? $fieldData[2]: null)))
{
$this->error = new BasicError(__METHOD__, 'ACCESS_DENIED', Loc::getMessage('IMOL_OPERATOR_ERROR_ACCESS_DENIED'));
return [
'RESULT' => false
];
}
}
else
{
$this->error = new BasicError(__METHOD__, 'CHAT_TYPE', Loc::getMessage('IMOL_OPERATOR_ERROR_CHAT_TYPE'));
return [
'RESULT' => false
];
}
}
else
{
$this->error = new BasicError(__METHOD__, 'CHAT_ID', Loc::getMessage('IMOL_OPERATOR_ERROR_CHAT_ID'));
return [
'RESULT' => false
];
}
}
return [
'RESULT' => true
];
}