• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Chat/NotifyChat.php
  • Класс: BitrixImV2ChatNotifyChat
  • Вызов: NotifyChat::find
static function find(array $params = [], ?Context $context = null): Result
{
	$result = new Result;

	if (empty($params['TO_USER_ID']))
	{
		$context = $context ?? Locator::getContext();
		$params['TO_USER_ID'] = $context->getUserId();
	}

	$params['TO_USER_ID'] = (int)$params['TO_USER_ID'];
	if ($params['TO_USER_ID'] <= 0)
	{
		return $result->addError(new ChatError(ChatError::WRONG_RECIPIENT));
	}

	$blockedExternalAuthId = BitrixImModelUserTable::filterExternalUserTypes(['replica']);
	$res = BitrixImModelUserTable::getById($params['TO_USER_ID']);
	if (
		!($userData = $res->fetch())
		|| $userData['ACTIVE'] == 'N'
		|| in_array($userData['EXTERNAL_AUTH_ID'], $blockedExternalAuthId, true)
	)
	{
		return $result->addError(new ChatError(ChatError::WRONG_RECIPIENT));
	}

	$connection = BitrixMainApplication::getConnection();

	$res = $connection->query("
		SELECT *
		FROM b_im_chat
		WHERE AUTHOR_ID = " . $params['TO_USER_ID'] . " AND TYPE = '" . self::IM_TYPE_SYSTEM . "'
		ORDER BY ID ASC
	");
	if ($row = $res->fetch())
	{
		$result->setResult([
			'ID' => (int)$row['ID'],
			'TYPE' => $row['TYPE'],
			'ENTITY_TYPE' => $row['ENTITY_TYPE'],
			'ENTITY_ID' => $row['ENTITY_ID'],
		]);
	}

	return $result;
}