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