- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/user_group.php
- Класс: CAllSocNetUserToGroup
- Вызов: CAllSocNetUserToGroup::RejectRequestToBeMember
static function RejectRequestToBeMember($userId, $groupId, $relationIdList): bool
{
global $APPLICATION, $USER;
$userId = (int)$userId;
if ($userId <= 0)
{
$APPLICATION->ThrowException(Loc::getMessage('SONET_UR_EMPTY_USERID'), "ERROR_USERID");
return false;
}
$groupId = (int)$groupId;
if ($groupId <= 0)
{
$APPLICATION->ThrowException(Loc::getMessage('SONET_UR_EMPTY_GROUPID'), "ERROR_GROUPID");
return false;
}
if (!is_array($relationIdList))
{
return true;
}
$groupFields = CSocNetGroup::GetByID($groupId);
if (!$groupFields || !is_array($groupFields))
{
$APPLICATION->ThrowException(Loc::getMessage("SONET_UG_ERROR_NO_GROUP_ID"), "ERROR_NO_GROUP");
return false;
}
$groupSiteIdList = [];
$rsGroupSite = CSocNetGroup::GetSite($groupId);
while ($groupSiteFields = $rsGroupSite->fetch())
{
$groupSiteIdList[] = $groupSiteFields["LID"];
}
$userRole = CSocNetUserToGroup::GetUserRole($userId, $groupId);
$userIsMember = ($userRole && in_array($userRole, UserToGroupTable::getRolesMember(), true));
$bCanInitiate = (
$USER->IsAdmin()
|| CSocNetUser::IsCurrentUserModuleAdmin($groupSiteIdList)
|| (
$userRole
&& (
(
$groupFields["INITIATE_PERMS"] === UserToGroupTable::ROLE_OWNER
&& $userId === (int)$groupFields["OWNER_ID"]
)
|| (
$groupFields["INITIATE_PERMS"] === UserToGroupTable::ROLE_MODERATOR
&& in_array($userRole, [ UserToGroupTable::ROLE_OWNER, UserToGroupTable::ROLE_MODERATOR ], true)
)
|| (
$groupFields["INITIATE_PERMS"] === UserToGroupTable::ROLE_USER
&& $userIsMember
)
)
)
);
if (!$bCanInitiate)
{
$APPLICATION->ThrowException(GetMessage("SONET_UG_ERROR_NO_PERMS"), "ERROR_NO_PERMS");
return false;
}
$bSuccess = true;
foreach ($relationIdList as $relationId)
{
$relationId = (int)$relationId;
if ($relationId <= 0)
{
continue;
}
$arRelation = CSocNetUserToGroup::GetByID($relationId);
if (!$arRelation)
{
continue;
}
if (
(int)$arRelation["GROUP_ID"] !== $groupId
|| $arRelation["INITIATED_BY_TYPE"] !== SONET_INITIATED_BY_USER
|| $arRelation["ROLE"] !== UserToGroupTable::ROLE_REQUEST
)
{
continue;
}
if (CSocNetUserToGroup::Delete($arRelation["ID"]))
{
$arMessageFields = array(
"FROM_USER_ID" => $userId,
"TO_USER_ID" => $arRelation["USER_ID"],
"MESSAGE" => str_replace(
'#NAME#',
$groupFields['NAME'],
Loc::getMessage('SONET_UG_REJECT_MEMBER_MESSAGE_G')
),
"=DATE_CREATE" => CDatabase::CurrentTimeFunction(),
"MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM
);
CSocNetMessages::Add($arMessageFields);
BitrixSocialnetworkHelperUserToGroupRequestPopup::unsetHideRequestPopup([
'groupId' => (int)$groupId,
'userId' => (int)$arRelation['USER_ID'],
]);
}
else
{
$errorMessage = "";
if ($e = $APPLICATION->GetException())
{
$errorMessage = $e->GetString();
}
if ($errorMessage === '')
{
$errorMessage = Loc::getMessage("SONET_UR_ERROR_CREATE_USER2GROUP");
}
$APPLICATION->ThrowException($errorMessage, "ERROR_CONFIRM_MEMBER");
$bSuccess = false;
}
}
return $bSuccess;
}