- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/user_relations.php
- Класс: CAllSocNetUserRelations
- Вызов: CAllSocNetUserRelations::ConfirmRequestToBeFriend
static function ConfirmRequestToBeFriend($senderUserID, $relationID, $bAutoSubscribe = true)
{
global $APPLICATION;
$senderUserID = intval($senderUserID);
if ($senderUserID <= 0)
{
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_SENDER_USER_ID"), "ERROR_SENDER_USER_ID");
return false;
}
$relationID = intval($relationID);
if ($relationID <= 0)
{
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_TARGET_USER_ID"), "ERROR_RELATION_ID");
return false;
}
$dbResult = CSocNetUserRelations::GetList(
array(),
array(
"ID" => $relationID,
"SECOND_USER_ID" => $senderUserID,
"RELATION" => SONET_RELATIONS_REQUEST
),
false,
false,
array("ID", "FIRST_USER_ID", "SECOND_USER_ID")
);
if ($arResult = $dbResult->Fetch())
{
$rsUser = CUser::GetByID(intval($arResult["FIRST_USER_ID"]));
$arUser = $rsUser->Fetch();
if (!is_array($arUser) || $arUser["ACTIVE"] != "Y")
{
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_INVALID_TARGET_USER_ID"), "ERROR_INVALID_TARGET_USER_ID");
return false;
}
$arFields = array(
"RELATION" => SONET_RELATIONS_FRIEND,
"=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
"INITIATED_BY" => "S",
);
if (CSocNetUserRelations::Update($arResult["ID"], $arFields))
{
if ($bAutoSubscribe)
{
CSocNetLogEvents::AutoSubscribe($senderUserID, SONET_ENTITY_USER, $arResult["FIRST_USER_ID"]);
CSocNetLogEvents::AutoSubscribe($arResult["FIRST_USER_ID"], SONET_ENTITY_USER, $senderUserID);
}
if (CModule::IncludeModule("im"))
{
CIMNotify::DeleteByTag("SOCNET|INVITE_USER|".intval($senderUserID)."|".intval($arResult["ID"]));
$arMessageFields = array(
"MESSAGE_TYPE" => IM_MESSAGE_SYSTEM,
"TO_USER_ID" => $arResult["FIRST_USER_ID"],
"FROM_USER_ID" => $senderUserID,
"NOTIFY_TYPE" => IM_NOTIFY_FROM,
"NOTIFY_MODULE" => "socialnetwork",
"NOTIFY_EVENT" => "inout_user",
"NOTIFY_TAG" => "SOCNET|INVITE_USER_CONFIRM",
"NOTIFY_MESSAGE" => GetMessage("SONET_UR_AGREE_FRIEND_MESSAGE"),
);
CIMNotify::Add($arMessageFields);
}
}
else
{
$errorMessage = "";
if ($e = $APPLICATION->GetException())
$errorMessage = $e->GetString();
if ($errorMessage == '')
$errorMessage = GetMessage("SONET_UR_ERROR_UPDATE_RELATION");
$GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_CREATE_RELATION");
return false;
}
}
else
{
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_NO_FRIEND_REQUEST"), "ERROR_NO_FRIEND_REQUEST");
return false;
}
$arUserID = array(
$arResult["FIRST_USER_ID"],
$arResult["SECOND_USER_ID"]
);
$dbFriends = CSocNetUserRelations::GetRelatedUsers($arResult["FIRST_USER_ID"], SONET_RELATIONS_FRIEND);
while ($arFriends = $dbFriends->Fetch())
{
$pref = (($arResult["FIRST_USER_ID"] == $arFriends["FIRST_USER_ID"]) ? "SECOND" : "FIRST");
$arUserID[] = $arResult[$pref."_USER_ID"];
}
$dbFriends = CSocNetUserRelations::GetRelatedUsers($arResult["SECOND_USER_ID"], SONET_RELATIONS_FRIEND);
while ($arFriends = $dbFriends->Fetch())
{
$pref = (($arResult["FIRST_USER_ID"] == $arFriends["FIRST_USER_ID"]) ? "SECOND" : "FIRST");
$arUserID[] = $arResult[$pref."_USER_ID"];
}
$arUserID = array_unique($arUserID);
CSocNetUserRelations::__SpeedFileCheckMessages($senderUserID);
return true;
}