diff --git a/Classes/Service/ControllerService.php b/Classes/Service/ControllerService.php index 63ee14b..d672415 100644 --- a/Classes/Service/ControllerService.php +++ b/Classes/Service/ControllerService.php @@ -49,7 +49,7 @@ class ControllerService private string $filtersArgumentName; private bool $disableFilterCount; - /** @var Property[] $propertyOverrides */ + /** @var \Remind\Extbase\Service\Dto\Property[] $propertyOverrides */ private array $propertyOverrides; private Request $request; private FilterableRepository $repository; @@ -79,7 +79,7 @@ public function __construct( $cType = strtolower($this->extensionName . '_' . $this->pluginName); $this->tableName = PluginUtility::getTableName($cType); $this->disableFilterCount = PluginUtility::getDisableFilterCount($cType); - $this->propertyOverrides = $this->flexFormSheetsService->getPropertyOverrides($this->settings); + $this->propertyOverrides = $this->flexFormSheetsService->getPropertyOverrides($this->settings, $this->cObj->data['sys_language_uid']); } public function getFilterableList( diff --git a/Classes/Service/DatabaseService.php b/Classes/Service/DatabaseService.php index f49a6b3..ef004cb 100644 --- a/Classes/Service/DatabaseService.php +++ b/Classes/Service/DatabaseService.php @@ -42,14 +42,23 @@ public function getQueryBuilder(string $tableName): QueryBuilder return $queryBuilder; } - public function getFlexFormByContentElementUid(int $uid): array + public function getFlexFormByContentElementUid(int $uid, int $sysLanguageUid): array { $queryBuilder = $this->getQueryBuilder('tt_content'); return $this->getFlexForm( $queryBuilder, - $queryBuilder->expr()->eq( - 'uid', - $queryBuilder->createNamedParameter($uid, Connection::PARAM_INT) + $queryBuilder->expr()->and( + $queryBuilder->expr()->or( + $queryBuilder->expr()->eq( + 'uid', + $queryBuilder->createNamedParameter($uid, Connection::PARAM_INT) + ), + $queryBuilder->expr()->eq( + 'l18n_parent', + $queryBuilder->createNamedParameter($uid, Connection::PARAM_INT) + ), + ), + $this->getLanguageConstraint($queryBuilder, 'tt_content', $sysLanguageUid) ) ); } diff --git a/Classes/Service/FlexFormSheetsService.php b/Classes/Service/FlexFormSheetsService.php index added73..0fe6f4d 100644 --- a/Classes/Service/FlexFormSheetsService.php +++ b/Classes/Service/FlexFormSheetsService.php @@ -19,16 +19,16 @@ public function __construct() /** * @return Property[] */ - public function getPropertyOverrides(array $settings): array + public function getPropertyOverrides(array $settings, int $sysLanguageUid): array { - $propertyOverrides = $settings[PropertyOverrideSheets::OVERRIDES] ?? []; + $propertyOverrides = $settings[PropertyOverrideSheets::OVERRIDES] ? $settings[PropertyOverrideSheets::OVERRIDES] : []; - $contentElementId = $settings[PropertyOverrideSheets::REFERENCE] ?? null; + $contentElementId = $settings[PropertyOverrideSheets::REFERENCE] ? $settings[PropertyOverrideSheets::REFERENCE] : null; if ($contentElementId) { $propertyOverrides = []; - $flexForm = $this->databaseService->getFlexFormByContentElementUid((int) $contentElementId); + $flexForm = $this->databaseService->getFlexFormByContentElementUid((int) $contentElementId, $sysLanguageUid); if (!empty($flexForm)) { $propertyOverrides = $flexForm['settings'][PropertyOverrideSheets::OVERRIDES] ?? [];