1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
UsersByStatus.php
См. документацию.
1<?php
2
3namespace Bitrix\Bizproc\Task\Data\ExternalEventTask;
4
5final class UsersByStatus
6{
7 public readonly array $completed;
8 public readonly array $waiting;
9 public readonly array $remove;
10 public readonly array $markCompleted;
11
12 public function __construct(
13 array $allTaskUsers,
14 array $state,
15 array $removeUsers,
16 array $externallyCompleted = null
17 )
18 {
19 $users = ['completed' => [], 'waiting' => [], 'remove' => []];
20 foreach ($allTaskUsers as $user)
21 {
22 $userId = (int)$user['USER_ID'];
23 $status = 'completed';
24
25 if ((int)$user['STATUS'] === \CBPTaskUserStatus::Waiting)
26 {
27 $status = 'waiting';
28 if (in_array($userId, $removeUsers, true))
29 {
30 $allowableEvents = \CBPDocument::getAllowableEvents($userId, $this->getUserGroups($userId), $state);
31 $status = $allowableEvents ? 'waiting' : 'remove';
32 }
33 }
34
35 $users[$status][] = $userId;
36 }
37
38 $markCompleted = [];
39 if ($users['remove'] && $externallyCompleted)
40 {
41 $intersect = array_intersect($externallyCompleted, $users['remove']);
42 if ($intersect)
43 {
44 $markCompleted = $intersect;
45 $users['remove'] = array_diff($users['remove'], $intersect);
46 }
47 }
48
49 $this->completed = $users['completed'];
50 $this->waiting = $users['waiting'];
51 $this->remove = $users['remove'];
52 $this->markCompleted = $markCompleted;
53 }
54
55 private function getUserGroups(int $userId): array
56 {
58
59 return (int)$currentUser->getId() === $userId ? $currentUser->getUserGroups() : \CUser::GetUserGroup($userId);
60 }
61}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
__construct(array $allTaskUsers, array $state, array $removeUsers, array $externallyCompleted=null)
Определения UsersByStatus.php:12
static get()
Определения currentuser.php:33
const Waiting
Определения constants.php:273
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$status
Определения session.php:10
$user
Определения mysql_to_pgsql.php:33