- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/controller/usertogroup.php
- Класс: BitrixSocialnetworkControllerUserToGroup
- Вызов: UserToGroup::fillActions
private function fillActions(array $relations): array
{
$userId = (int)$this->getCurrentUser()->getId();
$permissions = [];
foreach ($relations as $id => $relation)
{
$projectId = (int)$relation['GROUP_ID'];
if (!array_key_exists($projectId, $permissions))
{
$permissions[$projectId] = HelperWorkgroup::getPermissions(['groupId' => $projectId]);
}
$projectPermissions = $permissions[$projectId];
$canModifyGroup = $projectPermissions['UserCanModifyGroup'];
$canInitiate = $projectPermissions['UserCanInitiate'];
$canProcessRequestsIn = $projectPermissions['UserCanProcessRequestsIn'];
$role = $relation['ROLE'];
$memberId = (int)$relation['USER_ID'];
$isAutoMember = ($relation['AUTO_MEMBER'] === 'Y');
$initiatedByType = $relation['INITIATED_BY_TYPE'];
$relations[$id]['ACTIONS'] = [
'SET_OWNER' => (
$canModifyGroup
&& $projectPermissions['UserIsOwner']
&& in_array($role, [UserToGroupTable::ROLE_MODERATOR, UserToGroupTable::ROLE_USER], true)
),
'SET_MODERATOR' => (
$canModifyGroup
&& $role === UserToGroupTable::ROLE_USER
),
'REMOVE_MODERATOR' => (
$canModifyGroup
&& $role === UserToGroupTable::ROLE_MODERATOR
),
'EXCLUDE' => (
$canModifyGroup
&& !$isAutoMember
&& $memberId !== $userId
&& in_array($role, [UserToGroupTable::ROLE_MODERATOR, UserToGroupTable::ROLE_USER], true)
),
'REPEAT_INVITE' => (
$canInitiate
&& $role === UserToGroupTable::ROLE_REQUEST
&& $initiatedByType === UserToGroupTable::INITIATED_BY_GROUP
),
'CANCEL_INVITE' => (
$canInitiate
&& $role === UserToGroupTable::ROLE_REQUEST
&& $initiatedByType === UserToGroupTable::INITIATED_BY_GROUP
),
'ACCEPT_REQUEST' => (
$canProcessRequestsIn
&& $role === UserToGroupTable::ROLE_REQUEST
&& $initiatedByType === UserToGroupTable::INITIATED_BY_USER
),
'DENY_REQUEST' => (
$canProcessRequestsIn
&& $role === UserToGroupTable::ROLE_REQUEST
&& $initiatedByType === UserToGroupTable::INITIATED_BY_USER
),
];
}
return $relations;
}