From 45a4911c534aa4dab2afa802d1fcefc74809dee0 Mon Sep 17 00:00:00 2001 From: Mario Vercellotti Date: Tue, 16 Jan 2024 08:47:03 +0200 Subject: [PATCH] drupal-graphql#1322: Fix fatal error when attempting to load an entity for a language the entity is not translated into. This same pattern happens in three plugins, this fixes in all of them. --- src/Plugin/GraphQL/DataProducer/Entity/EntityLoad.php | 3 +++ src/Plugin/GraphQL/DataProducer/Entity/EntityLoadByUuid.php | 3 +++ src/Plugin/GraphQL/DataProducer/Routing/RouteEntity.php | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/Plugin/GraphQL/DataProducer/Entity/EntityLoad.php b/src/Plugin/GraphQL/DataProducer/Entity/EntityLoad.php index 867a28c6c..793861c6a 100644 --- a/src/Plugin/GraphQL/DataProducer/Entity/EntityLoad.php +++ b/src/Plugin/GraphQL/DataProducer/Entity/EntityLoad.php @@ -172,6 +172,9 @@ public function resolve($type, $id, ?string $language, ?array $bundles, ?bool $a // Get the correct translation. if (isset($language) && $language !== $entity->language()->getId() && $entity instanceof TranslatableInterface) { + if (!$entity->hasTranslation($language)) { + return NULL; + } $entity = $entity->getTranslation($language); $entity->addCacheContexts(["static:language:{$language}"]); } diff --git a/src/Plugin/GraphQL/DataProducer/Entity/EntityLoadByUuid.php b/src/Plugin/GraphQL/DataProducer/Entity/EntityLoadByUuid.php index 10e2d4050..c64a945af 100644 --- a/src/Plugin/GraphQL/DataProducer/Entity/EntityLoadByUuid.php +++ b/src/Plugin/GraphQL/DataProducer/Entity/EntityLoadByUuid.php @@ -165,6 +165,9 @@ public function resolve($type, $uuid, ?string $language, ?array $bundles, ?bool // Get the correct translation. if (isset($language) && $language != $entity->language()->getId() && $entity instanceof TranslatableInterface) { + if (!$entity->hasTranslation($language)) { + return NULL; + } $entity = $entity->getTranslation($language); $entity->addCacheContexts(["static:language:{$language}"]); } diff --git a/src/Plugin/GraphQL/DataProducer/Routing/RouteEntity.php b/src/Plugin/GraphQL/DataProducer/Routing/RouteEntity.php index 10ea4e607..1fc086038 100644 --- a/src/Plugin/GraphQL/DataProducer/Routing/RouteEntity.php +++ b/src/Plugin/GraphQL/DataProducer/Routing/RouteEntity.php @@ -126,6 +126,9 @@ public function resolve($url, ?string $language, FieldContext $context): ?Deferr // Get the correct translation. if (isset($language) && $language != $entity->language()->getId() && $entity instanceof TranslatableInterface) { + if (!$entity->hasTranslation($language)) { + return NULL; + } $entity = $entity->getTranslation($language); $entity->addCacheContexts(["static:language:{$language}"]); }