Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
5 changes: 5 additions & 0 deletions bundle/Resources/config/services/page/visitors.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

declare(strict_types=1);

namespace Netgen\OpenApiIbexa\OpenApi\SchemaProvider\Ibexa\FieldValue;

use Netgen\OpenApi\Model\Schema;

final class MatrixFieldValueSchemaProvider implements FieldValueSchemaProviderInterface
{
public function provideFieldValueSchema(): Schema
{
return new Schema\ArraySchema(
new Schema\ObjectSchema(
[
'type' => new Schema\StringSchema(),
'value' => new Schema\StringSchema(),
],
null,
['type', 'value'],
),
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

declare(strict_types=1);

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;

use function array_map;
use function iterator_to_array;

/**
* @implements \Netgen\OpenApiIbexa\Page\Output\VisitorInterface<\Ibexa\FieldTypeMatrix\FieldType\Value>
*/
final class MatrixFieldValueVisitor implements VisitorInterface
{
public function accept(object $value): bool
{
return $value instanceof MatrixValue;
}

/**
* @return array<int, array<string, string>>
*/
public function visit(object $value, OutputVisitor $outputVisitor, array $parameters = []): array
{
return array_map(
static fn (Row $row): array => $row->getCells(),
iterator_to_array($value->getRows()),
);
}
}
1 change: 1 addition & 0 deletions phpstan.neon
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ 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#'