1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
UpdateMemberHandler.php
См. документацию.
1<?php
2
3declare(strict_types=1);
4
5namespace Bitrix\Socialnetwork\Control\Handler\Update;
6
7use Bitrix\Main\ArgumentException;
8use Bitrix\Main\LoaderException;
9use Bitrix\Main\ObjectPropertyException;
10use Bitrix\Main\SystemException;
11use Bitrix\Socialnetwork\Control\Command\UpdateCommand;
12use Bitrix\Socialnetwork\Control\GroupResult;
13use Bitrix\Socialnetwork\Control\Handler\HandlerResult;
14use Bitrix\Socialnetwork\Integration\HumanResources\AccessCodeConverter;
15use Bitrix\Socialnetwork\Item\Workgroup;
16
18{
26 public function update(UpdateCommand $command, Workgroup $entityBefore, Workgroup $entityAfter): HandlerResult
27 {
28 $handlerResult = new HandlerResult();
29 if ($command->getAddMembers() === null)
30 {
31 return $handlerResult;
32 }
33
34 $currentMembers = $entityBefore->getUserMemberIds();
35 $currentMembersByDepartments = $this->getDepartmentsMemberList($entityBefore);
36
37 $membersByCommand = (new AccessCodeConverter(...$command->getAddMembers()))->getUserIds();
38
39 //When remove a department from group members, only synchronization with it is deleted - members remain
40 $membersAfterUpdate = array_merge($membersByCommand, $currentMembersByDepartments);
41
42 $membersToExclude = array_diff($currentMembers, $membersAfterUpdate);
43 foreach ($membersToExclude as $memberId)
44 {
45 \Bitrix\Socialnetwork\Helper\Workgroup::exclude([
46 'groupId' => $entityAfter->getId(),
47 'userId' => $memberId,
48 ]);
49 }
50
51 return $handlerResult;
52 }
53
61 private function getDepartmentsMemberList(Workgroup $workgroup): array
62 {
63 $departmentIds = $workgroup->getSynchronizedDepartmentIds();
64 $departmentAccessCodes = array_map(
65 static fn(int $departmentId): string => "DR${departmentId}",
66 $departmentIds
67 );
68
69 return (new AccessCodeConverter(...$departmentAccessCodes))->getUserIds();
70 }
71}
update(UpdateCommand $command, Workgroup $entityBefore, Workgroup $entityAfter)
Определения UpdateMemberHandler.php:26
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804