• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/user_relations.php
  • Класс: CAllSocNetUserRelations
  • Вызов: CAllSocNetUserRelations::GetRelation
static function GetRelation($firstUserID, $secondUserID)
{
	global $DB;

	static $arSocNetURNCache = array();
	static $arSocNetUserRelationsCache1 = array();

	$firstUserID = intval($firstUserID);
	if ($firstUserID <= 0)
	{
		return false;
	}

	$secondUserID = intval($secondUserID);
	if ($secondUserID <= 0)
	{
		return false;
	}

	if (array_key_exists($firstUserID, $arSocNetURNCache))
	{
		if (array_key_exists($secondUserID, $arSocNetURNCache[$firstUserID]))
		{
			return $arSocNetURNCache[$firstUserID][$secondUserID];
		}
		elseif(count($arSocNetURNCache[$firstUserID]) != 100)
		{
			return false;
		}
	}
	elseif (array_key_exists($secondUserID, $arSocNetURNCache))
	{
		if (array_key_exists($firstUserID, $arSocNetURNCache[$secondUserID]))
		{
			return $arSocNetURNCache[$secondUserID][$firstUserID];
		}
		elseif(count($arSocNetURNCache[$secondUserID]) != 100)
		{
			return false;
		}
	}

	// get top N relations of user1		
	$arSocNetURNCache[$firstUserID] = array();
	$dbResult = CSocNetUserRelations::GetRelationsTop($firstUserID, 100);
	while ($arResult = $dbResult->Fetch())
	{
		if ($arResult["FIRST_USER_ID"] == $firstUserID)
		{
			$arSocNetURNCache[$firstUserID][$arResult["SECOND_USER_ID"]] = $arResult["RELATION"];
		}
		else
		{
			$arSocNetURNCache[$firstUserID][$arResult["FIRST_USER_ID"]] = $arResult["RELATION"];
		}
	}

	// get top N relations of user2
	$arSocNetURNCache[$secondUserID] = array();		
	$dbResult = CSocNetUserRelations::GetRelationsTop($secondUserID, 100);
	while ($arResult = $dbResult->Fetch())
	{
		if ($arResult["FIRST_USER_ID"] == $secondUserID)
		{
			$arSocNetURNCache[$secondUserID][$arResult["SECOND_USER_ID"]] = $arResult["RELATION"];
		}
		else
		{
			$arSocNetURNCache[$secondUserID][$arResult["FIRST_USER_ID"]] = $arResult["RELATION"];
		}
	}

	if (!array_key_exists($firstUserID."_".$secondUserID, $arSocNetUserRelationsCache1))
	{
		$strSql =
			"SELECT UR.RELATION ".
			"FROM b_sonet_user_relations UR ".
			"WHERE UR.FIRST_USER_ID = ".$firstUserID." ".
			"	AND UR.SECOND_USER_ID = ".$secondUserID." ".
			"UNION ".
			"SELECT UR.RELATION ".
			"FROM b_sonet_user_relations UR ".
			"WHERE UR.FIRST_USER_ID = ".$secondUserID." ".
			"	AND UR.SECOND_USER_ID = ".$firstUserID." ";

		$dbResult = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); if ($arResult = $dbResult->Fetch()) { $arSocNetUserRelationsCache1[$firstUserID."_".$secondUserID] = $arResult["RELATION"]; } else { $arSocNetUserRelationsCache1[$firstUserID."_".$secondUserID] = false; } } return $arSocNetUserRelationsCache1[$firstUserID."_".$secondUserID]; }