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__."<br>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 (StrLen($errorMessage) <= 0) $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 (StrLen($errorMessage) <= 0) $errorMessage = GetMessage("SONET_UR_ERROR_CREATE_RELATION"); $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_CREATE_RELATION"); return false; } } return true; }