- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/controllers/calendar.php
- Класс: BitrixTasksScrumControllersCalendar
- Вызов: Calendar::getUpcomingEventsForThisProject
private function getUpcomingEventsForThisProject(int $groupId): array
{
$listEvents = [];
$defaultSprintDuration = $this->getDefaultSprintDuration($groupId) + 86400;
$sections = CCalendarSect::getList([
'arFilter' => [
'OWNER_ID'=> $groupId,
'ACTIVE' => 'Y',
'CAL_TYPE' => 'group',
],
'checkPermissions' => true
]);
foreach ($sections as $section)
{
$events = CCalendarEvent::getList(
[
'arFilter' => [
'SECTION_ID' => $section['ID'],
'OWNER_ID' => $groupId,
'CAL_TYPE' => 'group',
'DELETED' => 'N',
'FROM_LIMIT' => CCalendar::date(time(), false),
'TO_LIMIT' => CCalendar::date(time() + $defaultSprintDuration, false),
],
'parseRecursion' => true,
'preciseLimits' => true,
'fetchAttendees' => true,
'checkPermissions' => true,
'setDefaultLimit' => false
]
);
foreach ($events as $event)
{
$fromTs = CCalendar::timestamp($event['DATE_FROM']);
$toTs = CCalendar::timestamp($event['DATE_TO']);
//$fromTs += CCalendar::getTimezoneOffset($event['TZ_FROM'], $fromTs);
//$toTs += CCalendar::getTimezoneOffset($event['TZ_TO'], $toTs);
$fromTs = $fromTs + date('Z', $fromTs);
$toTs = $toTs + date('Z', $toTs);
$currentTs = time();
if ($fromTs > $currentTs)
{
if (!isset($listEvents[$event['ID']]))
{
$listEvents[$event['ID']] = [
'id' => $event['ID'],
'name' => $event['NAME'],
'from' => $fromTs,
'to' => $toTs,
'color' => $event['COLOR'],
'repeatable' => $event['RRULE'] !== '',
];
}
}
}
}
return array_values($listEvents);
}