From ff0da1541b8375c2e3f7b257249e78e5182eb787 Mon Sep 17 00:00:00 2001 From: wakqasahmed Date: Sat, 3 Oct 2026 17:50:17 +0200 Subject: [PATCH] Fix scheduled and expired entry status queries when both date behaviors are private --- src/Stache/Query/QueriesEntryStatus.php | 8 -------- tests/Data/Entries/EntryQueryBuilderTest.php | 10 ++++++++++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/Stache/Query/QueriesEntryStatus.php b/src/Stache/Query/QueriesEntryStatus.php index ee02ce52cb4..d322579c401 100644 --- a/src/Stache/Query/QueriesEntryStatus.php +++ b/src/Stache/Query/QueriesEntryStatus.php @@ -61,20 +61,12 @@ private function addCollectionStatusLogicToQuery($query, $status, $collection): $status === 'scheduled' ? $query->where('date', '>', now()) : $query->where('date', '<', now()); - - if ($status === 'expired') { - $query->where('date', 'invalid'); // intentionally trigger no results. - } } if ($collection->pastDateBehavior() === 'private') { $status === 'expired' ? $query->where('date', '<', now()) : $query->where('date', '>', now()); - - if ($status === 'scheduled') { - $query->where('date', 'invalid'); // intentionally trigger no results. - } } } diff --git a/tests/Data/Entries/EntryQueryBuilderTest.php b/tests/Data/Entries/EntryQueryBuilderTest.php index 3aed8cda03e..a86f95aa6a9 100644 --- a/tests/Data/Entries/EntryQueryBuilderTest.php +++ b/tests/Data/Entries/EntryQueryBuilderTest.php @@ -1328,6 +1328,12 @@ public function it_filters_by_status($status, $expected) EntryFactory::collection('alerts')->id('alerts-past')->published(true)->date(now()->subDay())->create(); EntryFactory::collection('alerts')->id('alerts-past-draft')->published(false)->date(now()->subDay())->create(); + Collection::make('promos')->dated(true)->futureDateBehavior('private')->pastDateBehavior('private')->save(); + EntryFactory::collection('promos')->id('promo-future')->published(true)->date(now()->addDay())->create(); + EntryFactory::collection('promos')->id('promo-future-draft')->published(false)->date(now()->addDay())->create(); + EntryFactory::collection('promos')->id('promo-past')->published(true)->date(now()->subDay())->create(); + EntryFactory::collection('promos')->id('promo-past-draft')->published(false)->date(now()->subDay())->create(); + // Undated, but with customized date behavior. Nonsensical situation, but it can happen. // See https://github.com/statamic/eloquent-driver/issues/288 Collection::make('undated')->dated(false)->futureDateBehavior('private')->pastDateBehavior('private')->save(); @@ -1352,6 +1358,8 @@ public static function filterByStatusProvider() 'news-past-draft', 'alerts-future-draft', 'alerts-past-draft', + 'promo-future-draft', + 'promo-past-draft', 'undated-draft', ]], 'published' => ['published', [ @@ -1368,9 +1376,11 @@ public static function filterByStatusProvider() ]], 'scheduled' => ['scheduled', [ 'blog-future', + 'promo-future', ]], 'expired' => ['expired', [ 'event-past', + 'promo-past', ]], ]; }