34 if (empty(
$data[
'eventId']))
39 $eventId = (int)
$data[
'eventId'];
41 $eventArray = EventTable::getList([
44 ->where(
'DELETED',
'N')
45 ->where(
'ID', $eventId)
58 'ATTENDEES' => \CCalendar::GetDestinationUsers(
$event->getAttendeesCollection()->getAttendeesCodes()),
59 'REMIND' => unserialize($eventArray[
'REMIND'], [
'allowed_classes' =>
false]),
63 $event->getCalendarType() ===
Core\
Event\Tools\Dictionary::CALENDAR_TYPE[
'group']
64 && Loader::includeModule(
'socialnetwork')
70 if (
$event->getRecurringRule())
87 && Loader::includeModule(
'im')
88 &&
$event->getMeetingDescription()
89 && !empty(
$event->getMeetingDescription()->getFields()[
'CHAT_ID'])
92 $currentAttendees =
$fields[
'ATTENDEES'];
94 $event->getMeetingDescription()->getFields()[
'CHAT_ID'],
95 $fields[
'MEETING_HOST'] ??
null,
96 array_diff($previousAttendees ?? [], $currentAttendees),
100 if (!empty($newHostEventData))
104 \CCalendar::ClearCache();
120 $groupMembers = \Bitrix\Socialnetwork\UserToGroupTable::query()
121 ->setSelect([
'USER_ID',
'ROLE'])
122 ->addFilter(
'GROUP_ID',
$event->getOwner()->getId())
126 foreach ($groupMembers as $groupMember)
128 if (
$event->getEventHost() && (
int)($groupMember[
'USER_ID'] ??
null) ===
$event->getEventHost()->getId())
130 $eventHostId = (int)$groupMember[
'USER_ID'];
134 $groupOwnerId = (int)$groupMember[
'USER_ID'];
138 $isEventHostGroupMember = !empty($eventHostId);
140 if (!$isEventHostGroupMember && !empty($groupOwnerId) &&
$event->getMeetingDescription())
156 $attendeesCodes =
$event->getAttendeesCollection()->getAttendeesCodes();
159 $fields[
'ATTENDEES'] = \CCalendar::GetDestinationUsers(
$fields[
'ATTENDEES_CODES']);
161 if (is_array(
$fields[
'ATTENDEES']) && !in_array($groupOwnerId,
$fields[
'ATTENDEES'],
true))
163 $fields[
'ATTENDEES'][] = $groupOwnerId;
164 $fields[
'ATTENDEES_CODES'] = array_merge([
'U'. $groupOwnerId],
$fields[
'ATTENDEES_CODES']);
168 $groupOwner = \CUser::GetByID($groupOwnerId)->Fetch();
169 $fields[
'MEETING_HOST'] = $groupOwnerId;
171 $meetingFields =
$event->getMeetingDescription()->getFields();
172 $meetingFields[
'HOST_NAME'] = ltrim($groupOwner[
'NAME'] .
' ' . $groupOwner[
'LAST_NAME']);
173 $meetingFields[
'MEETING_CREATOR'] = $groupOwnerId;
175 $fields[
'MEETING'] = $meetingFields;
189 static function ($attendeeCode) use (
$event)
191 return $attendeeCode !==
'U' .
$event->getEventHost()->getId();
203 $events = EventTable::query()
204 ->addSelect(
'OWNER_ID')
205 ->addFilter(
'DELETED',
'N')
206 ->addFilter(
'PARENT_ID', $parentEventId)
207 ->addFilter(
'CAL_TYPE',
Core\
Event\Tools\Dictionary::CALENDAR_TYPE[
'user'])
210 $previousAttendees = [];
211 foreach ($events as
$event)
213 $previousAttendees[] = (int)
$event[
'OWNER_ID'];
216 return $previousAttendees;
225 return !empty(
$fields[
'MEETING_HOST']);
238 return EventTable::query()
239 ->setSelect([
'ID',
'MEETING_STATUS'])
240 ->addFilter(
'DELETED',
'N')
241 ->addFilter(
'PARENT_ID', $eventId)
242 ->addFilter(
'CAL_TYPE',
Core\
Event\Tools\Dictionary::CALENDAR_TYPE[
'user'])
243 ->addFilter(
'OWNER_ID',
$fields[
'MEETING_HOST'])
256 ?
int $newMeetingHostId,
257 array $deletedAttendeesIds
262 $chat = new \CIMChat($newMeetingHostId);
263 if ($newMeetingHostId > 0)
265 $chat->SetOwner($chatId, $newMeetingHostId,
false);
267 foreach ($deletedAttendeesIds as $deletedAttendeeId)
269 $chat->DeleteUser($chatId, $deletedAttendeeId,
false);
281 if (!empty($newHostEventData[
'ID']) && !empty($newHostEventData[
'MEETING_STATUS']))
283 EventTable::update((
int)$newHostEventData[
'ID'], [
297 EventTable::update($eventId, [
298 'CREATED_BY' => $newOwnerId,
309 return \CCalendar::SaveEvent([
310 'recursionEditMode' =>
'skip',
311 'overSaving' =>
true,
312 'checkPermission' =>
false,
313 'sendInvitations' =>
true,
329 \CCalendarEvent::ParseRecursion($entries, $eventArray, [
330 'fromLimitTs' => time() - $eventArray[
'TZ_OFFSET_FROM'],
331 'toLimitTs' => $eventArray[
'DATE_TO_TS_UTC'],
332 'instanceCount' => 1,
333 'loadLimit' =>
false,
334 'preciseLimits' =>
true,
335 'checkPermission' =>
false,
339 if (!empty($entries))
341 $result = \CCalendar::SaveEventEx([
342 'recursionEditMode' =>
'next',
343 'currentEventDateFrom' => $entries[0][
'DATE_FROM'],
344 'overSaving' =>
true,
345 'checkPermission' =>
false,
346 'sendInvitations' =>
true,
364 return $fields[
'MEETING_HOST'] ?? (
$event->getEventHost() ?
$event->getEventHost()->getId() :
null);
updateCreatedByFieldInGroupEvent(int $eventId, int $newOwnerId)
removePreviousMeetingHostFromAttendeesCodes(array $attendeesCodes, Event $event)
process(Interfaces\Message $message)
saveNotRecurrentEvent(Event $event, array $fields)
saveRecurrentEvent(Event $event, array $fields, array $eventArray)
getEventPreviousAttendees(int $parentEventId)
prepareGroupEventData(Event $event, array $fields)
prepareGroupEventWithNewHostFields(Event $event, int $groupOwnerId, array $fields)
updateEventChat(?int $chatId, ?int $newMeetingHostId, array $deletedAttendeesIds)
getSaveEventUserId(array $fields, Event $event)
wasEventOwnerUpdated(array $fields)
getNewHostEventData(array $fields, int $eventId)
updateNewMeetingHostStatus(array $newHostEventData)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)