- Модуль: 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;
}