From 42bcc77036aec98b211cdd2eb4d7006e51fee6e2 Mon Sep 17 00:00:00 2001 From: Jakov Knezovic Date: Fri, 25 Jul 2025 10:43:31 +0200 Subject: [PATCH 1/8] PROSTORIA-534 add matrix field schema provider --- .../ibexa/field_value_schema_providers.yaml | 5 ++++ .../MatrixFieldValueSchemaProvider.php | 23 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 lib/OpenApi/SchemaProvider/Ibexa/FieldValue/MatrixFieldValueSchemaProvider.php diff --git a/bundle/Resources/config/services/openapi/ibexa/field_value_schema_providers.yaml b/bundle/Resources/config/services/openapi/ibexa/field_value_schema_providers.yaml index 2db79cc..a8fe2f1 100644 --- a/bundle/Resources/config/services/openapi/ibexa/field_value_schema_providers.yaml +++ b/bundle/Resources/config/services/openapi/ibexa/field_value_schema_providers.yaml @@ -108,3 +108,8 @@ services: class: Netgen\OpenApiIbexa\OpenApi\SchemaProvider\Ibexa\FieldValue\UrlFieldValueSchemaProvider tags: - { name: netgen.openapi_ibexa.ibexa.field_value_schema_provider, identifier: ezurl } + + netgen.openapi_ibexa.ibexa.field_value_schema_provider.matrix: + class: Netgen\OpenApiIbexa\OpenApi\SchemaProvider\Ibexa\FieldValue\MatrixFieldValueSchemaProvider + tags: + - { name: netgen.openapi_ibexa.ibexa.field_value_schema_provider, identifier: ezmatrix } \ No newline at end of file diff --git a/lib/OpenApi/SchemaProvider/Ibexa/FieldValue/MatrixFieldValueSchemaProvider.php b/lib/OpenApi/SchemaProvider/Ibexa/FieldValue/MatrixFieldValueSchemaProvider.php new file mode 100644 index 0000000..fb0d46a --- /dev/null +++ b/lib/OpenApi/SchemaProvider/Ibexa/FieldValue/MatrixFieldValueSchemaProvider.php @@ -0,0 +1,23 @@ + new Schema\StringSchema(), + 'value' => new Schema\StringSchema(), + ], + required: ['type', 'value'], + ), + ); + } +} From d3f8a6d9bf87d5e2f58101be5a5bf7e879f550fd Mon Sep 17 00:00:00 2001 From: Jakov Knezovic Date: Fri, 25 Jul 2025 10:43:46 +0200 Subject: [PATCH 2/8] PROSTORIA-534 add matrix field value visitor --- .../config/services/page/visitors.yaml | 5 +++ .../MatrixFieldValueVisitor.php | 31 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php diff --git a/bundle/Resources/config/services/page/visitors.yaml b/bundle/Resources/config/services/page/visitors.yaml index bc1a1e0..e790b64 100644 --- a/bundle/Resources/config/services/page/visitors.yaml +++ b/bundle/Resources/config/services/page/visitors.yaml @@ -191,3 +191,8 @@ services: class: Netgen\OpenApiIbexa\Page\Output\Visitor\IbexaFieldValue\UrlFieldValueVisitor tags: - { name: netgen.openapi_ibexa.page.output.visitor } + + netgen.openapi_ibexa.page.output.visitor.ibexa_field_value.matrix: + class: Netgen\OpenApiIbexa\Page\Output\Visitor\IbexaFieldValue\MatrixFieldValueVisitor + tags: + - { name: netgen.openapi_ibexa.page.output.visitor } diff --git a/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php b/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php new file mode 100644 index 0000000..5043d5f --- /dev/null +++ b/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php @@ -0,0 +1,31 @@ + + */ +final class MatrixFieldValueVisitor implements VisitorInterface +{ + public function accept(object $value): bool + { + return $value instanceof MatrixValue; + } + + public function visit(object $value, OutputVisitor $outputVisitor, array $parameters = []): array + { + return array_map( + static fn ($row) => $row->getCells(), + iterator_to_array($value->getRows()), + ); + } +} From 8a9fba3acf95aab102ad55ba68da67bfe9676c49 Mon Sep 17 00:00:00 2001 From: Jakov Knezovic Date: Fri, 25 Jul 2025 12:44:59 +0200 Subject: [PATCH 3/8] PROSTORIA-534 add missing empty line --- .../services/openapi/ibexa/field_value_schema_providers.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundle/Resources/config/services/openapi/ibexa/field_value_schema_providers.yaml b/bundle/Resources/config/services/openapi/ibexa/field_value_schema_providers.yaml index a8fe2f1..cf56653 100644 --- a/bundle/Resources/config/services/openapi/ibexa/field_value_schema_providers.yaml +++ b/bundle/Resources/config/services/openapi/ibexa/field_value_schema_providers.yaml @@ -112,4 +112,4 @@ services: netgen.openapi_ibexa.ibexa.field_value_schema_provider.matrix: class: Netgen\OpenApiIbexa\OpenApi\SchemaProvider\Ibexa\FieldValue\MatrixFieldValueSchemaProvider tags: - - { name: netgen.openapi_ibexa.ibexa.field_value_schema_provider, identifier: ezmatrix } \ No newline at end of file + - { name: netgen.openapi_ibexa.ibexa.field_value_schema_provider, identifier: ezmatrix } From c84f0a4e32a79d950ccd18991d8943ed9d6231a4 Mon Sep 17 00:00:00 2001 From: Jakov Knezovic Date: Fri, 25 Jul 2025 12:48:30 +0200 Subject: [PATCH 4/8] PROSTORIA-534 avoid using named parameters for code consistency --- .../Ibexa/FieldValue/MatrixFieldValueSchemaProvider.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/OpenApi/SchemaProvider/Ibexa/FieldValue/MatrixFieldValueSchemaProvider.php b/lib/OpenApi/SchemaProvider/Ibexa/FieldValue/MatrixFieldValueSchemaProvider.php index fb0d46a..cc23d14 100644 --- a/lib/OpenApi/SchemaProvider/Ibexa/FieldValue/MatrixFieldValueSchemaProvider.php +++ b/lib/OpenApi/SchemaProvider/Ibexa/FieldValue/MatrixFieldValueSchemaProvider.php @@ -12,11 +12,12 @@ public function provideFieldValueSchema(): Schema { return new Schema\ArraySchema( new Schema\ObjectSchema( - properties: [ + [ 'type' => new Schema\StringSchema(), 'value' => new Schema\StringSchema(), ], - required: ['type', 'value'], + null, + ['type', 'value'], ), ); } From e39cd3ce1cf55db05205be34993808ddaba958c1 Mon Sep 17 00:00:00 2001 From: Jakov Knezovic Date: Fri, 25 Jul 2025 12:53:11 +0200 Subject: [PATCH 5/8] PROSTORIA-534 add return typehint for arrow function --- .../Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php b/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php index 5043d5f..51698f6 100644 --- a/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php +++ b/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php @@ -24,7 +24,7 @@ public function accept(object $value): bool public function visit(object $value, OutputVisitor $outputVisitor, array $parameters = []): array { return array_map( - static fn ($row) => $row->getCells(), + static fn ($row): array => $row->getCells(), iterator_to_array($value->getRows()), ); } From 8e45f0c805b3e1b1ccafd463866ed1fe9fcd0bd1 Mon Sep 17 00:00:00 2001 From: Jakov Knezovic Date: Fri, 25 Jul 2025 13:03:11 +0200 Subject: [PATCH 6/8] PROSTORIA-534 add typehint to arrow fn argument and add ignore errors for missing classes in neon --- .../Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php | 3 ++- phpstan.neon | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php b/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php index 51698f6..3bb8c37 100644 --- a/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php +++ b/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php @@ -5,6 +5,7 @@ namespace Netgen\OpenApiIbexa\Page\Output\Visitor\IbexaFieldValue; use Ibexa\FieldTypeMatrix\FieldType\Value as MatrixValue; +use Ibexa\FieldTypeMatrix\FieldType\Value\Row; use Netgen\OpenApiIbexa\Page\Output\OutputVisitor; use Netgen\OpenApiIbexa\Page\Output\VisitorInterface; @@ -24,7 +25,7 @@ public function accept(object $value): bool public function visit(object $value, OutputVisitor $outputVisitor, array $parameters = []): array { return array_map( - static fn ($row): array => $row->getCells(), + static fn (Row $row): array => $row->getCells(), iterator_to_array($value->getRows()), ); } diff --git a/phpstan.neon b/phpstan.neon index 4e89f91..c92dd9d 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -9,3 +9,5 @@ parameters: - '#Netgen\\TagsBundle\\Core\\FieldType\\Tags\\Value#' - '#Netgen\\Bundle\\EnhancedSelectionBundle\\Core\\FieldType\\EnhancedSelection\\Value#' - '#Netgen\\Bundle\\ContentTypeListBundle\\Core\\FieldType\\ContentTypeList\\Value#' + - '#Ibexa\\FieldTypeMatrix\\FieldType\\Value#' + - '#Ibexa\\FieldTypeMatrix\\FieldType\\Value\\Row#' From 837ec2f3c7bf9788fe19000e6e9fc2bbe79262b0 Mon Sep 17 00:00:00 2001 From: Jakov Knezovic Date: Fri, 25 Jul 2025 13:06:08 +0200 Subject: [PATCH 7/8] PROSTORIA-534 update php doc for return iterable type in visitor --- .../Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php | 2 ++ phpstan.neon | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php b/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php index 3bb8c37..00c41a6 100644 --- a/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php +++ b/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php @@ -14,6 +14,8 @@ /** * @implements \Netgen\OpenApiIbexa\Page\Output\VisitorInterface<\Ibexa\FieldTypeMatrix\FieldType\Value> + * + * @returns array> */ final class MatrixFieldValueVisitor implements VisitorInterface { diff --git a/phpstan.neon b/phpstan.neon index c92dd9d..ecc3d9d 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -10,4 +10,3 @@ parameters: - '#Netgen\\Bundle\\EnhancedSelectionBundle\\Core\\FieldType\\EnhancedSelection\\Value#' - '#Netgen\\Bundle\\ContentTypeListBundle\\Core\\FieldType\\ContentTypeList\\Value#' - '#Ibexa\\FieldTypeMatrix\\FieldType\\Value#' - - '#Ibexa\\FieldTypeMatrix\\FieldType\\Value\\Row#' From e8ce0c4176298d67dd30a6bfc2814d4f76097017 Mon Sep 17 00:00:00 2001 From: Jakov Knezovic Date: Fri, 25 Jul 2025 13:08:46 +0200 Subject: [PATCH 8/8] PROSTORIA-534 move return type doc claim to visit method, added to class by mistake --- .../Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php b/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php index 00c41a6..78ed02c 100644 --- a/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php +++ b/lib/Page/Output/Visitor/IbexaFieldValue/MatrixFieldValueVisitor.php @@ -14,8 +14,6 @@ /** * @implements \Netgen\OpenApiIbexa\Page\Output\VisitorInterface<\Ibexa\FieldTypeMatrix\FieldType\Value> - * - * @returns array> */ final class MatrixFieldValueVisitor implements VisitorInterface { @@ -24,6 +22,9 @@ public function accept(object $value): bool return $value instanceof MatrixValue; } + /** + * @return array> + */ public function visit(object $value, OutputVisitor $outputVisitor, array $parameters = []): array { return array_map(