1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
Member.php
См. документацию.
1<?php
2
3declare(strict_types=1);
4
5namespace Bitrix\Socialnetwork\Collab\Controller;
6
7use Bitrix\Main\DI\ServiceLocator;
8use Bitrix\Main\Engine\AutoWire\Parameter;
9use Bitrix\Main\Engine\Controller;
10use Bitrix\Main\Engine\CurrentUser;
11use Bitrix\Main\Error;
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;
23
24class Member extends Controller
25{
26 use GetCollabIdBySourceTrait;
27
28 protected int $userId;
31
32 public function getAutoWiredParameters(): array
33 {
34 return [
35 new Parameter(
36 AddMemberDto::class,
37 function (): AddMemberDto {
38 $request = $this->getRequest();
39 $requestData = $request->getPostList()->toArray();
40 $requestData['groupId'] = $this->resolveCollabId($request, 'groupId');
41
42 return AddMemberDto::createFromRequest($requestData);
43 }
44 ),
45 new Parameter(
46 DeleteMemberDto::class,
47 function (): DeleteMemberDto {
48 $request = $this->getRequest();
49 $requestData = $request->getPostList()->toArray();
50 $requestData['groupId'] = $this->resolveCollabId($request, 'groupId');
51
52 return DeleteMemberDto::createFromRequest($requestData);
53 }
54 ),
55 new Parameter(
56 LeaveMemberDto::class,
57 function (): LeaveMemberDto {
58 $request = $this->getRequest();
59 $requestData = $request->getPostList()->toArray();
60 $requestData['groupId'] = $this->resolveCollabId($request, 'groupId');
61
62 return LeaveMemberDto::createFromRequest($requestData);
63 }
64 ),
65 ];
66 }
67
68 public function configureActions(): array
69 {
70 return [
71 'add' => [
72 '+prefilters' => [
74 ],
75 ],
76 'leave' => [
77 '+prefilters' => [
79 ],
80 ],
81 'delete' => [
82 '+prefilters' => [
84 ],
85 ]
86 ];
87 }
88
93 {
94 if (empty($dto->members))
95 {
96 return null;
97 }
98
99 $command = (new MembersCommand())
100 ->setMembers($dto->members)
101 ->setInitiatorId($this->userId)
102 ->setGroupId($dto->groupId);
103
104 $model = CollabModel::createFromId($dto->groupId)
105 ->setAddMembers($dto->members);
106
107 if (!$this->accessController->check(CollabDictionary::INVITE, $model))
108 {
109 $this->addError(new Error('Access denied'));
110
111 return null;
112 }
113
114 $result = $this->memberFacade->add($command);
115 if (!$result->isSuccess())
116 {
117 $this->addErrors($result->getErrors());
118
119 return null;
120 }
121
122 return $result->getCollab();
123 }
124
129 {
130 if (empty($dto->members))
131 {
132 return null;
133 }
134
135 $command = (new MembersCommand())
136 ->setMembers($dto->members)
137 ->setInitiatorId($this->userId)
138 ->setGroupId($dto->groupId);
139
140 $model = CollabModel::createFromId($dto->groupId)
141 ->setDeleteMembers($dto->members);
142
143 if (!$this->accessController->check(CollabDictionary::EXCLUDE, $model))
144 {
145 $this->addError(new Error('Access denied'));
146
147 return null;
148 }
149
150 $result = $this->memberFacade->delete($command);
151 if (!$result->isSuccess())
152 {
153 $this->addErrors($result->getErrors());
154
155 return null;
156 }
157
158 return $result->getCollab();
159 }
160
162 {
163 $deleteMembers = ['U' . $this->userId];
164
165 $command = (new MembersCommand())
166 ->setMembers($deleteMembers)
167 ->setInitiatorId($this->userId)
168 ->setGroupId($dto->groupId);
169
170 $model = CollabModel::createFromId($dto->groupId)
171 ->setDeleteMembers($deleteMembers);
172
173 if (!$this->accessController->check(CollabDictionary::LEAVE, $model))
174 {
175 $this->addError(new Error('Access denied'));
176
177 return null;
178 }
179
180 $result = $this->memberFacade->delete($command);
181 if (!$result->isSuccess())
182 {
183 $this->addErrors($result->getErrors());
184
185 return null;
186 }
187
188 return $result->getCollab();
189 }
190
191 protected function init(): void
192 {
193 parent::init();
194
195 $this->memberFacade = ServiceLocator::getInstance()->get('socialnetwork.collab.member.facade');
196 $this->userId = (int)CurrentUser::get()->getId();
197 $this->accessController = CollabAccessController::getInstance($this->userId);
198 }
199}
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
Определения catalog_reindex.php:36
Определения error.php:15
Определения BooleanPostFilter.php:11
CollabAccessController $accessController
Определения Member.php:30
leaveAction(LeaveMemberDto $dto)
Определения Member.php:161
CollabMemberFacade $memberFacade
Определения Member.php:29
addAction(AddMemberDto $dto)
Определения Member.php:92
deleteAction(DeleteMemberDto $dto)
Определения Member.php:128
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14