1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
attendeeservice.php
См. документацию.
1<?php
2
4
12
14{
15 public function getAttendeeAccessCodes(?array $attendeesEntityList, int $userId): array
16 {
17 $codes = [];
18 if (is_array($attendeesEntityList))
19 {
20 $codes = Util::convertEntitiesToCodes($attendeesEntityList);
21 }
22 return \CCalendarEvent::handleAccessCodes($codes, ['userId' => $userId]);
23 }
24
25 public function isMeeting(array $accessCodes, Section $section, int $userId): bool
26 {
27 $calType = $section->getType() ?? '';
28
29 return $accessCodes !== ['U'.$userId]
30 || in_array($calType, ['group', 'company_calendar', Dictionary::CALENDAR_TYPE['open_event']], true);
31 }
32
33 public function excludeAttendees(array $attendees, array $attendeesCodes, ?string $paramExcludeUsers): array
34 {
35 $excludeUsers = $this->getExcludeUsers($attendees, $paramExcludeUsers);
36 if (!empty($excludeUsers))
37 {
38 $attendeesCodes = [];
39 $attendees = array_diff($attendees, $excludeUsers);
40 foreach($attendees as $attendee)
41 {
42 $attendeesCodes[] = 'U'. (int)$attendee;
43 }
44 }
45
46 return [
47 'attendees' => $attendees,
48 'codes' => $attendeesCodes,
49 ];
50 }
51
52 public function getExcludeUsers(?array $attendees, ?string $paramsExcludeUsers): array
53 {
54 $excludeUsers = [];
55 if ($paramsExcludeUsers && !empty($attendees))
56 {
57 $excludeUsers = explode(',', $paramsExcludeUsers);
58 }
59
60 return $excludeUsers;
61 }
62
66 public function checkBusyAttendees(BusyAttendees $command, ?array $paramAttendees, ?int $eventId = null, array $additionalExcludeUsers = []): void
67 {
68 $attendees = [];
69 $eventId = $eventId ?? 0;
70
72 {
73 $attendees = $paramAttendees;
74 }
75 else if (is_array($command->getNewAttendeesList()))
76 {
77 $excludedUsers = explode(',', $command->getExcludeUsers());
78 $attendees = array_diff($command->getNewAttendeesList(), $excludedUsers);
79 }
80
81 $timezoneFrom = !empty($command->getTimeZoneFrom()) ? $command->getTimeZoneFrom() : \CCalendar::GetUserTimezoneName(\CCalendar::GetUserId());
82 $timezoneTo = !empty($command->getTimeZoneTo()) ? $command->getTimeZoneTo() : $timezoneFrom;
83 $timezoneOffsetFrom = Util::getTimezoneOffsetUTC($timezoneFrom);
84 $timezoneOffsetTo = Util::getTimezoneOffsetUTC($timezoneTo);
85 $timestampFrom = \CCalendar::TimestampUTC($command->getDateFrom()) - $timezoneOffsetFrom;
86 $timestampTo = \CCalendar::TimestampUTC($command->getDateTo()) - $timezoneOffsetTo;
87 if ($command->isSkipTime())
88 {
89 $timestampTo += \CCalendar::GetDayLen();
90 }
91
92 $busyUsers = $this->getBusyUsersIds($attendees, $eventId, $timestampFrom, $timestampTo, $additionalExcludeUsers);
93 if (!empty($busyUsers))
94 {
95 $busyUsersList = \CCalendarEvent::getUsersDetails($busyUsers);
96 $busyUserName = current($busyUsersList)['DISPLAY_NAME'];
97 throw (new AttendeeBusy())
98 ->setBusyUsersList($busyUsersList)
99 ->setAttendeeName($busyUserName)
100 ;
101 }
102 }
103
104 private function getBusyUsersIds(array $attendees, int $curEventId, int $fromTs, int $toTs, array $additionalExcludeUsers): array
105 {
106 $usersToCheck = $this->getUsersToCheck($attendees, $additionalExcludeUsers);
107 if (empty($usersToCheck))
108 {
109 return [];
110 }
111
112 return (new Accessibility())
113 ->setSkipEventId($curEventId)
114 ->getBusyUsersIds($usersToCheck, $fromTs, $toTs);
115 }
116
117 private function getUsersToCheck(array $attendees, array $additionalExcludeUsers): array
118 {
119 $usersToCheck = [];
120 foreach ($attendees as $attId)
121 {
122 $attendeeId = (int)$attId;
123 if ($attendeeId !== \CCalendar::GetUserId() && !in_array($attendeeId, $additionalExcludeUsers, true))
124 {
125 $userSettings = UserSettings::get($attendeeId);
126 if ($userSettings && $userSettings['denyBusyInvitation'])
127 {
128 $usersToCheck[] = $attendeeId;
129 }
130 }
131 }
132 return $usersToCheck;
133 }
134}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
checkBusyAttendees(BusyAttendees $command, ?array $paramAttendees, ?int $eventId=null, array $additionalExcludeUsers=[])
Определения attendeeservice.php:66
excludeAttendees(array $attendees, array $attendeesCodes, ?string $paramExcludeUsers)
Определения attendeeservice.php:33
getExcludeUsers(?array $attendees, ?string $paramsExcludeUsers)
Определения attendeeservice.php:52
isMeeting(array $accessCodes, Section $section, int $userId)
Определения attendeeservice.php:25
getAttendeeAccessCodes(?array $attendeesEntityList, int $userId)
Определения attendeeservice.php:15
static get($userId=null)
Определения usersettings.php:86
Определения util.php:21
static getTimezoneOffsetUTC(string $timezoneName)
Определения util.php:767
static convertEntitiesToCodes($entityList=[])
Определения util.php:167
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804