3declare(strict_types=1);
5namespace Bitrix\Socialnetwork\Control\Member;
9use Bitrix\Main\Type\DateTime;
10use Bitrix\Socialnetwork\Control\Handler\HandlerResult;
11use Bitrix\Socialnetwork\Control\Member\Command\MembersCommand;
12use Bitrix\Socialnetwork\Control\Member\Trait\AddMemberTrait;
13use Bitrix\Socialnetwork\Control\Member\Trait\UpdateMemberRoleTrait;
14use Bitrix\Socialnetwork\Integration\HumanResources\AccessCodeConverter;
15use Bitrix\Socialnetwork\Internals\Registry\GroupRegistry;
16use Bitrix\Socialnetwork\Item\Workgroup;
17use Bitrix\Socialnetwork\UserToGroupTable;
18use CSocNetUserToGroup;
23 use UpdateMemberRoleTrait;
27 $currentMembers = $this->getMemberIds($command->getGroupId());
35 $membersToInvite = array_diff($membersByCommand, $currentMembers);
36 if (empty($membersToInvite))
41 foreach ($membersToInvite as
$userId)
43 $isSuccess = CSocNetUserToGroup::SendRequestToJoinGroup(
44 $command->getInitiatorId(),
46 $command->getGroupId(),
62 $currentMembers = $this->getMemberIds($command->getGroupId());
70 $membersToAdd = array_diff($membersByCommand, $currentMembers);
71 if (empty($membersToAdd))
76 foreach ($membersToAdd as
$userId)
80 'GROUP_ID' => $command->getGroupId(),
85 'INITIATED_BY_USER_ID' => $command->getInitiatorId(),
88 $isSuccess = CSocNetUserToGroup::Add(
$user);
108 if (empty($membersByCommand))
113 $relations = UserToGroupTable::query()
115 ->where(
'GROUP_ID', $command->getGroupId())
116 ->whereIn(
'USER_ID', $membersByCommand)
121 $relations = array_column($relations,
'ID');
123 foreach ($relations as $relationId)
125 $isSuccess = CSocNetUserToGroup::Delete($relationId);
140 $commandModeratorsAccessCodes = $command->getMembers();
141 if (empty($commandModeratorsAccessCodes))
151 $add = array_diff($commandModerators, $this->getMemberIds($command->getGroupId()));
152 $result = $this->addModeratorMembers($command, $add);
155 $currentMembers = $this->getMemberIds($command->getGroupId());
156 foreach ($commandModerators as $moderatorId)
158 $isCurrentMember = in_array($moderatorId, $currentMembers,
true);
159 $isAlreadyAdd = in_array($moderatorId, $add,
true);
161 if ($isCurrentMember && !$isAlreadyAdd)
163 $update[] = $moderatorId;
172 $result->merge($this->increaseMembersRole($command, $update));
179 return $this->addMembers(
180 $command->getGroupId(),
181 $command->getInitiatorId(),
188 private function increaseMembersRole(MembersCommand $command,
array $memberIds):
HandlerResult
190 return $this->updateMembersRole(
191 $command->getGroupId(),
192 $command->getInitiatorId(),
202 $commandModeratorsAccessCodes = $command->getMembers();
203 if (empty($commandModeratorsAccessCodes))
214 $delete = array_intersect($currentModerators, $commandModerators);
218 $result = $this->decreaseMembersRole($command, $delete);
226 return GroupRegistry::getInstance();
231 return $this->updateMembersRole(
232 $command->getGroupId(),
233 $command->getInitiatorId(),
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
inviteImplementation(MembersCommand $command, Workgroup $group)
addModeratorsImplementation(MembersCommand $command, Workgroup $group)
addImplementation(MembersCommand $command, Workgroup $group)
deleteImplementation(MembersCommand $command, Workgroup $group)
deleteModeratorsImplementation(MembersCommand $command, Workgroup $group)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)