1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
Moderator.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\Moderator\AddModeratorDto;
17use Bitrix\Socialnetwork\Collab\Controller\Dto\Moderator\DeleteModeratorDto;
18use Bitrix\Socialnetwork\Collab\Controller\Filter\BooleanPostFilter;
19use Bitrix\Socialnetwork\Collab\Controller\Filter\IntranetUserFilter;
20use Bitrix\Socialnetwork\Collab\Controller\Trait\GetCollabIdBySourceTrait;
21use Bitrix\Socialnetwork\Control\Member\Command\MembersCommand;
22
23class Moderator extends Controller
24{
25 use GetCollabIdBySourceTrait;
26
27 protected int $userId;
29
30 public function getAutoWiredParameters(): array
31 {
32 return [
33 new Parameter(
34 AddModeratorDto::class,
35 function (): AddModeratorDto {
36 $request = $this->getRequest();
37 $requestData = $request->getPostList()->toArray();
38 $requestData['groupId'] = $this->resolveCollabId($request, 'groupId');
39
40 return AddModeratorDto::createFromRequest($requestData);
41 }
42 ),
43 new Parameter(
44 DeleteModeratorDto::class,
45 function (): DeleteModeratorDto {
46 $request = $this->getRequest();
47 $requestData = $request->getPostList()->toArray();
48 $requestData['groupId'] = $this->resolveCollabId($request, 'groupId');
49
50 return DeleteModeratorDto::createFromRequest($requestData);
51 }
52 ),
53 ];
54 }
55
56 public function configureActions(): array
57 {
58 return [
59 'add' => [
60 '+prefilters' => [
63 ],
64 ],
65 'delete' => [
66 '+prefilters' => [
68 ],
69 ]
70 ];
71 }
72
77 {
78 if (empty($dto->moderatorMembers))
79 {
80 return null;
81 }
82
83 $command = (new MembersCommand())
84 ->setMembers($dto->moderatorMembers)
85 ->setInitiatorId($this->userId)
86 ->setGroupId($dto->groupId)
87 ;
88
89 $model = CollabModel::createFromId($dto->groupId)
90 ->setAddModeratorMembers($dto->moderatorMembers);
91
92 $accessController = CollabAccessController::getInstance($this->userId);
93
94 if (!$accessController->check(CollabDictionary::SET_MODERATOR, $model))
95 {
96 $this->addError(new Error('Access denied'));
97
98 return null;
99 }
100
101 $result = $this->memberFacade->addModerators($command);
102 if (!$result->isSuccess())
103 {
104 $this->addErrors($result->getErrors());
105
106 return null;
107 }
108
109 return $result->getCollab();
110 }
111
116 {
117 if (empty($dto->moderatorMembers))
118 {
119 return null;
120 }
121
122 $command = (new MembersCommand())
123 ->setMembers($dto->moderatorMembers)
124 ->setInitiatorId($this->userId)
125 ->setGroupId($dto->groupId)
126 ;
127
128 $model = CollabModel::createFromId($dto->groupId)
129 ->setDeleteModeratorMembers($dto->moderatorMembers);
130
131 $accessController = CollabAccessController::getInstance($this->userId);
132
133 if (!$accessController->check(CollabDictionary::EXCLUDE_MODERATOR, $model))
134 {
135 $this->addError(new Error('Access denied'));
136
137 return null;
138 }
139
140 $result = $this->memberFacade->deleteModerators($command);
141 if (!$result->isSuccess())
142 {
143 $this->addErrors($result->getErrors());
144
145 return null;
146 }
147
148 return $result->getCollab();
149 }
150
151 protected function init(): void
152 {
153 parent::init();
154
155 $this->memberFacade = ServiceLocator::getInstance()->get('socialnetwork.collab.member.facade');
156 $this->userId = (int)CurrentUser::get()->getId();
157 }
158}
$accessController
Определения options.php:23
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
deleteAction(DeleteModeratorDto $dto)
Определения Moderator.php:115
CollabMemberFacade $memberFacade
Определения Moderator.php:28
addAction(AddModeratorDto $dto)
Определения Moderator.php:76
</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