3declare(strict_types=1);
5namespace Bitrix\Socialnetwork\Collab\Converter\Command;
9use Bitrix\Socialnetwork\Collab\Control\Command\ValueObject\CollabFeatures;
10use Bitrix\Socialnetwork\Collab\Control\Command\ValueObject\CollabOptions;
11use Bitrix\Socialnetwork\Collab\Control\Command\ValueObject\CollabSiteIds;
12use Bitrix\Socialnetwork\Collab\Control\Option\Type\WhoCanInviteOption;
13use Bitrix\Socialnetwork\Collab\Converter\Handler\AbstractHandler;
14use Bitrix\Socialnetwork\Collab\Converter\Handler\SendChatMessageHandler;
15use Bitrix\Socialnetwork\Collab\Converter\Handler\SetCollabOptionsHandler;
16use Bitrix\Socialnetwork\Collab\Converter\Handler\SetDefaultThemeHandler;
17use Bitrix\Socialnetwork\Collab\Converter\Handler\SetFeaturesHandler;
18use Bitrix\Socialnetwork\Collab\Converter\Handler\UpdateChatHandler;
19use Bitrix\Socialnetwork\Collab\Converter\Handler\UpdateGroupHandler;
20use Bitrix\Socialnetwork\Collab\Converter\Handler\UpdateGroupTypeHandler;
21use Bitrix\Socialnetwork\Collab\Integration\IM\ActionType;
22use Bitrix\Socialnetwork\Collab\Property\Feature;
23use Bitrix\Socialnetwork\Control\Command\UpdateCommand;
24use Bitrix\Socialnetwork\Control\Command\ValueObject\Features;
25use Bitrix\Socialnetwork\Control\Command\ValueObject\FeaturesPermissions;
26use Bitrix\Socialnetwork\Control\Enum\ViewMode;
27use Bitrix\Socialnetwork\Integration\Tasks\Flow\FlowService;
28use Bitrix\Socialnetwork\Item\Workgroup\AvatarType;
29use Bitrix\Socialnetwork\Item\Workgroup\Type;
30use Bitrix\Socialnetwork\Provider\FeatureProvider;
36 private const TURNED_OFF_FEATURES = [
55 'landing_knowledge' => [
69 ->setSiteIds(CollabSiteIds::createWithDefaultValue())
70 ->setViewMode(ViewMode::SECRET)
71 ->setAvatarType(AvatarType::None)
72 ->setId($this->group->getId())
73 ->setInitiatorId($this->getInitiatorId())
74 ->setFeatures($this->prepareFeatures())
75 ->setPermissions(FeaturesPermissions::create(self::TURNED_OFF_FEATURES))
78 $collabOptions = CollabOptions::create([WhoCanInviteOption::NAME => $this->group->getInitiatePermission()]);
92 private function prepareFeatures():
Features
94 $features = CollabFeatures::createWithDefaultValue();
96 $currentFeatures = FeatureProvider::getInstance()->getFeatures($this->group->getId());
97 foreach ($currentFeatures as $feature)
99 if ($feature->isActive)
101 $features->add($feature->feature);
112 if ($this->group->getType() !== Type::Group)
114 $result->addError(
new Error(
'Only groups can be converted into collabs', self::ERROR_CODE_WRONG_TYPE));
117 if ((
new FlowService())->doesGroupHaveFlows($this->group->getId()))
119 $result->addError(
new Error(
'The group should not have flows', self::ERROR_CODE_HAS_FLOWS));
const ERROR_CODE_HAS_FLOWS
const ERROR_CODE_WRONG_TYPE
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)