3declare(strict_types=1);
5namespace Bitrix\Socialnetwork\Collab\Control;
8use Bitrix\Main\Validation\ValidationError;
9use Bitrix\Socialnetwork\Collab\Collab;
10use Bitrix\Socialnetwork\Collab\Control\Command\CollabAddCommand;
11use Bitrix\Socialnetwork\Collab\Control\Command\CollabDeleteCommand;
12use Bitrix\Socialnetwork\Collab\Control\Command\CollabUpdateCommand;
13use Bitrix\Socialnetwork\Collab\Control\Event\BeforeCollabUpdateEvent;
14use Bitrix\Socialnetwork\Collab\Control\Event\CollabAddEvent;
15use Bitrix\Socialnetwork\Collab\Control\Event\CollabDeleteEvent;
16use Bitrix\Socialnetwork\Collab\Control\Event\CollabUpdateEvent;
17use Bitrix\Socialnetwork\Collab\Control\Handler\Add\AddInviteHandler;
18use Bitrix\Socialnetwork\Collab\Control\Handler\Add\AddLogEntryHandler;
19use Bitrix\Socialnetwork\Collab\Control\Handler\Add\AddMemberHandler;
20use Bitrix\Socialnetwork\Collab\Control\Handler\Add\AddMessageHandler;
21use Bitrix\Socialnetwork\Collab\Control\Handler\Add\AddModeratorsHandler;
22use Bitrix\Socialnetwork\Collab\Control\Handler\Add\AddOptionsHandler;
23use Bitrix\Socialnetwork\Collab\Control\Handler\Add\AddThemeHandler;
24use Bitrix\Socialnetwork\Collab\Control\Handler\Delete\DeleteChatHandler;
25use Bitrix\Socialnetwork\Collab\Control\Handler\Delete\DeleteOptionsHandler;
26use Bitrix\Socialnetwork\Collab\Control\Handler\Update\UpdateInviteHandler;
27use Bitrix\Socialnetwork\Collab\Control\Handler\Update\UpdateLogEntryHandler;
28use Bitrix\Socialnetwork\Collab\Control\Handler\Update\UpdateMemberHandler;
29use Bitrix\Socialnetwork\Collab\Control\Handler\Update\UpdateModeratorsHandler;
30use Bitrix\Socialnetwork\Collab\Control\Handler\Update\UpdateOptionsHandler;
31use Bitrix\Socialnetwork\Collab\Control\Handler\Update\UpdateOwnerHandler;
32use Bitrix\Socialnetwork\Collab\Integration\IM\ActionMessageBuffer;
33use Bitrix\Socialnetwork\Collab\Provider\CollabProvider;
34use Bitrix\Socialnetwork\Collab\Registry\CollabRegistry;
35use Bitrix\Socialnetwork\Control\AbstractGroupService;
36use Bitrix\Socialnetwork\Control\Command\AbstractCommand;
37use Bitrix\Socialnetwork\Control\Command\AddCommand;
38use Bitrix\Socialnetwork\Control\Command\DeleteCommand;
39use Bitrix\Socialnetwork\Control\Command\UpdateCommand;
40use Bitrix\Socialnetwork\Control\GroupResult;
41use Bitrix\Socialnetwork\Control\Handler\Add\AddFeatureHandler;
42use Bitrix\Socialnetwork\Control\Handler\Update\UpdatePermissionsHandler;
43use Bitrix\Socialnetwork\Item\Workgroup;
44use Bitrix\SocialNetwork\Validation\Validator\NotContainsUrlValidator;
83 protected function init(): void
86 $this->registry = CollabRegistry::getInstance();
124 $this->remapValidationErrors(
$result);
126 return $this->setCollabToResult(
$result);
131 $this->remapValidationErrors(
$result);
133 return $this->setCollabToResult(
$result);
143 ActionMessageBuffer::getInstance()->flush();
169 ActionMessageBuffer::getInstance()->flush();
191 if (!$collabResult->isSuccess())
193 return $collabResult;
196 $provider = CollabProvider::getInstance();
198 $collab =
$provider->getCollab((
int)$collabResult->getCollab()?->getId());
199 if ($collab ===
null)
201 $collabResult->addError(
new Error(
'Collab not found'));
203 return $collabResult;
206 $collabResult->setGroup($collab);
208 return $collabResult;
211 private function remapValidationErrors(GroupResult
$result): void
217 if (
$error instanceof ValidationError)
220 $error->getCode() ===
'name'
221 &&
$error->getFailedValidator() instanceof NotContainsUrlValidator
224 $error->setCode(
'ERROR_NAME_CONTAINS_URL');
if(!Loader::includeModule('messageservice')) $provider
sendAddEvent(AddCommand $command, Workgroup $entity)
sendUpdateEvent(UpdateCommand $command, Workgroup $entityBefore, Workgroup $entityAfter)
sendDeleteEvent(DeleteCommand $command, Workgroup $entityBefore)
checkDeleteCommand(DeleteCommand $command)
checkAddCommand(AbstractCommand $command)
sendBeforeUpdateEvent(UpdateCommand $command, Workgroup $entity)
finalizeAddResult(GroupResult $result)
finalizeUpdateResult(GroupResult $result)
checkUpdateCommand(UpdateCommand $command)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)