1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
workgrouprequestrecipient.php
См. документацию.
1<?php
2
3namespace Bitrix\Socialnetwork\Internals\EventService\Recepients;
4
5use Bitrix\Main\UserTable;
6use Bitrix\Socialnetwork\EO_Workgroup;
7use Bitrix\Socialnetwork\UserToGroupTable;
8use Bitrix\Socialnetwork\WorkgroupTable;
9
11{
12 private int $groupId;
13 private EO_Workgroup|null $group = null;
14
15 public function __construct(int $groupId)
16 {
17 $this->groupId = $groupId;
18 $this->getGroup();
19 }
20
21 public function fetch(int $limit, int $offset): RecepientCollection
22 {
23 $memberIds = $this->getMemberIds();
24 if (empty($memberIds))
25 {
26 return new RecepientCollection(...[]);
27 }
28
29 $res = UserTable::query()
30 ->setSelect(['ID', 'ACTIVE', 'IS_REAL_USER', 'IS_ONLINE'])
31 ->whereIn('ID', $memberIds)
32 ->where('ACTIVE', '=', 'Y')
33 ->where('REAL_USER', 'expr', true)
34 ->setLimit($limit)
35 ->setOffset($offset)
36 ->fetch()
37 ;
38
39 $recipients = [];
40 foreach ($res as $user)
41 {
42 $userId = $user['ID'] ?? 0;
43 $isOnline = $user['IS_ONLINE'] ?? true;
44
45 $recipients[] = new Recepient((int)$userId, (bool)$isOnline);
46 }
47
48 return new RecepientCollection(...$recipients);
49 }
50
51 private function getMemberIds(): array
52 {
53 if (!$this->getGroup())
54 {
55 return [];
56 }
57
58 $initiatePerms = $this->getGroup()->get('INITIATE_PERMS') ?? UserToGroupTable::ROLE_USER;
59 $scrumMasterId = (int)$this->getGroup()->get('SCRUM_MASTER_ID');
60
61 $members = UserToGroupTable::query()
62 ->setSelect(['USER_ID'])
63 ->where('GROUP_ID', $this->groupId)
64 ->where('ROLE', '<=', $initiatePerms)
65 ->fetchAll()
66 ;
67
68 $memberIds = array_map(fn($member): int => (int)$member['USER_ID'], $members);
69 if ($scrumMasterId > 0)
70 {
71 $memberIds = array_unique(array_merge($memberIds, [$scrumMasterId]));
72 }
73
74 return $memberIds;
75 }
76
77 private function getGroup(): EO_Workgroup|null
78 {
79 if ($this->group)
80 {
81 return $this->group;
82 }
83
84 $this->group = WorkgroupTable::query()
85 ->setSelect(['ID', 'CLOSED', 'PROJECT', 'SCRUM_MASTER_ID', 'INITIATE_PERMS'])
86 ->where('ID', $this->groupId)
87 ->fetchObject()
88 ;
89
90 return $this->group;
91 }
92}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
$user
Определения mysql_to_pgsql.php:33