- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/user_relations.php
- Класс: CAllSocNetUserRelations
- Вызов: CAllSocNetUserRelations::SendRequestToBeFriend
static function SendRequestToBeFriend($senderUserID, $targetUserID, $message)
{
global $APPLICATION;
$senderUserID = intval($senderUserID);
if ($senderUserID <= 0)
{
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_SENDER_USER_ID"), "ERROR_SENDER_USER_ID");
return false;
}
$targetUserID = intval($targetUserID);
if ($targetUserID <= 0)
{
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_TARGET_USER_ID"), "ERROR_TARGET_USER_ID");
return false;
}
$arFields = array(
"FIRST_USER_ID" => $senderUserID,
"SECOND_USER_ID" => $targetUserID,
"RELATION" => SONET_RELATIONS_REQUEST,
"=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
"=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
"MESSAGE" => $message,
"INITIATED_BY" => "F",
);
//check if relation already exists to overwrite it
//if user is banned but im is installed and black-list isn't used anymore
$dbResult = CSocNetUserRelations::GetList(
array(),
array(
"FIRST_USER_ID" => $senderUserID,
"SECOND_USER_ID" => $targetUserID
)
);
$ID = false;
if ($arResult = $dbResult->GetNext())
{
if ($arResult["RELATION"] == SONET_RELATIONS_BAN && IsModuleInstalled("im"))
$ID = CSocNetUserRelations::Update($arResult["ID"], $arFields);
}
else
$ID = CSocNetUserRelations::Add($arFields);
if (!$ID)
{
$errorMessage = "";
if ($e = $APPLICATION->GetException())
$errorMessage = $e->GetString();
if ($errorMessage == '')
$errorMessage = GetMessage("SONET_UR_ERROR_CREATE_RELATION");
$GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_CREATE_RELATION");
return false;
}
if (CModule::IncludeModule("im"))
{
$dbSenderUser = CUser::GetByID($senderUserID);
$arSenderUser = $dbSenderUser->Fetch();
$senderUser = CUser::FormatName(CSite::GetNameFormat(), $arSenderUser, true);
$arMessageFields = array(
"MESSAGE_TYPE" => IM_MESSAGE_SYSTEM,
"TO_USER_ID" => intval($targetUserID),
"FROM_USER_ID" => intval($senderUserID),
"NOTIFY_TYPE" => IM_NOTIFY_CONFIRM,
"NOTIFY_MODULE" => "socialnetwork",
"NOTIFY_EVENT" => "invite_user_btn",
"NOTIFY_TAG" => "SOCNET|INVITE_USER|".intval($targetUserID)."|".intval($ID),
"NOTIFY_TITLE" => str_replace("#USER#", $senderUser, GetMessage("SONET_U_INVITE_CONFIRM_TITLE")),
"NOTIFY_MESSAGE" => str_replace("#TEXT#", $message, GetMessage("SONET_U_INVITE_CONFIRM_TEXT")),
"NOTIFY_BUTTONS" => Array(
Array('TITLE' => GetMessage('SONET_U_INVITE_CONFIRM'), 'VALUE' => 'Y', 'TYPE' => 'accept'),
Array('TITLE' => GetMessage('SONET_U_INVITE_REJECT'), 'VALUE' => 'N', 'TYPE' => 'cancel'),
)
);
$dbSite = CSite::GetByID(SITE_ID);
$arSite = $dbSite->Fetch();
$serverName = htmlspecialcharsEx($arSite["SERVER_NAME"]);
if ($serverName == '')
{
if (defined("SITE_SERVER_NAME") && SITE_SERVER_NAME <> '')
$serverName = SITE_SERVER_NAME;
else
$serverName = COption::GetOptionString("main", "server_name", "");
if ($serverName == '')
$serverName = $_SERVER["SERVER_NAME"];
}
$serverName = (CMain::IsHTTPS() ? "https" : "http")."://".$serverName;
$requestUrl = COption::GetOptionString("socialnetwork", "user_request_page",
(IsModuleInstalled("intranet")) ? "/company/personal/user/#USER_ID#/requests/" : "/club/user/#USER_ID#/requests/", SITE_ID);
$requestUrl = $serverName.str_replace(array("#USER_ID#", "#user_id#"), $targetUserID, $requestUrl);
$arMessageFields['NOTIFY_MESSAGE_OUT'] = $arMessageFields['NOTIFY_MESSAGE'];
$arMessageFields['NOTIFY_MESSAGE_OUT'] .= "nn".GetMessage('SONET_U_INVITE_CONFIRM').": ".$requestUrl.'?INVITE_USER='.$ID.'&CONFIRM=Y';
$arMessageFields['NOTIFY_MESSAGE_OUT'] .= "nn".GetMessage('SONET_U_INVITE_REJECT').": ".$requestUrl.'?INVITE_USER='.$ID.'&CONFIRM=N';
CIMNotify::Add($arMessageFields);
}
CSocNetUserRelations::__SpeedFileCreate($targetUserID);
return true;
}