From b5637ba86e0f0e0804f231f0e9a56538973b9860 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Thu, 22 Oct 2026 15:15:04 +0200 Subject: [PATCH] fix: hotels without a category no longer break product teasers 29 hotels have category 0, which has no label. The product teasers looked the label up unguarded, an "Undefined array key 0" warning: a 500 in DDEV (warnings are exceptions there), a logged warning in production. The teaser and the hotel serializer now use null for an unknown category, as SearchResultService and HotelDataService already do; TYPO3 10 ended up with null as well. Co-Authored-By: Claude Opus 5.5 --- packages/ep_products/Classes/Domain/Serialization/Hotel.php | 2 +- packages/ep_products/Classes/Service/ProductDataService.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ep_products/Classes/Domain/Serialization/Hotel.php b/packages/ep_products/Classes/Domain/Serialization/Hotel.php index 9de9509..5296649 100644 --- a/packages/ep_products/Classes/Domain/Serialization/Hotel.php +++ b/packages/ep_products/Classes/Domain/Serialization/Hotel.php @@ -44,7 +44,7 @@ class Hotel $hotel['@id'] = $entity->getUid(); $hotel['@code'] = $entity->getCode(); $hotel['name'] = $entity->getName(); - $hotel['category'] = \EP\EpProducts\Domain\Model\Hotel::$categoryLabels[$entity->getCategory()]; + $hotel['category'] = \EP\EpProducts\Domain\Model\Hotel::$categoryLabels[$entity->getCategory()] ?? null; $hotel['type'] = \EP\EpProducts\Domain\Model\Hotel::$typeLabels[$entity->getType()]; $hotel['description'] = SerializationUtility::sanitizeText($entity->getDescription()); $hotel['roomtypes'] = SerializationUtility::sanitizeText($entity->getRoomTypes()); diff --git a/packages/ep_products/Classes/Service/ProductDataService.php b/packages/ep_products/Classes/Service/ProductDataService.php index f8085cc..f0f5375 100644 --- a/packages/ep_products/Classes/Service/ProductDataService.php +++ b/packages/ep_products/Classes/Service/ProductDataService.php @@ -156,7 +156,7 @@ class ProductDataService implements SingletonInterface } if (!array_key_exists($row['hotelCategory'], $teaser['hotelCategories'])) { - $teaser['hotelCategories'][$row['hotelCategory']] = Hotel::$categoryLabels[$row['hotelCategory']]; + $teaser['hotelCategories'][$row['hotelCategory']] = Hotel::$categoryLabels[$row['hotelCategory']] ?? null; ksort($teaser['hotelCategories']); } }