From cb6e293cba6863ec933f708bdef06ed13ffca6bb Mon Sep 17 00:00:00 2001 From: pawelpawlik Date: Mon, 2 Feb 2026 09:30:43 +0100 Subject: [PATCH 1/3] IBX-10289 Removed aggregations from getImageConfig() when content type has no matching field definition --- src/lib/UI/Config/Provider/Module/DamWidget.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib/UI/Config/Provider/Module/DamWidget.php b/src/lib/UI/Config/Provider/Module/DamWidget.php index 40363e5712..5f75af5467 100644 --- a/src/lib/UI/Config/Provider/Module/DamWidget.php +++ b/src/lib/UI/Config/Provider/Module/DamWidget.php @@ -100,10 +100,17 @@ private function getImageConfig(): array { $imageConfig = [ 'showImageFilters' => $this->showImageFilters(), - 'aggregations' => $this->config['image']['aggregations'], 'enableMultipleDownload' => extension_loaded('zip'), ]; + // The content type may not have the default fields; in that case, don't add the aggregations + $imageType = $this->contentTypeService->loadContentTypeByIdentifier('image'); + foreach ($this->config['image']['aggregations'] as $aggregation) { + if ($imageType->hasFieldDefinition($aggregation['fieldDefinitionIdentifier'])) { + $imageConfig['aggregations'][] = $aggregation; + } + } + $mappings = []; $contentTypeIdentifiers = []; $fieldDefinitionIdentifiers = []; From 099b241d9bbee38b0c8d71591808fa548806a40a Mon Sep 17 00:00:00 2001 From: pawelpawlik Date: Tue, 10 Feb 2026 12:15:03 +0100 Subject: [PATCH 2/3] IBX-10289: using content type id instead of identifier --- src/lib/UI/Config/Provider/Module/DamWidget.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/UI/Config/Provider/Module/DamWidget.php b/src/lib/UI/Config/Provider/Module/DamWidget.php index 5f75af5467..a968cb650b 100644 --- a/src/lib/UI/Config/Provider/Module/DamWidget.php +++ b/src/lib/UI/Config/Provider/Module/DamWidget.php @@ -51,6 +51,8 @@ */ final class DamWidget implements ProviderInterface { + private const IMAGE_TYPE_ID = 5; + /** @phpstan-var TConfig */ private array $config; @@ -104,7 +106,7 @@ private function getImageConfig(): array ]; // The content type may not have the default fields; in that case, don't add the aggregations - $imageType = $this->contentTypeService->loadContentTypeByIdentifier('image'); + $imageType = $this->contentTypeService->loadContentType(self::IMAGE_TYPE_ID); foreach ($this->config['image']['aggregations'] as $aggregation) { if ($imageType->hasFieldDefinition($aggregation['fieldDefinitionIdentifier'])) { $imageConfig['aggregations'][] = $aggregation; From 0282d85df324c6cdb66e372aa1636c432f8c1b04 Mon Sep 17 00:00:00 2001 From: pawelpawlik Date: Tue, 10 Feb 2026 12:23:48 +0100 Subject: [PATCH 3/3] IBX-10289: updated tests --- src/lib/UI/Config/Provider/Module/DamWidget.php | 5 +++-- tests/lib/UI/Config/Provider/Module/DamWidgetTest.php | 11 +++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/lib/UI/Config/Provider/Module/DamWidget.php b/src/lib/UI/Config/Provider/Module/DamWidget.php index a968cb650b..b4375bfc46 100644 --- a/src/lib/UI/Config/Provider/Module/DamWidget.php +++ b/src/lib/UI/Config/Provider/Module/DamWidget.php @@ -102,14 +102,15 @@ private function getImageConfig(): array { $imageConfig = [ 'showImageFilters' => $this->showImageFilters(), + 'aggregations' => [], 'enableMultipleDownload' => extension_loaded('zip'), ]; // The content type may not have the default fields; in that case, don't add the aggregations $imageType = $this->contentTypeService->loadContentType(self::IMAGE_TYPE_ID); - foreach ($this->config['image']['aggregations'] as $aggregation) { + foreach ($this->config['image']['aggregations'] as $key => $aggregation) { if ($imageType->hasFieldDefinition($aggregation['fieldDefinitionIdentifier'])) { - $imageConfig['aggregations'][] = $aggregation; + $imageConfig['aggregations'][$key] = $aggregation; } } diff --git a/tests/lib/UI/Config/Provider/Module/DamWidgetTest.php b/tests/lib/UI/Config/Provider/Module/DamWidgetTest.php index 758261ebe9..69012fb338 100644 --- a/tests/lib/UI/Config/Provider/Module/DamWidgetTest.php +++ b/tests/lib/UI/Config/Provider/Module/DamWidgetTest.php @@ -137,6 +137,7 @@ public function testGetConfig( $this->mockRepositoryConfigurationProviderGetRepositoryConfig($repositoryConfig); $this->mockContentTypeServiceLoadContentTypeByIdentifier($loadContentTypeValueMap); $this->mockSchemaIdentifierExtractorExtract($extractSchemaIdentifiersValueMap); + $this->mockContentTypeServiceLoadContentType(); self::assertEquals( $expectedConfiguration, @@ -263,6 +264,16 @@ private function mockContentTypeServiceLoadContentTypeByIdentifier(array $valueM ->willReturnMap($valueMap); } + private function mockContentTypeServiceLoadContentType(): void + { + $contetnType = $this->createMock(ContentType::class); + $contetnType->method('hasFieldDefinition')->willReturn(true); + + $this->contentTypeService + ->method('loadContentType') + ->willReturn($contetnType); + } + /** * @param array}> $valueMap */