• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar_event.php
  • Класс: CCalendarEvent
  • Вызов: CCalendarEvent::getLocalBatchInstances
static function getLocalBatchInstances(int $userId, int $sectionId, int $syncTimestamp, int $count = 50): array
{
	global $DB;

	$strQuery =
		"SELECT"
			. " i.*"
			. ", " . $DB->DateToCharFunction('i.DATE_FROM') . " as DATE_FROM"
			. ", " . $DB->DateToCharFunction('i.DATE_TO') . " as DATE_TO"
			. ", " . $DB->DateToCharFunction('i.DATE_CREATE') . " as DATE_CREATE"
			. ", " . $DB->DateToCharFunction('i.TIMESTAMP_X') . " as TIMESTAMP_X"
			. ", " . $DB->DateToCharFunction('p.DATE_FROM') . " as PARENT_DATE_FROM"
			. ", " . $DB->DateToCharFunction('i.ORIGINAL_DATE_FROM') . " as ORIGINAL_DATE_FROM"
			. ", p.TZ_FROM as PARENT_TZ_FROM"
			. ", p.DAV_XML_ID as PARENT_DAV_XML_ID"
			. ", p.G_EVENT_ID as PARENT_G_EVENT_ID"
		. " FROM b_calendar_event as i"
		. " INNER JOIN b_calendar_event as p"
			. " ON (i.RECURRENCE_ID = p.PARENT_ID AND p.OWNER_ID = " . $userId . ")"
		. " INNER JOIN b_calendar_section s"
			. " ON s.ID = i.SECTION_ID"
		. " WHERE"
			. " p.RRULE IS NOT NULL"
			. " AND i.SYNC_STATUS IS NULL"
			. " AND (i.MEETING_STATUS != 'N'"
				. " OR i.MEETING_STATUS IS NULL)"
			. " AND p.DATE_TO_TS_UTC >= " . $syncTimestamp
			. " AND p.G_EVENT_ID IS NOT NULL"
			. " AND p.G_EVENT_ID <> ''"
			. " AND p.DELETED != 'Y'"
			. " AND i.SECTION_ID = ". $sectionId
			. " AND i.OWNER_ID = ". $userId
			. " AND s.EXTERNAL_TYPE = 'local'"
			. " AND s.GAPI_CALENDAR_ID IS NOT NULL"
		. " LIMIT " . $count
		. ";"
	;

	$instances = [];
	$instancesDb = $DB->Query($strQuery);
	while($instance = $instancesDb->Fetch())
	{
		if (isset($instance['REMIND']) && $instance['REMIND'] !== "")
		{
			$instance['REMIND'] = unserialize($instance['REMIND'], ['allowed_classes' => false]);
		}

		$instances[] = $instance;
	}

	return $instances;
}