Skip to content

Commit c0d9404

Browse files
committed
Fix collection badges
Closes #13341
1 parent 3d3dfbe commit c0d9404

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

src/Stache/Query/QueriesEntryStatus.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,18 @@ private function addCollectionStatusLogicToQuery($query, $status, $collection):
4545
return;
4646
}
4747

48+
if ($status === 'scheduled' && $collection->futureDateBehavior() !== 'private') {
49+
$query->where('date', 'invalid'); // intentionally trigger no results.
50+
51+
return;
52+
}
53+
54+
if ($status === 'expired' && $collection->pastDateBehavior() !== 'private') {
55+
$query->where('date', 'invalid'); // intentionally trigger no results.
56+
57+
return;
58+
}
59+
4860
if ($collection->futureDateBehavior() === 'private') {
4961
$status === 'scheduled'
5062
? $query->where('date', '>', now())

tests/Data/Entries/EntryQueryBuilderTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1215,6 +1215,18 @@ public function it_filters_by_status($status, $expected)
12151215
EntryFactory::collection('calendar')->id('calendar-past')->published(true)->date(now()->subDay())->create();
12161216
EntryFactory::collection('calendar')->id('calendar-past-draft')->published(false)->date(now()->subDay())->create();
12171217

1218+
Collection::make('news')->dated(true)->futureDateBehavior('unlisted')->pastDateBehavior('public')->save();
1219+
EntryFactory::collection('news')->id('news-future')->published(true)->date(now()->addDay())->create();
1220+
EntryFactory::collection('news')->id('news-future-draft')->published(false)->date(now()->addDay())->create();
1221+
EntryFactory::collection('news')->id('news-past')->published(true)->date(now()->subDay())->create();
1222+
EntryFactory::collection('news')->id('news-past-draft')->published(false)->date(now()->subDay())->create();
1223+
1224+
Collection::make('alerts')->dated(true)->futureDateBehavior('public')->pastDateBehavior('unlisted')->save();
1225+
EntryFactory::collection('alerts')->id('alerts-future')->published(true)->date(now()->addDay())->create();
1226+
EntryFactory::collection('alerts')->id('alerts-future-draft')->published(false)->date(now()->addDay())->create();
1227+
EntryFactory::collection('alerts')->id('alerts-past')->published(true)->date(now()->subDay())->create();
1228+
EntryFactory::collection('alerts')->id('alerts-past-draft')->published(false)->date(now()->subDay())->create();
1229+
12181230
// Undated, but with customized date behavior. Nonsensical situation, but it can happen.
12191231
// See https://github.com/statamic/eloquent-driver/issues/288
12201232
Collection::make('undated')->dated(false)->futureDateBehavior('private')->pastDateBehavior('private')->save();
@@ -1235,6 +1247,10 @@ public static function filterByStatusProvider()
12351247
'event-past-draft',
12361248
'calendar-future-draft',
12371249
'calendar-past-draft',
1250+
'news-future-draft',
1251+
'news-past-draft',
1252+
'alerts-future-draft',
1253+
'alerts-past-draft',
12381254
'undated-draft',
12391255
]],
12401256
'published' => ['published', [
@@ -1243,6 +1259,10 @@ public static function filterByStatusProvider()
12431259
'event-future',
12441260
'calendar-future',
12451261
'calendar-past',
1262+
'news-future',
1263+
'news-past',
1264+
'alerts-future',
1265+
'alerts-past',
12461266
'undated',
12471267
]],
12481268
'scheduled' => ['scheduled', [

0 commit comments

Comments
 (0)