diff --git a/eZ/Publish/Core/Persistence/Legacy/Content/Handler.php b/eZ/Publish/Core/Persistence/Legacy/Content/Handler.php index 0fb6e39a2b..f045281f00 100644 --- a/eZ/Publish/Core/Persistence/Legacy/Content/Handler.php +++ b/eZ/Publish/Core/Persistence/Legacy/Content/Handler.php @@ -320,7 +320,9 @@ public function load($id, $version = null, array $translations = null) $this->contentGateway->loadVersionedNameData([[ 'id' => $id, 'version' => $rows[0]['ezcontentobject_version_version'], - ]]) + ]]), + 'ezcontentobject_', + $translations ); $content = $contentObjects[0]; unset($rows, $contentObjects); @@ -371,7 +373,9 @@ public function loadContentList(array $contentIds, array $translations = null): try { $contentList = $this->mapper->extractContentFromRows( $contentItemsRow, - $contentItemNameData[$contentId] + $contentItemNameData[$contentId], + 'ezcontentobject_', + $translations ); $contentItems[$contentId] = $contentList[0]; } catch (Exception $e) { diff --git a/eZ/Publish/Core/Persistence/Legacy/Content/Mapper.php b/eZ/Publish/Core/Persistence/Legacy/Content/Mapper.php index 1f30da460c..6a357afe69 100644 --- a/eZ/Publish/Core/Persistence/Legacy/Content/Mapper.php +++ b/eZ/Publish/Core/Persistence/Legacy/Content/Mapper.php @@ -220,6 +220,7 @@ public function convertToStorageValue(Field $field) * @param array> $rows * @param array> $nameRows * @param string $prefix + * @param array|null $translations * * @return \eZ\Publish\SPI\Persistence\Content[] * @@ -228,7 +229,8 @@ public function convertToStorageValue(Field $field) public function extractContentFromRows( array $rows, array $nameRows, - string $prefix = 'ezcontentobject_' + string $prefix = 'ezcontentobject_', + ?array $translations = null ): array { $versionedNameData = []; @@ -245,7 +247,8 @@ public function extractContentFromRows( $fieldDefinitions = $this->loadCachedVersionFieldDefinitionsPerLanguage( $rows, - $prefix + $prefix, + $translations ); foreach ($rows as $row) { @@ -348,7 +351,8 @@ private function buildContentObjects( */ private function loadCachedVersionFieldDefinitionsPerLanguage( array $rows, - string $prefix + string $prefix, + ?array $translations = null ): array { $fieldDefinitions = []; $contentTypes = []; @@ -364,7 +368,8 @@ private function loadCachedVersionFieldDefinitionsPerLanguage( continue; } - $languageCodes = $this->extractLanguageCodesFromMask($languageMask, $allLanguages); + $allLanguagesCodes = $this->extractLanguageCodesFromMask($languageMask, $allLanguages); + $languageCodes = empty($translations) ? $allLanguagesCodes : array_intersect($translations, $allLanguagesCodes); $contentTypes[$contentTypeId] = $contentTypes[$contentTypeId] ?? $this->contentTypeHandler->load($contentTypeId); $contentType = $contentTypes[$contentTypeId]; foreach ($contentType->fieldDefinitions as $fieldDefinition) {