1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
SendInvitationTrait.php
См. документацию.
1<?php
2
4
16use Bitrix\Socialnetwork\Control\Member\Trait\GetMembersTrait;
19use CSocNetUserToGroup;
20
22{
23 use GetMembersTrait;
24
32 {
33 $handlerResult = new HandlerResult();
34 if (!$this->isCommandCorrect($handlerResult, $command))
35 {
36 return $handlerResult;
37 }
38
39 $currentMembers = $this->getMemberIds($entity->getId());
40 $membersByCommand = (new AccessCodeConverter(...$command->getMembers()))
41 ->getUsers()
42 ->getUserIds()
43 ;
44
45 foreach ($membersByCommand as $memberId)
46 {
47 if (in_array($memberId, $currentMembers, true))
48 {
49 continue;
50 }
51
52 $requestResult = CSocNetUserToGroup::SendRequestToJoinGroup(
53 $command->getInitiatorId(),
54 $memberId,
55 $entity->getId(),
56 Loc::getMessage('SOCIALNETWORK_JOIN_PROJECT')
57 );
58
59 if (!$requestResult)
60 {
61 $handlerResult->addApplicationError();
62 }
63 }
64
65 if (!empty($membersByCommand))
66 {
67 $handlerResult->setGroupChanged();
68 }
69
70 return $handlerResult;
71 }
72
73 private function isCommandCorrect(GroupResult $handlerResult, AbstractCommand $command): bool
74 {
75 if (!($command instanceof AddCommand || $command instanceof UpdateCommand))
76 {
77 $handlerResult->addError(
78 new Error(Loc::getMessage('SOCIALNETWORK_SEND_INVITATION_COMMAND_TYPE_INCORRECT'))
79 );
80
81 return false;
82 }
83
84 if (empty($command->getMembers()))
85 {
86 return false;
87 }
88
89 return true;
90 }
91}
Определения error.php:15
addError(Error $error)
Определения result.php:50
$entity
send(AbstractCommand $command, Workgroup $entity)
Определения SendInvitationTrait.php:31