diff --git a/src/Element/ElementHelper.php b/src/Element/ElementHelper.php index 414af776c70..64f0bf1ada8 100644 --- a/src/Element/ElementHelper.php +++ b/src/Element/ElementHelper.php @@ -279,8 +279,8 @@ public static function siteStatusesForElement(ElementInterface $element, bool $e ->status(null) ->trashed(null) ->asArray() - ->select(['siteId', 'enabled']) - ->pluck('enabled', 'siteId') + ->select(['siteId', 'elements_sites.enabled as enabledForSite']) + ->pluck('enabledForSite', 'siteId') ->map(fn ($enabled) => (bool) $enabled) ->all(); } diff --git a/tests/Feature/Element/ElementHelperTest.php b/tests/Feature/Element/ElementHelperTest.php index b975f97ae16..d528b5b011d 100644 --- a/tests/Feature/Element/ElementHelperTest.php +++ b/tests/Feature/Element/ElementHelperTest.php @@ -140,6 +140,25 @@ function createElementHelperElement(array $attributes = []): TestFeatureElementH expect(ElementHelper::siteStatusesForElement($entry))->each->toBeTrue(); }); +test('returns each site status for a saved element', function () { + $primarySite = Site::firstOrFail(); + $secondarySite = Site::factory()->create(); + $entry = Entry::factory() + ->forSection(Section::factory()->withSites($secondarySite)->create()) + ->createElement(); + + $entry->setEnabledForSite([ + $primarySite->id => true, + $secondarySite->id => false, + ]); + Elements::saveElement($entry); + + $statuses = ElementHelper::siteStatusesForElement($entry); + + expect($statuses[$primarySite->id])->toBeTrue() + ->and($statuses[$secondarySite->id])->toBeFalse(); +}); + test('detects drafts revisions and outdated derivatives', function () { $entry = Entry::factory()->createElement(); $draft = app(Drafts::class)->createDraft($entry);