diff --git a/Classes/Domain/Model/AbstractJsonSerializableEntity.php b/Classes/Domain/Model/AbstractJsonSerializableEntity.php index da2c889..de43826 100644 --- a/Classes/Domain/Model/AbstractJsonSerializableEntity.php +++ b/Classes/Domain/Model/AbstractJsonSerializableEntity.php @@ -77,7 +77,7 @@ public function getProcessedProperties(array $properties): array $result[$field] = [ 'label' => $property->getLabel(), - 'value' => $valueOverrides[$value] ?? $prefix . $value . $suffix, + 'value' => $valueOverrides[strval($value)] ?? $prefix . $value . $suffix, ]; return $result; }, []); diff --git a/Classes/Service/DatabaseService.php b/Classes/Service/DatabaseService.php index 25aa545..f49a6b3 100644 --- a/Classes/Service/DatabaseService.php +++ b/Classes/Service/DatabaseService.php @@ -54,6 +54,25 @@ public function getFlexFormByContentElementUid(int $uid): array ); } + public function getFieldByPageUidAndCType(string $field, int $pageUid, string $cType): mixed + { + $queryBuilder = $this->getQueryBuilder('tt_content'); + return $this->getField( + $field, + $queryBuilder, + $queryBuilder->expr()->and( + $queryBuilder->expr()->eq( + 'pid', + $queryBuilder->createNamedParameter($pageUid, Connection::PARAM_INT) + ), + $queryBuilder->expr()->eq( + 'CType', + $queryBuilder->createNamedParameter($cType) + ) + ) + ); + } + public function getFlexFormByPageUidAndCType(int $pageUid, string $cType): array { $queryBuilder = $this->getQueryBuilder('tt_content'); @@ -196,15 +215,20 @@ public function getAvailableFieldValues( } private function getFlexForm(QueryBuilder $queryBuilder, CompositeExpression|string ...$predicates): array + { + $row = $this->getField('pi_flexform', $queryBuilder, ...$predicates); + return $row ? $this->flexFormService->convertFlexFormContentToArray($row) : []; + } + + private function getField(string $field, QueryBuilder $queryBuilder, CompositeExpression|string ...$predicates): mixed { $result = $queryBuilder - ->select('pi_flexform') + ->select($field) ->from('tt_content') ->where(...$predicates) ->executeQuery(); - $row = $result->fetchOne(); - return $row ? $this->flexFormService->convertFlexFormContentToArray($row) : []; + return $result->fetchOne(); } private function getPageConstraint(QueryBuilder $queryBuilder, string $tableName, array $pageIds): string