• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar_sync.php
  • Класс: CCalendarSync
  • Вызов: CCalendarSync::getLocalEventsList
static function getLocalEventsList($localCalendar, $externalEventsGEventId)
{
	$eventsDb = InternalsEventTable::query()
		->where('SECTION_ID', $localCalendar['ID'])
		->whereIn('G_EVENT_ID', $externalEventsGEventId)
		->setSelect([
			"ID",
			"CAL_TYPE",
			"DT_SKIP_TIME",
			"DATE_FROM",
			"DATE_TO",
			"TZ_FROM",
			"TZ_TO",
			"PARENT_ID",
			"IS_MEETING",
			"MEETING_STATUS",
			"MEETING",
			"LOCATION",
			"RRULE",
			"EXDATE",
			"DAV_XML_ID",
			"RECURRENCE_ID",
			"G_EVENT_ID",
			"ATTENDEES_CODES",
			"OWNER_ID",
		])->exec();

	$eventList = [];
	while ($event = $eventsDb->fetch())
	{
		if (!static::$attendeeList[$event['PARENT_ID']])
		{
			static::$attendeeList[$event['PARENT_ID']] = !CCalendarEvent::getAttendeeList($event['PARENT_ID'])
				?: CCalendarEvent::getAttendeeList($event['PARENT_ID'])['attendeeList'][$event['PARENT_ID']];
		}

		if (is_array(static::$attendeeList[$event['PARENT_ID']]))
		{
			$event['ATTENDEES'] = array_column(static::$attendeeList[$event['PARENT_ID']], 'id');
		}

		if (is_string($event['MEETING']))
		{
			$event['MEETING'] = unserialize($event['MEETING'], ['allowed_classes' => false]);
		}

		if (!empty($event['G_EVENT_ID']))
		{
			$eventList[$event['G_EVENT_ID']] = $event;
		}
		elseif (!empty($event['DAV_XML_ID']))
		{
			$eventList[str_replace('@google', '',$event['DAV_XML_ID'])] = $event;
		}
	}

	return $eventList;
}