From abeeadd6b01318150ae3c1e0c158addcf74e2345 Mon Sep 17 00:00:00 2001 From: Andre Klapper Date: Wed, 19 Feb 2025 11:14:48 +0100 Subject: [PATCH] Check that min epoch < max epoch in PhabricatorFeedQuery::withEpochInRange() Summary: `PhabricatorFeedQuery::withEpochInRange()` returns zero results when passing parameters in the wrong order. Instead return a PhutilArgumentUsageException which makes it clear why there are no results. Test Plan: On an early morning without coffee supply, write custom code like ``` $query = id(new PhabricatorFeedQuery()) ->setViewer(PhabricatorUser::getOmnipotentUser()) ->withFilterPHIDs(array($user->getPHID())) ->withEpochInRange(time(), time() - 86400) ->setReturnPartialResultsOnOverheat(true); $stories = $query->execute(); ``` and wonder why you get zero results. Optionally, feel stupid for a moment. Apply patch, now get an "Unhandled Exception ("PhutilArgumentUsageException") - Minimum range must be lower than maximum range." Reviewers: O1 Blessed Committers, valerio.bozzolan Reviewed By: O1 Blessed Committers, valerio.bozzolan Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno Differential Revision: https://we.phorge.it/D25891 --- src/applications/feed/query/PhabricatorFeedQuery.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/applications/feed/query/PhabricatorFeedQuery.php b/src/applications/feed/query/PhabricatorFeedQuery.php index 51d0d1544a..a680e43913 100644 --- a/src/applications/feed/query/PhabricatorFeedQuery.php +++ b/src/applications/feed/query/PhabricatorFeedQuery.php @@ -18,7 +18,15 @@ final class PhabricatorFeedQuery return $this; } + /** + * @param int|null $range_min Minimum epoch value of feed stories + * @param int|null $range_max Maximum epoch value of feed stories + */ public function withEpochInRange($range_min, $range_max) { + if ($range_min && $range_max && $range_min > $range_max) { + throw new PhutilArgumentUsageException( + pht('Feed query minimum range must be lower than maximum range.')); + } $this->rangeMin = $range_min; $this->rangeMax = $range_max; return $this;