3declare(strict_types=1);
5namespace Bitrix\Socialnetwork\Collab\Controller;
7use Bitrix\Main\DI\ServiceLocator;
8use Bitrix\Main\Engine\AutoWire\Parameter;
9use Bitrix\Main\Engine\Controller;
10use Bitrix\Main\Engine\CurrentUser;
12use Bitrix\SocialNetwork\Collab\Access\CollabAccessController;
13use Bitrix\SocialNetwork\Collab\Access\CollabDictionary;
14use Bitrix\SocialNetwork\Collab\Access\Model\CollabModel;
15use Bitrix\Socialnetwork\Collab\Control\Member\CollabMemberFacade;
16use Bitrix\Socialnetwork\Collab\Controller\Dto\Member\AddMemberDto;
17use Bitrix\Socialnetwork\Collab\Controller\Dto\Member\DeleteMemberDto;
18use Bitrix\Socialnetwork\Collab\Controller\Dto\Member\LeaveMemberDto;
19use Bitrix\Socialnetwork\Collab\Controller\Filter\BooleanPostFilter;
20use Bitrix\Socialnetwork\Collab\Controller\Filter\IntranetUserFilter;
21use Bitrix\Socialnetwork\Collab\Controller\Trait\GetCollabIdBySourceTrait;
22use Bitrix\Socialnetwork\Control\Member\Command\MembersCommand;
26 use GetCollabIdBySourceTrait;
39 $requestData =
$request->getPostList()->toArray();
40 $requestData[
'groupId'] = $this->resolveCollabId(
$request,
'groupId');
46 DeleteMemberDto::class,
49 $requestData =
$request->getPostList()->toArray();
50 $requestData[
'groupId'] = $this->resolveCollabId(
$request,
'groupId');
56 LeaveMemberDto::class,
59 $requestData =
$request->getPostList()->toArray();
60 $requestData[
'groupId'] = $this->resolveCollabId(
$request,
'groupId');
94 if (empty($dto->members))
100 ->setMembers($dto->members)
101 ->setInitiatorId($this->userId)
102 ->setGroupId($dto->groupId);
104 $model = CollabModel::createFromId($dto->groupId)
105 ->setAddMembers($dto->members);
107 if (!$this->accessController->check(CollabDictionary::INVITE, $model))
109 $this->addError(
new Error(
'Access denied'));
114 $result = $this->memberFacade->add($command);
117 $this->addErrors(
$result->getErrors());
130 if (empty($dto->members))
136 ->setMembers($dto->members)
137 ->setInitiatorId($this->userId)
138 ->setGroupId($dto->groupId);
140 $model = CollabModel::createFromId($dto->groupId)
141 ->setDeleteMembers($dto->members);
143 if (!$this->accessController->check(CollabDictionary::EXCLUDE, $model))
145 $this->addError(
new Error(
'Access denied'));
150 $result = $this->memberFacade->delete($command);
153 $this->addErrors(
$result->getErrors());
166 ->setMembers($deleteMembers)
167 ->setInitiatorId($this->userId)
168 ->setGroupId($dto->groupId);
170 $model = CollabModel::createFromId($dto->groupId)
171 ->setDeleteMembers($deleteMembers);
173 if (!$this->accessController->check(CollabDictionary::LEAVE, $model))
175 $this->addError(
new Error(
'Access denied'));
180 $result = $this->memberFacade->delete($command);
183 $this->addErrors(
$result->getErrors());
191 protected function init(): void
195 $this->memberFacade = ServiceLocator::getInstance()->get(
'socialnetwork.collab.member.facade');
196 $this->userId = (int)CurrentUser::get()->getId();
197 $this->accessController = CollabAccessController::getInstance($this->userId);
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
static createFromRequest(mixed $request)
CollabAccessController $accessController
leaveAction(LeaveMemberDto $dto)
CollabMemberFacade $memberFacade
addAction(AddMemberDto $dto)
deleteAction(DeleteMemberDto $dto)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)