Page MenuHomePhabricator

D13141.diff
No OneTemporary

D13141.diff

diff --git a/src/applications/calendar/query/PhabricatorCalendarEventQuery.php b/src/applications/calendar/query/PhabricatorCalendarEventQuery.php
--- a/src/applications/calendar/query/PhabricatorCalendarEventQuery.php
+++ b/src/applications/calendar/query/PhabricatorCalendarEventQuery.php
@@ -110,8 +110,7 @@
return $events;
}
- $map = array();
- $instance_sequence_pairs = array();
+ $enforced_end = null;
foreach ($events as $key => $event) {
$sequence_start = 0;
@@ -159,6 +158,12 @@
$end = $event->getRecurrenceEndDate();
} else if ($this->rangeEnd) {
$end = $this->rangeEnd;
+ } else if ($enforced_end) {
+ if ($end) {
+ $end = min($end, $enforced_end);
+ } else {
+ $end = $enforced_end;
+ }
}
if ($end) {
@@ -167,6 +172,9 @@
$sequence_end++;
$datetime->modify($modify_key);
$date = $datetime->format('U');
+ if ($sequence_end > $this->getRawResultLimit() + $sequence_start) {
+ break;
+ }
}
} else {
$sequence_end = $this->getRawResultLimit() + $sequence_start;
@@ -175,15 +183,28 @@
$sequence_start = max(1, $sequence_start);
for ($index = $sequence_start; $index < $sequence_end; $index++) {
- $instance_sequence_pairs[] = array($event->getPHID(), $index);
$events[] = $event->generateNthGhost($index, $viewer);
+ }
- $last_key = last_key($events);
- $map[$event->getPHID()][$index] = $last_key;
+ if (count($events) >= $this->getRawResultLimit()) {
+ $events = msort($events, 'getDateFrom');
+ $events = array_slice($events, 0, $this->getRawResultLimit(), true);
+ $enforced_end = last($events)->getDateFrom();
}
}
}
+ $map = array();
+ $instance_sequence_pairs = array();
+
+ foreach ($events as $key => $event) {
+ if ($event->getIsGhostEvent()) {
+ $index = $event->getSequenceIndex();
+ $instance_sequence_pairs[] = array($event->getPHID(), $index);
+ $map[$event->getPHID()][$index] = $key;
+ }
+ }
+
if (count($instance_sequence_pairs) > 0) {
$sub_query = id(new PhabricatorCalendarEventQuery())
->setViewer($viewer)

File Metadata

Mime Type
text/plain
Expires
Fri, Sep 20, 12:19 PM (16 h, 5 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6621625
Default Alt Text
D13141.diff (2 KB)

Event Timeline