Changeset View
Changeset View
Standalone View
Standalone View
src/applications/calendar/query/PhabricatorCalendarEventQuery.php
Show First 20 Lines • Show All 95 Lines • ▼ Show 20 Lines | protected function loadPage() { | ||||
if (!$this->generateGhosts) { | if (!$this->generateGhosts) { | ||||
return $events; | return $events; | ||||
} | } | ||||
foreach ($events as $event) { | foreach ($events as $event) { | ||||
$sequence_start = 0; | $sequence_start = 0; | ||||
$instance_count = null; | $instance_count = null; | ||||
$duration = $event->getDateTo() - $event->getDateFrom(); | |||||
if ($event->getIsRecurring()) { | if ($event->getIsRecurring()) { | ||||
$frequency = $event->getFrequencyUnit(); | $frequency = $event->getFrequencyUnit(); | ||||
$modify_key = '+1 '.$frequency; | $modify_key = '+1 '.$frequency; | ||||
if ($this->rangeBegin && $this->rangeBegin > $event->getDateFrom()) { | if ($this->rangeBegin && $this->rangeBegin > $event->getDateFrom()) { | ||||
$max_date = $this->rangeBegin; | $max_date = $this->rangeBegin - $duration; | ||||
$date = $event->getDateFrom(); | $date = $event->getDateFrom(); | ||||
$datetime = PhabricatorTime::getDateTimeFromEpoch($date, $viewer); | $datetime = PhabricatorTime::getDateTimeFromEpoch($date, $viewer); | ||||
while ($date < $max_date) { | while ($date < $max_date) { | ||||
// TODO: optimize this to not loop through all off-screen events | // TODO: optimize this to not loop through all off-screen events | ||||
$sequence_start++; | $sequence_start++; | ||||
$datetime = PhabricatorTime::getDateTimeFromEpoch($date, $viewer); | $datetime = PhabricatorTime::getDateTimeFromEpoch($date, $viewer); | ||||
$date = $datetime->modify($modify_key)->format('U'); | $date = $datetime->modify($modify_key)->format('U'); | ||||
} | } | ||||
$start = $this->rangeBegin; | $start = $this->rangeBegin; | ||||
} else { | } else { | ||||
$start = $event->getDateFrom(); | $start = $event->getDateFrom() - $duration; | ||||
} | } | ||||
$date = $start; | $date = $start; | ||||
$start_datetime = PhabricatorTime::getDateTimeFromEpoch( | $start_datetime = PhabricatorTime::getDateTimeFromEpoch( | ||||
$start, | $start, | ||||
$viewer); | $viewer); | ||||
if ($this->rangeEnd) { | if ($this->rangeEnd) { | ||||
▲ Show 20 Lines • Show All 158 Lines • Show Last 20 Lines |