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