Page MenuHomePhabricator

D13141.id31740.diff
No OneTemporary

D13141.id31740.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
@@ -112,6 +112,7 @@
$map = array();
$instance_sequence_pairs = array();
+ $enforced_end = null;
foreach ($events as $key => $event) {
$sequence_start = 0;
@@ -159,6 +160,8 @@
$end = $event->getRecurrenceEndDate();
} else if ($this->rangeEnd) {
$end = $this->rangeEnd;
+ } else {
+ $end = $enforced_end;
}
if ($end) {
@@ -167,20 +170,34 @@
$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;
}
+ $date_to = $end;
+
$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;
+ $date_to = $events[$last_key]->getDateTo();
}
+ $enforced_end = $date_to;
+ $events = msort($events, 'getDateFrom');
+ $events = array_slice($events, 0, 1000, true);
+ }
+ }
+
+ foreach ($events as $key => $event) {
+ if ($event->getIsGhostEvent()) {
+ $index = $event->getSequenceIndex();
+ $instance_sequence_pairs[] = array($event->getPHID(), $index);
+ $map[$event->getPHID()][$index] = $key;
}
}
@@ -213,6 +230,15 @@
return $events;
}
+ private function mergeAndTrim($first_list, $second_list, $size) {
+ foreach ($second_list as $item) {
+ $first_list[] = $item;
+ }
+ $events = msort($first_list, 'getPHID');
+ $events->setSize((int)$size);
+ return $events;
+ }
+
protected function buildJoinClauseParts(AphrontDatabaseConnection $conn_r) {
$parts = parent::buildJoinClauseParts($conn_r);
if ($this->inviteePHIDs !== null) {
diff --git a/src/applications/calendar/query/PhabricatorCalendarEventSearchEngine.php b/src/applications/calendar/query/PhabricatorCalendarEventSearchEngine.php
--- a/src/applications/calendar/query/PhabricatorCalendarEventSearchEngine.php
+++ b/src/applications/calendar/query/PhabricatorCalendarEventSearchEngine.php
@@ -462,6 +462,7 @@
}
public function getPageSize(PhabricatorSavedQuery $saved) {
+ return $saved->getParameter('limit', 1000);
if ($this->isMonthView($saved) || $this->isDayView($saved)) {
return $saved->getParameter('limit', 1000);
} else {

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 23, 2:29 PM (2 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7706144
Default Alt Text
D13141.id31740.diff (2 KB)

Event Timeline