- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/chat.php
- Класс: BitrixImOpenLinesChat
- Вызов: Chat::markSpamAndFinish
public function markSpamAndFinish($userId)
{
$result = new Result();
$session = new Session();
$session->setChat($this);
if (
$this->isDataLoaded() &&
$session->load([
'USER_CODE' => $this->chat['ENTITY_ID'],
'SKIP_CREATE' => 'Y'
])
)
{
if($this->validationAction($session->getData('CHAT_ID')))
{
$queueManager = Queue::initialization($session);
if($queueManager && $queueManager->startLock())
{
$user = User::getInstance($userId);
$message = Loc::getMessage('IMOL_CHAT_MARK_SPAM_'.$user->getGender(), [
'#USER#' => '[USER='.$user->getId().'][/USER]',
]);
Im::addMessage([
'TO_CHAT_ID' => $this->chat['ID'],
'MESSAGE' => $message,
'SYSTEM' => 'Y',
]);
if (BitrixImOpenLinesConnector::isLiveChat($session->getData('SOURCE')))
{
$parsedUserCode = SessionCommon::parseUserCode($session->getData('USER_CODE'));
$chatId = $parsedUserCode['EXTERNAL_CHAT_ID'];
$liveChat = new Chat($chatId);
$liveChat->updateFieldData([Chat::FIELD_LIVECHAT => [
'SESSION_ID' => 0,
'SHOW_FORM' => 'N'
]]);
}
$eventData = [
'RUNTIME_SESSION' => $session,
'USER_ID' => $userId,
];
$event = new Event('imopenlines', 'OnChatMarkSpam', $eventData);
$event->send();
$session->markSpam();
$session->finish();
$queueManager->stopLock();
$result->setResult(true);
}
}
else
{
$result->addError(new Error(Loc::getMessage('IMOL_CHAT_ERROR_NOT_LOAD_DATA'), 'IMOL_CHAT_ERROR_NOT_LOAD_DATA', __METHOD__, ['chat' => $this->chat]));
}
}
else
{
$result->addError(new Error('Session or chat failed to load', 'NOT_LOAD_SESSION_OR_CHAT', __METHOD__, ['USER_ID' => $userId]));
}
return $result;
}