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

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

	$connection = BitrixMainApplication::getConnection();

	$context = $context ?? Locator::getContext();

	if ($context->getUserId() == 0)
	{
		$res = $connection->query("
			SELECT
				C.ID CHAT_ID,
				C.PARENT_ID CHAT_PARENT_ID,
				C.PARENT_MID CHAT_PARENT_MID,
				C.TITLE CHAT_TITLE,
				C.AUTHOR_ID CHAT_AUTHOR_ID,
				C.TYPE CHAT_TYPE,
				C.AVATAR CHAT_AVATAR,
				C.COLOR CHAT_COLOR,
				C.ENTITY_TYPE CHAT_ENTITY_TYPE,
				C.ENTITY_ID CHAT_ENTITY_ID,
				C.ENTITY_DATA_1 CHAT_ENTITY_DATA_1,
				C.ENTITY_DATA_2 CHAT_ENTITY_DATA_2,
				C.ENTITY_DATA_3 CHAT_ENTITY_DATA_3,
				C.EXTRANET CHAT_EXTRANET,
				C.PREV_MESSAGE_ID CHAT_PREV_MESSAGE_ID,
				'1' RID,
				'Y' IS_MANAGER
			FROM b_im_chat C
			WHERE C.ID = ".(int)$params['CHAT_ID']."
		");
	}
	else
	{
		if (empty($params['FROM_USER_ID']))
		{
			$params['FROM_USER_ID'] = $context->getUserId();
		}

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

		$res = $connection->query("
			SELECT
				C.ID CHAT_ID,
				C.PARENT_ID CHAT_PARENT_ID,
				C.PARENT_MID CHAT_PARENT_MID,
				C.TITLE CHAT_TITLE,
				C.AUTHOR_ID CHAT_AUTHOR_ID,
				C.TYPE CHAT_TYPE,
				C.AVATAR CHAT_AVATAR,
				C.COLOR CHAT_COLOR,
				C.ENTITY_TYPE CHAT_ENTITY_TYPE,
				C.ENTITY_ID CHAT_ENTITY_ID,
				C.ENTITY_DATA_1 CHAT_ENTITY_DATA_1,
				C.ENTITY_DATA_2 CHAT_ENTITY_DATA_2,
				C.ENTITY_DATA_3 CHAT_ENTITY_DATA_3,
				C.EXTRANET CHAT_EXTRANET,
				C.PREV_MESSAGE_ID CHAT_PREV_MESSAGE_ID,
				R.USER_ID RID,
				R.MANAGER IS_MANAGER
			FROM b_im_chat C
			LEFT JOIN b_im_relation R 
				ON R.CHAT_ID = C.ID 
				AND R.USER_ID = ".$params['FROM_USER_ID']."
			WHERE C.ID = ".(int)$params['CHAT_ID']."
		");
	}

	if ($row = $res->fetch())
	{
		$result->setResult([
			'ID' => (int)$row['CHAT_ID'],
			'TYPE' => $row['CHAT_TYPE'],
			'ENTITY_TYPE' => $row['CHAT_ENTITY_TYPE'],
			'ENTITY_ID' => $row['CHAT_ENTITY_ID'],
			/*'RELATIONS' => [
				(int)$row['RID'] => [
					'CHAT_ID' => (int)$row['CHAT_ID'],
					'USER_ID' => (int)$row['RID'],
					'IS_MANAGER' => $row['IS_MANAGER'],
				]
			]*/
		]);
	}

	return $result;
}