• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_message.php
  • Класс: CIMMessage
  • Вызов: CIMMessage::GetChatId
static function GetChatId($fromUserId, $toUserId, $createIfNotExists = true)
{
	global $DB;

	$chatId = 0;
	$fromUserId = intval($fromUserId);
	$toUserId = intval($toUserId);

	if (intval($fromUserId) <= 0 || intval($toUserId) <= 0)
	{
		return $chatId;
	}

	if ($fromUserId == $toUserId)
	{
		$chat = new CIMChat();
		$chatId = $chat->GetPersonalChat($fromUserId);
		if (!$chatId)
		{
			return 0;
		}

		return $chatId;
	}

	$strSql = "
		SELECT RF.CHAT_ID
		FROM
			b_im_chat C,
			b_im_relation RF,
			b_im_relation RT
		WHERE
			C.ID = RT.CHAT_ID
		and C.TYPE = '".IM_MESSAGE_PRIVATE."'
		and RF.USER_ID = ".$fromUserId."
		and RT.USER_ID = ".$toUserId."
		and RF.MESSAGE_TYPE = '".IM_MESSAGE_PRIVATE."'
		and RT.MESSAGE_TYPE = '".IM_MESSAGE_PRIVATE."'
		and RF.CHAT_ID = RT.CHAT_ID
	";
	$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); if ($arRes = $dbRes->Fetch()) { $chatId = intval($arRes['CHAT_ID']); } if ($chatId <= 0) { if (!$createIfNotExists) { return 0; } if (!BitrixImDialog::hasAccess($fromUserId, $toUserId)) { return 0; } $result = BitrixImModelChatTable::add(Array('TYPE' => IM_MESSAGE_PRIVATE, 'AUTHOR_ID' => $fromUserId)); $chatId = $result->getId(); if ($chatId > 0) { BitrixImModelRelationTable::add(array( "CHAT_ID" => $chatId, "MESSAGE_TYPE" => IM_MESSAGE_PRIVATE, "USER_ID" => $fromUserId, //"STATUS" => IM_STATUS_READ, )); BitrixImModelRelationTable::add(array( "CHAT_ID" => $chatId, "MESSAGE_TYPE" => IM_MESSAGE_PRIVATE, "USER_ID" => $toUserId, //"STATUS" => IM_STATUS_READ, )); $botJoinFields = Array( "CHAT_TYPE" => IM_MESSAGE_PRIVATE, "MESSAGE_TYPE" => IM_MESSAGE_PRIVATE ); if (BitrixImUser::getInstance($fromUserId)->isExists() && !BitrixImUser::getInstance($fromUserId)->isBot()) { $botJoinFields['BOT_ID'] = $toUserId; $botJoinFields['USER_ID'] = $fromUserId; $botJoinFields['TO_USER_ID'] = $toUserId; $botJoinFields['FROM_USER_ID'] = $fromUserId; BitrixImBot::onJoinChat($fromUserId, $botJoinFields); } else if (BitrixImUser::getInstance($toUserId)->isExists() && !BitrixImUser::getInstance($toUserId)->isBot()) { $botJoinFields['BOT_ID'] = $fromUserId; $botJoinFields['USER_ID'] = $toUserId; $botJoinFields['TO_USER_ID'] = $toUserId; $botJoinFields['FROM_USER_ID'] = $fromUserId; BitrixImBot::onJoinChat($toUserId, $botJoinFields); } } } return $chatId; }