mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-21 04:50:55 +01:00
Restricting query to return the displayed range
Summary: Ref T4393, Refactoring calendar query logic to only return at most what the query dates have specified Test Plan: Query Calendar events for range May 1 - indefinite in month view, see events, scroll back to April, events should be absent, because April is out of range. Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: Korvin, epriestley Maniphest Tasks: T4393 Differential Revision: https://secure.phabricator.com/D12728
This commit is contained in:
parent
7c063c7d63
commit
88ef32f61c
1 changed files with 21 additions and 21 deletions
|
@ -52,35 +52,35 @@ final class PhabricatorCalendarEventSearchEngine
|
|||
public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) {
|
||||
$query = id(new PhabricatorCalendarEventQuery());
|
||||
$viewer = $this->requireViewer();
|
||||
$timezone = new DateTimeZone($viewer->getTimezoneIdentifier());
|
||||
|
||||
$min_range = $this->getDateFrom($saved)->getEpoch();
|
||||
$max_range = $this->getDateTo($saved)->getEpoch();
|
||||
|
||||
if ($saved->getParameter('display') == 'month') {
|
||||
list($start_year, $start_month) =
|
||||
if ($saved->getParameter('display') == 'month' ||
|
||||
$saved->getParameter('display') == 'day') {
|
||||
list($start_year, $start_month, $start_day) =
|
||||
$this->getDisplayYearAndMonthAndDay($saved);
|
||||
$start_day = 1;
|
||||
|
||||
$end_year = ($start_month == 12) ? $start_year + 1 : $start_year;
|
||||
$end_month = ($start_month == 12) ? 1 : $start_month + 1;
|
||||
$end_day = 1;
|
||||
$start_day = new DateTime(
|
||||
"{$start_year}-{$start_month}-{$start_day}",
|
||||
$timezone);
|
||||
$next = clone $start_day;
|
||||
|
||||
$calendar_start = AphrontFormDateControlValue::newFromParts(
|
||||
$viewer,
|
||||
$start_year,
|
||||
$start_month,
|
||||
$start_day)->getEpoch();
|
||||
$calendar_end = AphrontFormDateControlValue::newFromParts(
|
||||
$viewer,
|
||||
$end_year,
|
||||
$end_month,
|
||||
$end_day)->getEpoch();
|
||||
|
||||
if (!$min_range || ($min_range < $calendar_start)) {
|
||||
$min_range = $calendar_start;
|
||||
if ($saved->getParameter('display') == 'month') {
|
||||
$next->modify('+1 month');
|
||||
} else if ($saved->getParameter('display') == 'day') {
|
||||
$next->modify('+1 day');
|
||||
}
|
||||
if (!$max_range || ($max_range > $calendar_end)) {
|
||||
$max_range = $calendar_end;
|
||||
|
||||
$display_start = $start_day->format('U');
|
||||
$display_end = $next->format('U');
|
||||
|
||||
if (!$min_range || ($min_range < $display_start)) {
|
||||
$min_range = $display_start;
|
||||
}
|
||||
if (!$max_range || ($max_range > $display_end)) {
|
||||
$max_range = $display_end;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue