- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/user_relations.php
- Класс: CAllSocNetUserRelations
- Вызов: CAllSocNetUserRelations::BanUser
static function BanUser($senderUserID, $targetUserID)
{
global $APPLICATION, $DB;
$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;
}
elseif (CSocNetUser::IsUserModuleAdmin($targetUserID, false))
{
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_ERROR_CREATE_RELATION"), "ERROR_TARGET_USER_ID");
return false;
}
$strSql =
"SELECT UR.ID, UR.FIRST_USER_ID, UR.SECOND_USER_ID, UR.RELATION ".
"FROM b_sonet_user_relations UR ".
"WHERE UR.FIRST_USER_ID = ".$senderUserID." ".
" AND UR.SECOND_USER_ID = ".$targetUserID." ".
"UNION ".
"SELECT UR.ID, UR.FIRST_USER_ID, UR.SECOND_USER_ID, UR.RELATION ".
"FROM b_sonet_user_relations UR ".
"WHERE UR.FIRST_USER_ID = ".$targetUserID." ".
" AND UR.SECOND_USER_ID = ".$senderUserID." ";
$dbResult = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
if ($arResult = $dbResult->Fetch())
{
if ($arResult["RELATION"] != SONET_RELATIONS_BAN)
{
$arFields = array(
"RELATION" => SONET_RELATIONS_BAN,
"=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
);
if ($arResult["FIRST_USER_ID"] == $senderUserID)
$arFields["INITIATED_BY"] = "F";
else
$arFields["INITIATED_BY"] = "S";
if (CSocNetUserRelations::Update($arResult["ID"], $arFields))
{
$arMessageFields = array(
"FROM_USER_ID" => $senderUserID,
"TO_USER_ID" => $targetUserID,
"MESSAGE" => GetMessage("SONET_UR_BANUSER_MESSAGE"),
"=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
"MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM
);
CSocNetMessages::Add($arMessageFields);
if ($arResult["RELATION"] == SONET_RELATIONS_FRIEND)
$GLOBALS["DB"]->Query("DELETE FROM b_sonet_event_user_view WHERE
ENTITY_TYPE = '".SONET_ENTITY_USER."'
AND (
(USER_ID = ".$arRelation["FIRST_USER_ID"]." AND ENTITY_ID = ".$arRelation["SECOND_USER_ID"].")
OR (USER_ID = ".$arRelation["SECOND_USER_ID"]." AND ENTITY_ID = ".$arRelation["FIRST_USER_ID"].")
OR (ENTITY_ID = ".$arRelation["FIRST_USER_ID"]." AND USER_IM_ID = ".$arRelation["SECOND_USER_ID"].")
OR (ENTITY_ID = ".$arRelation["SECOND_USER_ID"]." AND USER_IM_ID = ".$arRelation["FIRST_USER_ID"].")
OR (USER_ID = ".$arRelation["FIRST_USER_ID"]." AND USER_IM_ID = ".$arRelation["SECOND_USER_ID"].")
OR (USER_ID = ".$arRelation["SECOND_USER_ID"]." AND USER_IM_ID = ".$arRelation["FIRST_USER_ID"].")
)", true);
}
else
{
$errorMessage = "";
if ($e = $APPLICATION->GetException())
$errorMessage = $e->GetString();
if ($errorMessage == '')
$errorMessage = GetMessage("SONET_UR_ERROR_UPDATE_RELATION");
$GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_UPDATE_RELATION");
return false;
}
}
else
{
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_ALREADY_BAN"), "ERROR_ALREADY_BAN");
return false;
}
}
else
{
$arFields = array(
"FIRST_USER_ID" => $senderUserID,
"SECOND_USER_ID" => $targetUserID,
"RELATION" => SONET_RELATIONS_BAN,
"=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
"=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
"INITIATED_BY" => "F",
);
if (CSocNetUserRelations::Add($arFields))
{
$arMessageFields = array(
"FROM_USER_ID" => $senderUserID,
"TO_USER_ID" => $targetUserID,
"MESSAGE" => GetMessage("SONET_UR_BANUSER_MESSAGE"),
"=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
"MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM
);
CSocNetMessages::Add($arMessageFields);
}
else
{
$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;
}
}
return true;
}