• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/update/correcteventingoogle.php
  • Класс: BitrixCalendarUpdateCorrectEventInGoogle
  • Вызов: CorrectEventInGoogle::getRecurrentEvents
public function getRecurrentEvents(): array
{
	global $DB;

	$events = [];
	$strSql = "SELECT DISTINCT "
			. "p.*"
			. ", " . $DB->DateToCharFunction('p.DATE_FROM') . " as DATE_FROM"
			. ", " . $DB->DateToCharFunction('p.DATE_TO') . " as DATE_TO"
			. ", " . $DB->DateToCharFunction('p.DATE_CREATE') . " as DATE_CREATE"
			. ", " . $DB->DateToCharFunction('p.TIMESTAMP_X') . " as TIMESTAMP_X"
			. ", s.CAL_DAV_CON as CONNECTION_ID"
			. ", s.GAPI_CALENDAR_ID as GAPI_CALENDAR_ID"
			. ", GROUP_CONCAT(". $DB->DateToCharFunction('i.DATE_FROM')." SEPARATOR ';') as EXDATE"
		. " FROM b_calendar_event p"
		. " INNER JOIN b_calendar_event i"
			. " ON i.RECURRENCE_ID = p.PARENT_ID"
			. " AND p.OWNER_ID = i.OWNER_ID"
		. " INNER JOIN b_calendar_section s"
			. " ON s.ID = p.SECTION_ID"
		. " WHERE"
			. " p.RRULE IS NOT NULL"
			. " AND p.DATE_TO_TS_UTC >= " . $this->getSyncTimestamp()
			. " AND p.G_EVENT_ID IS NOT NULL"
			. " AND p.SYNC_STATUS != '" . Dictionary::SYNC_STATUS['exdated'] . "'"
			. " AND p.SYNC_STATUS != '" . Dictionary::SYNC_STATUS['delete'] . "'"
			. " AND p.SYNC_STATUS != '" . Dictionary::SYNC_STATUS['deleted'] . "'"
			. " AND i.MEETING_STATUS = 'N'"
			. " AND s.EXTERNAL_TYPE = 'local'"
			. " AND s.CAL_DAV_CON IS NOT NULL"
			. " AND s.GAPI_CALENDAR_ID IS NOT NULL"
		. " GROUP BY p.ID"
		. " LIMIT 10"
		. ";"
	;
	$eventsDb = $DB->Query($strSql);

	while ($event = $eventsDb->Fetch())
	{
		if (isset($event['REMIND']) && $event['REMIND'] !== "")
		{
			$event['REMIND'] = unserialize($event['REMIND'], ['allowed_classes' => false]);
		}

		$event['RRULE'] = CCalendarEvent::ParseRRULE($event['RRULE']);

		$events[] = $event;
	}

	return $events;
}