diff --git a/composer.json b/composer.json
index 0cc5ebde4..c47322ce7 100644
--- a/composer.json
+++ b/composer.json
@@ -30,6 +30,7 @@
"symfony/http-foundation": "~6.4.0",
"symfony/http-kernel": "~6.4.0",
"symfony/runtime": "~6.4.0",
+ "symfony/serializer": "^6.4",
"symfony/twig-bundle": "~6.4.0",
"symfony/validator": "~6.4.0",
"symfony/var-dumper": "~6.4.0",
diff --git a/composer.lock b/composer.lock
index 1aa4fd8e0..cb89afcd4 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "5a0ce29694be2f21b7a2798e7cda0353",
+ "content-hash": "d66f57729ccabb8a65c35e3ab37caf49",
"packages": [
{
"name": "apereo/phpcas",
@@ -4608,6 +4608,104 @@
],
"time": "2023-10-18T09:43:34+00:00"
},
+ {
+ "name": "symfony/serializer",
+ "version": "v6.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/serializer.git",
+ "reference": "7ead272e62c9567df619ef3c49809bf934ddbc1f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/7ead272e62c9567df619ef3c49809bf934ddbc1f",
+ "reference": "7ead272e62c9567df619ef3c49809bf934ddbc1f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "conflict": {
+ "doctrine/annotations": "<1.12",
+ "phpdocumentor/reflection-docblock": "<3.2.2",
+ "phpdocumentor/type-resolver": "<1.4.0",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/property-access": "<5.4",
+ "symfony/property-info": "<5.4.24|>=6,<6.2.11",
+ "symfony/uid": "<5.4",
+ "symfony/validator": "<6.4",
+ "symfony/yaml": "<5.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^1.12|^2",
+ "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0",
+ "seld/jsonlint": "^1.10",
+ "symfony/cache": "^5.4|^6.0|^7.0",
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/error-handler": "^5.4|^6.0|^7.0",
+ "symfony/filesystem": "^5.4|^6.0|^7.0",
+ "symfony/form": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^5.4|^6.0|^7.0",
+ "symfony/http-kernel": "^5.4|^6.0|^7.0",
+ "symfony/messenger": "^5.4|^6.0|^7.0",
+ "symfony/mime": "^5.4|^6.0|^7.0",
+ "symfony/property-access": "^5.4|^6.0|^7.0",
+ "symfony/property-info": "^5.4.24|^6.2.11|^7.0",
+ "symfony/translation-contracts": "^2.5|^3",
+ "symfony/uid": "^5.4|^6.0|^7.0",
+ "symfony/validator": "^6.4|^7.0",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0",
+ "symfony/var-exporter": "^5.4|^6.0|^7.0",
+ "symfony/yaml": "^5.4|^6.0|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Serializer\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/serializer/tree/v6.4.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-12-01T14:54:37+00:00"
+ },
{
"name": "symfony/service-contracts",
"version": "v2.5.2",
diff --git a/lib/composer/autoload_classmap.php b/lib/composer/autoload_classmap.php
index 61a954f35..50966682a 100644
--- a/lib/composer/autoload_classmap.php
+++ b/lib/composer/autoload_classmap.php
@@ -400,10 +400,11 @@ return array(
'Combodo\\iTop\\DesignDocument' => $baseDir . '/core/designdocument.class.inc.php',
'Combodo\\iTop\\DesignElement' => $baseDir . '/core/designdocument.class.inc.php',
'Combodo\\iTop\\FormSDK\\Controller\\TestController' => $baseDir . '/sources/FormSDK/Controller/TestController.php',
- 'Combodo\\iTop\\FormSDK\\External\\TwigHelper' => $baseDir . '/sources/FormSDK/External/TwigHelper.php',
+ 'Combodo\\iTop\\FormSDK\\Dto\\ObjectSearchDto' => $baseDir . '/sources/FormSDK/Dto/ObjectSearchDto.php',
'Combodo\\iTop\\FormSDK\\Field\\Description\\FormFieldDescription' => $baseDir . '/sources/FormSDK/Field/Description/FormFieldDescription.php',
'Combodo\\iTop\\FormSDK\\Field\\Description\\FormFieldTypeEnumeration' => $baseDir . '/sources/FormSDK/Field/Description/FormFieldTypeEnumeration.php',
'Combodo\\iTop\\FormSDK\\Helper\\SelectHelper' => $baseDir . '/sources/FormSDK/Helper/SelectHelper.php',
+ 'Combodo\\iTop\\FormSDK\\Helper\\TwigHelper' => $baseDir . '/sources/FormSDK/Helper/TwigHelper.php',
'Combodo\\iTop\\FormSDK\\Service\\FactoryPlugin\\FormFactoryObjectPlugin' => $baseDir . '/sources/FormSDK/Service/FactoryPlugin/FormFactoryObjectPlugin.php',
'Combodo\\iTop\\FormSDK\\Service\\FactoryPlugin\\FormFactoryPluginInterface' => $baseDir . '/sources/FormSDK/Service/FactoryPlugin/FormFactoryPluginInterface.php',
'Combodo\\iTop\\FormSDK\\Service\\FormFactory' => $baseDir . '/sources/FormSDK/Service/FormFactory.php',
@@ -2978,6 +2979,138 @@ return array(
'Symfony\\Component\\Runtime\\Runner\\Symfony\\ResponseRunner' => $vendorDir . '/symfony/runtime/Runner/Symfony/ResponseRunner.php',
'Symfony\\Component\\Runtime\\RuntimeInterface' => $vendorDir . '/symfony/runtime/RuntimeInterface.php',
'Symfony\\Component\\Runtime\\SymfonyRuntime' => $vendorDir . '/symfony/runtime/SymfonyRuntime.php',
+ 'Symfony\\Component\\Serializer\\Annotation\\Context' => $vendorDir . '/symfony/serializer/Annotation/Context.php',
+ 'Symfony\\Component\\Serializer\\Annotation\\DiscriminatorMap' => $vendorDir . '/symfony/serializer/Annotation/DiscriminatorMap.php',
+ 'Symfony\\Component\\Serializer\\Annotation\\Groups' => $vendorDir . '/symfony/serializer/Annotation/Groups.php',
+ 'Symfony\\Component\\Serializer\\Annotation\\Ignore' => $vendorDir . '/symfony/serializer/Annotation/Ignore.php',
+ 'Symfony\\Component\\Serializer\\Annotation\\MaxDepth' => $vendorDir . '/symfony/serializer/Annotation/MaxDepth.php',
+ 'Symfony\\Component\\Serializer\\Annotation\\SerializedName' => $vendorDir . '/symfony/serializer/Annotation/SerializedName.php',
+ 'Symfony\\Component\\Serializer\\Annotation\\SerializedPath' => $vendorDir . '/symfony/serializer/Annotation/SerializedPath.php',
+ 'Symfony\\Component\\Serializer\\Attribute\\Context' => $vendorDir . '/symfony/serializer/Attribute/Context.php',
+ 'Symfony\\Component\\Serializer\\Attribute\\DiscriminatorMap' => $vendorDir . '/symfony/serializer/Attribute/DiscriminatorMap.php',
+ 'Symfony\\Component\\Serializer\\Attribute\\Groups' => $vendorDir . '/symfony/serializer/Attribute/Groups.php',
+ 'Symfony\\Component\\Serializer\\Attribute\\Ignore' => $vendorDir . '/symfony/serializer/Attribute/Ignore.php',
+ 'Symfony\\Component\\Serializer\\Attribute\\MaxDepth' => $vendorDir . '/symfony/serializer/Attribute/MaxDepth.php',
+ 'Symfony\\Component\\Serializer\\Attribute\\SerializedName' => $vendorDir . '/symfony/serializer/Attribute/SerializedName.php',
+ 'Symfony\\Component\\Serializer\\Attribute\\SerializedPath' => $vendorDir . '/symfony/serializer/Attribute/SerializedPath.php',
+ 'Symfony\\Component\\Serializer\\CacheWarmer\\CompiledClassMetadataCacheWarmer' => $vendorDir . '/symfony/serializer/CacheWarmer/CompiledClassMetadataCacheWarmer.php',
+ 'Symfony\\Component\\Serializer\\Command\\DebugCommand' => $vendorDir . '/symfony/serializer/Command/DebugCommand.php',
+ 'Symfony\\Component\\Serializer\\Context\\ContextBuilderInterface' => $vendorDir . '/symfony/serializer/Context/ContextBuilderInterface.php',
+ 'Symfony\\Component\\Serializer\\Context\\ContextBuilderTrait' => $vendorDir . '/symfony/serializer/Context/ContextBuilderTrait.php',
+ 'Symfony\\Component\\Serializer\\Context\\Encoder\\CsvEncoderContextBuilder' => $vendorDir . '/symfony/serializer/Context/Encoder/CsvEncoderContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Encoder\\JsonEncoderContextBuilder' => $vendorDir . '/symfony/serializer/Context/Encoder/JsonEncoderContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Encoder\\XmlEncoderContextBuilder' => $vendorDir . '/symfony/serializer/Context/Encoder/XmlEncoderContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Encoder\\YamlEncoderContextBuilder' => $vendorDir . '/symfony/serializer/Context/Encoder/YamlEncoderContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\AbstractNormalizerContextBuilder' => $vendorDir . '/symfony/serializer/Context/Normalizer/AbstractNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\AbstractObjectNormalizerContextBuilder' => $vendorDir . '/symfony/serializer/Context/Normalizer/AbstractObjectNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\BackedEnumNormalizerContextBuilder' => $vendorDir . '/symfony/serializer/Context/Normalizer/BackedEnumNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\ConstraintViolationListNormalizerContextBuilder' => $vendorDir . '/symfony/serializer/Context/Normalizer/ConstraintViolationListNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\DateIntervalNormalizerContextBuilder' => $vendorDir . '/symfony/serializer/Context/Normalizer/DateIntervalNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\DateTimeNormalizerContextBuilder' => $vendorDir . '/symfony/serializer/Context/Normalizer/DateTimeNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\FormErrorNormalizerContextBuilder' => $vendorDir . '/symfony/serializer/Context/Normalizer/FormErrorNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\GetSetMethodNormalizerContextBuilder' => $vendorDir . '/symfony/serializer/Context/Normalizer/GetSetMethodNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\JsonSerializableNormalizerContextBuilder' => $vendorDir . '/symfony/serializer/Context/Normalizer/JsonSerializableNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\ObjectNormalizerContextBuilder' => $vendorDir . '/symfony/serializer/Context/Normalizer/ObjectNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\ProblemNormalizerContextBuilder' => $vendorDir . '/symfony/serializer/Context/Normalizer/ProblemNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\PropertyNormalizerContextBuilder' => $vendorDir . '/symfony/serializer/Context/Normalizer/PropertyNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\UidNormalizerContextBuilder' => $vendorDir . '/symfony/serializer/Context/Normalizer/UidNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\UnwrappingDenormalizerContextBuilder' => $vendorDir . '/symfony/serializer/Context/Normalizer/UnwrappingDenormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\SerializerContextBuilder' => $vendorDir . '/symfony/serializer/Context/SerializerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\DataCollector\\SerializerDataCollector' => $vendorDir . '/symfony/serializer/DataCollector/SerializerDataCollector.php',
+ 'Symfony\\Component\\Serializer\\Debug\\TraceableEncoder' => $vendorDir . '/symfony/serializer/Debug/TraceableEncoder.php',
+ 'Symfony\\Component\\Serializer\\Debug\\TraceableNormalizer' => $vendorDir . '/symfony/serializer/Debug/TraceableNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Debug\\TraceableSerializer' => $vendorDir . '/symfony/serializer/Debug/TraceableSerializer.php',
+ 'Symfony\\Component\\Serializer\\DependencyInjection\\SerializerPass' => $vendorDir . '/symfony/serializer/DependencyInjection/SerializerPass.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\ChainDecoder' => $vendorDir . '/symfony/serializer/Encoder/ChainDecoder.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\ChainEncoder' => $vendorDir . '/symfony/serializer/Encoder/ChainEncoder.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\ContextAwareDecoderInterface' => $vendorDir . '/symfony/serializer/Encoder/ContextAwareDecoderInterface.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\ContextAwareEncoderInterface' => $vendorDir . '/symfony/serializer/Encoder/ContextAwareEncoderInterface.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\CsvEncoder' => $vendorDir . '/symfony/serializer/Encoder/CsvEncoder.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\DecoderInterface' => $vendorDir . '/symfony/serializer/Encoder/DecoderInterface.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\EncoderInterface' => $vendorDir . '/symfony/serializer/Encoder/EncoderInterface.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\JsonDecode' => $vendorDir . '/symfony/serializer/Encoder/JsonDecode.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\JsonEncode' => $vendorDir . '/symfony/serializer/Encoder/JsonEncode.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\JsonEncoder' => $vendorDir . '/symfony/serializer/Encoder/JsonEncoder.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\NormalizationAwareInterface' => $vendorDir . '/symfony/serializer/Encoder/NormalizationAwareInterface.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\XmlEncoder' => $vendorDir . '/symfony/serializer/Encoder/XmlEncoder.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\YamlEncoder' => $vendorDir . '/symfony/serializer/Encoder/YamlEncoder.php',
+ 'Symfony\\Component\\Serializer\\Exception\\BadMethodCallException' => $vendorDir . '/symfony/serializer/Exception/BadMethodCallException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\CircularReferenceException' => $vendorDir . '/symfony/serializer/Exception/CircularReferenceException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/serializer/Exception/ExceptionInterface.php',
+ 'Symfony\\Component\\Serializer\\Exception\\ExtraAttributesException' => $vendorDir . '/symfony/serializer/Exception/ExtraAttributesException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/serializer/Exception/InvalidArgumentException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\LogicException' => $vendorDir . '/symfony/serializer/Exception/LogicException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\MappingException' => $vendorDir . '/symfony/serializer/Exception/MappingException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\MissingConstructorArgumentsException' => $vendorDir . '/symfony/serializer/Exception/MissingConstructorArgumentsException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\NotEncodableValueException' => $vendorDir . '/symfony/serializer/Exception/NotEncodableValueException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\NotNormalizableValueException' => $vendorDir . '/symfony/serializer/Exception/NotNormalizableValueException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\PartialDenormalizationException' => $vendorDir . '/symfony/serializer/Exception/PartialDenormalizationException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\RuntimeException' => $vendorDir . '/symfony/serializer/Exception/RuntimeException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\UnexpectedValueException' => $vendorDir . '/symfony/serializer/Exception/UnexpectedValueException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\UnsupportedException' => $vendorDir . '/symfony/serializer/Exception/UnsupportedException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\UnsupportedFormatException' => $vendorDir . '/symfony/serializer/Exception/UnsupportedFormatException.php',
+ 'Symfony\\Component\\Serializer\\Extractor\\ObjectPropertyListExtractor' => $vendorDir . '/symfony/serializer/Extractor/ObjectPropertyListExtractor.php',
+ 'Symfony\\Component\\Serializer\\Extractor\\ObjectPropertyListExtractorInterface' => $vendorDir . '/symfony/serializer/Extractor/ObjectPropertyListExtractorInterface.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\AttributeMetadata' => $vendorDir . '/symfony/serializer/Mapping/AttributeMetadata.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\AttributeMetadataInterface' => $vendorDir . '/symfony/serializer/Mapping/AttributeMetadataInterface.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\ClassDiscriminatorFromClassMetadata' => $vendorDir . '/symfony/serializer/Mapping/ClassDiscriminatorFromClassMetadata.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\ClassDiscriminatorMapping' => $vendorDir . '/symfony/serializer/Mapping/ClassDiscriminatorMapping.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\ClassDiscriminatorResolverInterface' => $vendorDir . '/symfony/serializer/Mapping/ClassDiscriminatorResolverInterface.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\ClassMetadata' => $vendorDir . '/symfony/serializer/Mapping/ClassMetadata.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\ClassMetadataInterface' => $vendorDir . '/symfony/serializer/Mapping/ClassMetadataInterface.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Factory\\CacheClassMetadataFactory' => $vendorDir . '/symfony/serializer/Mapping/Factory/CacheClassMetadataFactory.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Factory\\ClassMetadataFactory' => $vendorDir . '/symfony/serializer/Mapping/Factory/ClassMetadataFactory.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Factory\\ClassMetadataFactoryCompiler' => $vendorDir . '/symfony/serializer/Mapping/Factory/ClassMetadataFactoryCompiler.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Factory\\ClassMetadataFactoryInterface' => $vendorDir . '/symfony/serializer/Mapping/Factory/ClassMetadataFactoryInterface.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Factory\\ClassResolverTrait' => $vendorDir . '/symfony/serializer/Mapping/Factory/ClassResolverTrait.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Factory\\CompiledClassMetadataFactory' => $vendorDir . '/symfony/serializer/Mapping/Factory/CompiledClassMetadataFactory.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Loader\\AnnotationLoader' => $vendorDir . '/symfony/serializer/Mapping/Loader/AnnotationLoader.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Loader\\AttributeLoader' => $vendorDir . '/symfony/serializer/Mapping/Loader/AttributeLoader.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Loader\\FileLoader' => $vendorDir . '/symfony/serializer/Mapping/Loader/FileLoader.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Loader\\LoaderChain' => $vendorDir . '/symfony/serializer/Mapping/Loader/LoaderChain.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Loader\\LoaderInterface' => $vendorDir . '/symfony/serializer/Mapping/Loader/LoaderInterface.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Loader\\XmlFileLoader' => $vendorDir . '/symfony/serializer/Mapping/Loader/XmlFileLoader.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Loader\\YamlFileLoader' => $vendorDir . '/symfony/serializer/Mapping/Loader/YamlFileLoader.php',
+ 'Symfony\\Component\\Serializer\\NameConverter\\AdvancedNameConverterInterface' => $vendorDir . '/symfony/serializer/NameConverter/AdvancedNameConverterInterface.php',
+ 'Symfony\\Component\\Serializer\\NameConverter\\CamelCaseToSnakeCaseNameConverter' => $vendorDir . '/symfony/serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php',
+ 'Symfony\\Component\\Serializer\\NameConverter\\MetadataAwareNameConverter' => $vendorDir . '/symfony/serializer/NameConverter/MetadataAwareNameConverter.php',
+ 'Symfony\\Component\\Serializer\\NameConverter\\NameConverterInterface' => $vendorDir . '/symfony/serializer/NameConverter/NameConverterInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\AbstractNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/AbstractNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\AbstractObjectNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/AbstractObjectNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\ArrayDenormalizer' => $vendorDir . '/symfony/serializer/Normalizer/ArrayDenormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\BackedEnumNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/BackedEnumNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\CacheableSupportsMethodInterface' => $vendorDir . '/symfony/serializer/Normalizer/CacheableSupportsMethodInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\ConstraintViolationListNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/ConstraintViolationListNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\ContextAwareDenormalizerInterface' => $vendorDir . '/symfony/serializer/Normalizer/ContextAwareDenormalizerInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\ContextAwareNormalizerInterface' => $vendorDir . '/symfony/serializer/Normalizer/ContextAwareNormalizerInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\CustomNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/CustomNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DataUriNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/DataUriNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DateIntervalNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/DateIntervalNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DateTimeNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/DateTimeNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DateTimeZoneNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/DateTimeZoneNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DenormalizableInterface' => $vendorDir . '/symfony/serializer/Normalizer/DenormalizableInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DenormalizerAwareInterface' => $vendorDir . '/symfony/serializer/Normalizer/DenormalizerAwareInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DenormalizerAwareTrait' => $vendorDir . '/symfony/serializer/Normalizer/DenormalizerAwareTrait.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DenormalizerInterface' => $vendorDir . '/symfony/serializer/Normalizer/DenormalizerInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\FormErrorNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/FormErrorNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\GetSetMethodNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/GetSetMethodNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\JsonSerializableNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/JsonSerializableNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\MimeMessageNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/MimeMessageNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\NormalizableInterface' => $vendorDir . '/symfony/serializer/Normalizer/NormalizableInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\NormalizerAwareInterface' => $vendorDir . '/symfony/serializer/Normalizer/NormalizerAwareInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\NormalizerAwareTrait' => $vendorDir . '/symfony/serializer/Normalizer/NormalizerAwareTrait.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\NormalizerInterface' => $vendorDir . '/symfony/serializer/Normalizer/NormalizerInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\ObjectNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/ObjectNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\ObjectToPopulateTrait' => $vendorDir . '/symfony/serializer/Normalizer/ObjectToPopulateTrait.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\ProblemNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/ProblemNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\PropertyNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/PropertyNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\TranslatableNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/TranslatableNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\UidNormalizer' => $vendorDir . '/symfony/serializer/Normalizer/UidNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\UnwrappingDenormalizer' => $vendorDir . '/symfony/serializer/Normalizer/UnwrappingDenormalizer.php',
+ 'Symfony\\Component\\Serializer\\Serializer' => $vendorDir . '/symfony/serializer/Serializer.php',
+ 'Symfony\\Component\\Serializer\\SerializerAwareInterface' => $vendorDir . '/symfony/serializer/SerializerAwareInterface.php',
+ 'Symfony\\Component\\Serializer\\SerializerAwareTrait' => $vendorDir . '/symfony/serializer/SerializerAwareTrait.php',
+ 'Symfony\\Component\\Serializer\\SerializerInterface' => $vendorDir . '/symfony/serializer/SerializerInterface.php',
'Symfony\\Component\\Stopwatch\\Section' => $vendorDir . '/symfony/stopwatch/Section.php',
'Symfony\\Component\\Stopwatch\\Stopwatch' => $vendorDir . '/symfony/stopwatch/Stopwatch.php',
'Symfony\\Component\\Stopwatch\\StopwatchEvent' => $vendorDir . '/symfony/stopwatch/StopwatchEvent.php',
@@ -3206,7 +3339,6 @@ return array(
'Symfony\\Component\\Validator\\Mapping\\PropertyMetadataInterface' => $vendorDir . '/symfony/validator/Mapping/PropertyMetadataInterface.php',
'Symfony\\Component\\Validator\\Mapping\\TraversalStrategy' => $vendorDir . '/symfony/validator/Mapping/TraversalStrategy.php',
'Symfony\\Component\\Validator\\ObjectInitializerInterface' => $vendorDir . '/symfony/validator/ObjectInitializerInterface.php',
- 'Symfony\\Component\\Validator\\Test\\ConstraintValidatorTestCase' => $vendorDir . '/symfony/validator/Test/ConstraintValidatorTestCase.php',
'Symfony\\Component\\Validator\\Util\\PropertyPath' => $vendorDir . '/symfony/validator/Util/PropertyPath.php',
'Symfony\\Component\\Validator\\Validation' => $vendorDir . '/symfony/validator/Validation.php',
'Symfony\\Component\\Validator\\ValidatorBuilder' => $vendorDir . '/symfony/validator/ValidatorBuilder.php',
diff --git a/lib/composer/autoload_psr4.php b/lib/composer/autoload_psr4.php
index acb9afba1..24b28701e 100644
--- a/lib/composer/autoload_psr4.php
+++ b/lib/composer/autoload_psr4.php
@@ -29,6 +29,7 @@ return array(
'Symfony\\Component\\Validator\\' => array($vendorDir . '/symfony/validator'),
'Symfony\\Component\\String\\' => array($vendorDir . '/symfony/string'),
'Symfony\\Component\\Stopwatch\\' => array($vendorDir . '/symfony/stopwatch'),
+ 'Symfony\\Component\\Serializer\\' => array($vendorDir . '/symfony/serializer'),
'Symfony\\Component\\Runtime\\' => array($vendorDir . '/symfony/runtime'),
'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'),
'Symfony\\Component\\PropertyInfo\\' => array($vendorDir . '/symfony/property-info'),
diff --git a/lib/composer/autoload_static.php b/lib/composer/autoload_static.php
index 309131275..49bbe8188 100644
--- a/lib/composer/autoload_static.php
+++ b/lib/composer/autoload_static.php
@@ -56,6 +56,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Component\\Validator\\' => 28,
'Symfony\\Component\\String\\' => 25,
'Symfony\\Component\\Stopwatch\\' => 28,
+ 'Symfony\\Component\\Serializer\\' => 29,
'Symfony\\Component\\Runtime\\' => 26,
'Symfony\\Component\\Routing\\' => 26,
'Symfony\\Component\\PropertyInfo\\' => 31,
@@ -208,6 +209,10 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
array (
0 => __DIR__ . '/..' . '/symfony/stopwatch',
),
+ 'Symfony\\Component\\Serializer\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/serializer',
+ ),
'Symfony\\Component\\Runtime\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/runtime',
@@ -804,10 +809,11 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Combodo\\iTop\\DesignDocument' => __DIR__ . '/../..' . '/core/designdocument.class.inc.php',
'Combodo\\iTop\\DesignElement' => __DIR__ . '/../..' . '/core/designdocument.class.inc.php',
'Combodo\\iTop\\FormSDK\\Controller\\TestController' => __DIR__ . '/../..' . '/sources/FormSDK/Controller/TestController.php',
- 'Combodo\\iTop\\FormSDK\\External\\TwigHelper' => __DIR__ . '/../..' . '/sources/FormSDK/External/TwigHelper.php',
+ 'Combodo\\iTop\\FormSDK\\Dto\\ObjectSearchDto' => __DIR__ . '/../..' . '/sources/FormSDK/Dto/ObjectSearchDto.php',
'Combodo\\iTop\\FormSDK\\Field\\Description\\FormFieldDescription' => __DIR__ . '/../..' . '/sources/FormSDK/Field/Description/FormFieldDescription.php',
'Combodo\\iTop\\FormSDK\\Field\\Description\\FormFieldTypeEnumeration' => __DIR__ . '/../..' . '/sources/FormSDK/Field/Description/FormFieldTypeEnumeration.php',
'Combodo\\iTop\\FormSDK\\Helper\\SelectHelper' => __DIR__ . '/../..' . '/sources/FormSDK/Helper/SelectHelper.php',
+ 'Combodo\\iTop\\FormSDK\\Helper\\TwigHelper' => __DIR__ . '/../..' . '/sources/FormSDK/Helper/TwigHelper.php',
'Combodo\\iTop\\FormSDK\\Service\\FactoryPlugin\\FormFactoryObjectPlugin' => __DIR__ . '/../..' . '/sources/FormSDK/Service/FactoryPlugin/FormFactoryObjectPlugin.php',
'Combodo\\iTop\\FormSDK\\Service\\FactoryPlugin\\FormFactoryPluginInterface' => __DIR__ . '/../..' . '/sources/FormSDK/Service/FactoryPlugin/FormFactoryPluginInterface.php',
'Combodo\\iTop\\FormSDK\\Service\\FormFactory' => __DIR__ . '/../..' . '/sources/FormSDK/Service/FormFactory.php',
@@ -3382,6 +3388,138 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Component\\Runtime\\Runner\\Symfony\\ResponseRunner' => __DIR__ . '/..' . '/symfony/runtime/Runner/Symfony/ResponseRunner.php',
'Symfony\\Component\\Runtime\\RuntimeInterface' => __DIR__ . '/..' . '/symfony/runtime/RuntimeInterface.php',
'Symfony\\Component\\Runtime\\SymfonyRuntime' => __DIR__ . '/..' . '/symfony/runtime/SymfonyRuntime.php',
+ 'Symfony\\Component\\Serializer\\Annotation\\Context' => __DIR__ . '/..' . '/symfony/serializer/Annotation/Context.php',
+ 'Symfony\\Component\\Serializer\\Annotation\\DiscriminatorMap' => __DIR__ . '/..' . '/symfony/serializer/Annotation/DiscriminatorMap.php',
+ 'Symfony\\Component\\Serializer\\Annotation\\Groups' => __DIR__ . '/..' . '/symfony/serializer/Annotation/Groups.php',
+ 'Symfony\\Component\\Serializer\\Annotation\\Ignore' => __DIR__ . '/..' . '/symfony/serializer/Annotation/Ignore.php',
+ 'Symfony\\Component\\Serializer\\Annotation\\MaxDepth' => __DIR__ . '/..' . '/symfony/serializer/Annotation/MaxDepth.php',
+ 'Symfony\\Component\\Serializer\\Annotation\\SerializedName' => __DIR__ . '/..' . '/symfony/serializer/Annotation/SerializedName.php',
+ 'Symfony\\Component\\Serializer\\Annotation\\SerializedPath' => __DIR__ . '/..' . '/symfony/serializer/Annotation/SerializedPath.php',
+ 'Symfony\\Component\\Serializer\\Attribute\\Context' => __DIR__ . '/..' . '/symfony/serializer/Attribute/Context.php',
+ 'Symfony\\Component\\Serializer\\Attribute\\DiscriminatorMap' => __DIR__ . '/..' . '/symfony/serializer/Attribute/DiscriminatorMap.php',
+ 'Symfony\\Component\\Serializer\\Attribute\\Groups' => __DIR__ . '/..' . '/symfony/serializer/Attribute/Groups.php',
+ 'Symfony\\Component\\Serializer\\Attribute\\Ignore' => __DIR__ . '/..' . '/symfony/serializer/Attribute/Ignore.php',
+ 'Symfony\\Component\\Serializer\\Attribute\\MaxDepth' => __DIR__ . '/..' . '/symfony/serializer/Attribute/MaxDepth.php',
+ 'Symfony\\Component\\Serializer\\Attribute\\SerializedName' => __DIR__ . '/..' . '/symfony/serializer/Attribute/SerializedName.php',
+ 'Symfony\\Component\\Serializer\\Attribute\\SerializedPath' => __DIR__ . '/..' . '/symfony/serializer/Attribute/SerializedPath.php',
+ 'Symfony\\Component\\Serializer\\CacheWarmer\\CompiledClassMetadataCacheWarmer' => __DIR__ . '/..' . '/symfony/serializer/CacheWarmer/CompiledClassMetadataCacheWarmer.php',
+ 'Symfony\\Component\\Serializer\\Command\\DebugCommand' => __DIR__ . '/..' . '/symfony/serializer/Command/DebugCommand.php',
+ 'Symfony\\Component\\Serializer\\Context\\ContextBuilderInterface' => __DIR__ . '/..' . '/symfony/serializer/Context/ContextBuilderInterface.php',
+ 'Symfony\\Component\\Serializer\\Context\\ContextBuilderTrait' => __DIR__ . '/..' . '/symfony/serializer/Context/ContextBuilderTrait.php',
+ 'Symfony\\Component\\Serializer\\Context\\Encoder\\CsvEncoderContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Encoder/CsvEncoderContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Encoder\\JsonEncoderContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Encoder/JsonEncoderContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Encoder\\XmlEncoderContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Encoder/XmlEncoderContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Encoder\\YamlEncoderContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Encoder/YamlEncoderContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\AbstractNormalizerContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Normalizer/AbstractNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\AbstractObjectNormalizerContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Normalizer/AbstractObjectNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\BackedEnumNormalizerContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Normalizer/BackedEnumNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\ConstraintViolationListNormalizerContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Normalizer/ConstraintViolationListNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\DateIntervalNormalizerContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Normalizer/DateIntervalNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\DateTimeNormalizerContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Normalizer/DateTimeNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\FormErrorNormalizerContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Normalizer/FormErrorNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\GetSetMethodNormalizerContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Normalizer/GetSetMethodNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\JsonSerializableNormalizerContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Normalizer/JsonSerializableNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\ObjectNormalizerContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Normalizer/ObjectNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\ProblemNormalizerContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Normalizer/ProblemNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\PropertyNormalizerContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Normalizer/PropertyNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\UidNormalizerContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Normalizer/UidNormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\Normalizer\\UnwrappingDenormalizerContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/Normalizer/UnwrappingDenormalizerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\Context\\SerializerContextBuilder' => __DIR__ . '/..' . '/symfony/serializer/Context/SerializerContextBuilder.php',
+ 'Symfony\\Component\\Serializer\\DataCollector\\SerializerDataCollector' => __DIR__ . '/..' . '/symfony/serializer/DataCollector/SerializerDataCollector.php',
+ 'Symfony\\Component\\Serializer\\Debug\\TraceableEncoder' => __DIR__ . '/..' . '/symfony/serializer/Debug/TraceableEncoder.php',
+ 'Symfony\\Component\\Serializer\\Debug\\TraceableNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Debug/TraceableNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Debug\\TraceableSerializer' => __DIR__ . '/..' . '/symfony/serializer/Debug/TraceableSerializer.php',
+ 'Symfony\\Component\\Serializer\\DependencyInjection\\SerializerPass' => __DIR__ . '/..' . '/symfony/serializer/DependencyInjection/SerializerPass.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\ChainDecoder' => __DIR__ . '/..' . '/symfony/serializer/Encoder/ChainDecoder.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\ChainEncoder' => __DIR__ . '/..' . '/symfony/serializer/Encoder/ChainEncoder.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\ContextAwareDecoderInterface' => __DIR__ . '/..' . '/symfony/serializer/Encoder/ContextAwareDecoderInterface.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\ContextAwareEncoderInterface' => __DIR__ . '/..' . '/symfony/serializer/Encoder/ContextAwareEncoderInterface.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\CsvEncoder' => __DIR__ . '/..' . '/symfony/serializer/Encoder/CsvEncoder.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\DecoderInterface' => __DIR__ . '/..' . '/symfony/serializer/Encoder/DecoderInterface.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\EncoderInterface' => __DIR__ . '/..' . '/symfony/serializer/Encoder/EncoderInterface.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\JsonDecode' => __DIR__ . '/..' . '/symfony/serializer/Encoder/JsonDecode.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\JsonEncode' => __DIR__ . '/..' . '/symfony/serializer/Encoder/JsonEncode.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\JsonEncoder' => __DIR__ . '/..' . '/symfony/serializer/Encoder/JsonEncoder.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\NormalizationAwareInterface' => __DIR__ . '/..' . '/symfony/serializer/Encoder/NormalizationAwareInterface.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\XmlEncoder' => __DIR__ . '/..' . '/symfony/serializer/Encoder/XmlEncoder.php',
+ 'Symfony\\Component\\Serializer\\Encoder\\YamlEncoder' => __DIR__ . '/..' . '/symfony/serializer/Encoder/YamlEncoder.php',
+ 'Symfony\\Component\\Serializer\\Exception\\BadMethodCallException' => __DIR__ . '/..' . '/symfony/serializer/Exception/BadMethodCallException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\CircularReferenceException' => __DIR__ . '/..' . '/symfony/serializer/Exception/CircularReferenceException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/serializer/Exception/ExceptionInterface.php',
+ 'Symfony\\Component\\Serializer\\Exception\\ExtraAttributesException' => __DIR__ . '/..' . '/symfony/serializer/Exception/ExtraAttributesException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/serializer/Exception/InvalidArgumentException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/serializer/Exception/LogicException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\MappingException' => __DIR__ . '/..' . '/symfony/serializer/Exception/MappingException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\MissingConstructorArgumentsException' => __DIR__ . '/..' . '/symfony/serializer/Exception/MissingConstructorArgumentsException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\NotEncodableValueException' => __DIR__ . '/..' . '/symfony/serializer/Exception/NotEncodableValueException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\NotNormalizableValueException' => __DIR__ . '/..' . '/symfony/serializer/Exception/NotNormalizableValueException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\PartialDenormalizationException' => __DIR__ . '/..' . '/symfony/serializer/Exception/PartialDenormalizationException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/serializer/Exception/RuntimeException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\UnexpectedValueException' => __DIR__ . '/..' . '/symfony/serializer/Exception/UnexpectedValueException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\UnsupportedException' => __DIR__ . '/..' . '/symfony/serializer/Exception/UnsupportedException.php',
+ 'Symfony\\Component\\Serializer\\Exception\\UnsupportedFormatException' => __DIR__ . '/..' . '/symfony/serializer/Exception/UnsupportedFormatException.php',
+ 'Symfony\\Component\\Serializer\\Extractor\\ObjectPropertyListExtractor' => __DIR__ . '/..' . '/symfony/serializer/Extractor/ObjectPropertyListExtractor.php',
+ 'Symfony\\Component\\Serializer\\Extractor\\ObjectPropertyListExtractorInterface' => __DIR__ . '/..' . '/symfony/serializer/Extractor/ObjectPropertyListExtractorInterface.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\AttributeMetadata' => __DIR__ . '/..' . '/symfony/serializer/Mapping/AttributeMetadata.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\AttributeMetadataInterface' => __DIR__ . '/..' . '/symfony/serializer/Mapping/AttributeMetadataInterface.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\ClassDiscriminatorFromClassMetadata' => __DIR__ . '/..' . '/symfony/serializer/Mapping/ClassDiscriminatorFromClassMetadata.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\ClassDiscriminatorMapping' => __DIR__ . '/..' . '/symfony/serializer/Mapping/ClassDiscriminatorMapping.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\ClassDiscriminatorResolverInterface' => __DIR__ . '/..' . '/symfony/serializer/Mapping/ClassDiscriminatorResolverInterface.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\ClassMetadata' => __DIR__ . '/..' . '/symfony/serializer/Mapping/ClassMetadata.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\ClassMetadataInterface' => __DIR__ . '/..' . '/symfony/serializer/Mapping/ClassMetadataInterface.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Factory\\CacheClassMetadataFactory' => __DIR__ . '/..' . '/symfony/serializer/Mapping/Factory/CacheClassMetadataFactory.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Factory\\ClassMetadataFactory' => __DIR__ . '/..' . '/symfony/serializer/Mapping/Factory/ClassMetadataFactory.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Factory\\ClassMetadataFactoryCompiler' => __DIR__ . '/..' . '/symfony/serializer/Mapping/Factory/ClassMetadataFactoryCompiler.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Factory\\ClassMetadataFactoryInterface' => __DIR__ . '/..' . '/symfony/serializer/Mapping/Factory/ClassMetadataFactoryInterface.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Factory\\ClassResolverTrait' => __DIR__ . '/..' . '/symfony/serializer/Mapping/Factory/ClassResolverTrait.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Factory\\CompiledClassMetadataFactory' => __DIR__ . '/..' . '/symfony/serializer/Mapping/Factory/CompiledClassMetadataFactory.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Loader\\AnnotationLoader' => __DIR__ . '/..' . '/symfony/serializer/Mapping/Loader/AnnotationLoader.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Loader\\AttributeLoader' => __DIR__ . '/..' . '/symfony/serializer/Mapping/Loader/AttributeLoader.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Loader\\FileLoader' => __DIR__ . '/..' . '/symfony/serializer/Mapping/Loader/FileLoader.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Loader\\LoaderChain' => __DIR__ . '/..' . '/symfony/serializer/Mapping/Loader/LoaderChain.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Loader\\LoaderInterface' => __DIR__ . '/..' . '/symfony/serializer/Mapping/Loader/LoaderInterface.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Loader\\XmlFileLoader' => __DIR__ . '/..' . '/symfony/serializer/Mapping/Loader/XmlFileLoader.php',
+ 'Symfony\\Component\\Serializer\\Mapping\\Loader\\YamlFileLoader' => __DIR__ . '/..' . '/symfony/serializer/Mapping/Loader/YamlFileLoader.php',
+ 'Symfony\\Component\\Serializer\\NameConverter\\AdvancedNameConverterInterface' => __DIR__ . '/..' . '/symfony/serializer/NameConverter/AdvancedNameConverterInterface.php',
+ 'Symfony\\Component\\Serializer\\NameConverter\\CamelCaseToSnakeCaseNameConverter' => __DIR__ . '/..' . '/symfony/serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php',
+ 'Symfony\\Component\\Serializer\\NameConverter\\MetadataAwareNameConverter' => __DIR__ . '/..' . '/symfony/serializer/NameConverter/MetadataAwareNameConverter.php',
+ 'Symfony\\Component\\Serializer\\NameConverter\\NameConverterInterface' => __DIR__ . '/..' . '/symfony/serializer/NameConverter/NameConverterInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\AbstractNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/AbstractNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\AbstractObjectNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/AbstractObjectNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\ArrayDenormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/ArrayDenormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\BackedEnumNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/BackedEnumNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\CacheableSupportsMethodInterface' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/CacheableSupportsMethodInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\ConstraintViolationListNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/ConstraintViolationListNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\ContextAwareDenormalizerInterface' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/ContextAwareDenormalizerInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\ContextAwareNormalizerInterface' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/ContextAwareNormalizerInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\CustomNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/CustomNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DataUriNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/DataUriNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DateIntervalNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/DateIntervalNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DateTimeNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/DateTimeNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DateTimeZoneNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/DateTimeZoneNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DenormalizableInterface' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/DenormalizableInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DenormalizerAwareInterface' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/DenormalizerAwareInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DenormalizerAwareTrait' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/DenormalizerAwareTrait.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\DenormalizerInterface' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/DenormalizerInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\FormErrorNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/FormErrorNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\GetSetMethodNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/GetSetMethodNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\JsonSerializableNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/JsonSerializableNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\MimeMessageNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/MimeMessageNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\NormalizableInterface' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/NormalizableInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\NormalizerAwareInterface' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/NormalizerAwareInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\NormalizerAwareTrait' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/NormalizerAwareTrait.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\NormalizerInterface' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/NormalizerInterface.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\ObjectNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/ObjectNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\ObjectToPopulateTrait' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/ObjectToPopulateTrait.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\ProblemNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/ProblemNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\PropertyNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/PropertyNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\TranslatableNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/TranslatableNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\UidNormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/UidNormalizer.php',
+ 'Symfony\\Component\\Serializer\\Normalizer\\UnwrappingDenormalizer' => __DIR__ . '/..' . '/symfony/serializer/Normalizer/UnwrappingDenormalizer.php',
+ 'Symfony\\Component\\Serializer\\Serializer' => __DIR__ . '/..' . '/symfony/serializer/Serializer.php',
+ 'Symfony\\Component\\Serializer\\SerializerAwareInterface' => __DIR__ . '/..' . '/symfony/serializer/SerializerAwareInterface.php',
+ 'Symfony\\Component\\Serializer\\SerializerAwareTrait' => __DIR__ . '/..' . '/symfony/serializer/SerializerAwareTrait.php',
+ 'Symfony\\Component\\Serializer\\SerializerInterface' => __DIR__ . '/..' . '/symfony/serializer/SerializerInterface.php',
'Symfony\\Component\\Stopwatch\\Section' => __DIR__ . '/..' . '/symfony/stopwatch/Section.php',
'Symfony\\Component\\Stopwatch\\Stopwatch' => __DIR__ . '/..' . '/symfony/stopwatch/Stopwatch.php',
'Symfony\\Component\\Stopwatch\\StopwatchEvent' => __DIR__ . '/..' . '/symfony/stopwatch/StopwatchEvent.php',
@@ -3610,7 +3748,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
'Symfony\\Component\\Validator\\Mapping\\PropertyMetadataInterface' => __DIR__ . '/..' . '/symfony/validator/Mapping/PropertyMetadataInterface.php',
'Symfony\\Component\\Validator\\Mapping\\TraversalStrategy' => __DIR__ . '/..' . '/symfony/validator/Mapping/TraversalStrategy.php',
'Symfony\\Component\\Validator\\ObjectInitializerInterface' => __DIR__ . '/..' . '/symfony/validator/ObjectInitializerInterface.php',
- 'Symfony\\Component\\Validator\\Test\\ConstraintValidatorTestCase' => __DIR__ . '/..' . '/symfony/validator/Test/ConstraintValidatorTestCase.php',
'Symfony\\Component\\Validator\\Util\\PropertyPath' => __DIR__ . '/..' . '/symfony/validator/Util/PropertyPath.php',
'Symfony\\Component\\Validator\\Validation' => __DIR__ . '/..' . '/symfony/validator/Validation.php',
'Symfony\\Component\\Validator\\ValidatorBuilder' => __DIR__ . '/..' . '/symfony/validator/ValidatorBuilder.php',
diff --git a/lib/composer/installed.json b/lib/composer/installed.json
index 9de7a9b08..c552b97d4 100644
--- a/lib/composer/installed.json
+++ b/lib/composer/installed.json
@@ -4865,6 +4865,107 @@
],
"install-path": "../symfony/runtime"
},
+ {
+ "name": "symfony/serializer",
+ "version": "v6.4.1",
+ "version_normalized": "6.4.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/serializer.git",
+ "reference": "7ead272e62c9567df619ef3c49809bf934ddbc1f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/7ead272e62c9567df619ef3c49809bf934ddbc1f",
+ "reference": "7ead272e62c9567df619ef3c49809bf934ddbc1f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "conflict": {
+ "doctrine/annotations": "<1.12",
+ "phpdocumentor/reflection-docblock": "<3.2.2",
+ "phpdocumentor/type-resolver": "<1.4.0",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/property-access": "<5.4",
+ "symfony/property-info": "<5.4.24|>=6,<6.2.11",
+ "symfony/uid": "<5.4",
+ "symfony/validator": "<6.4",
+ "symfony/yaml": "<5.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^1.12|^2",
+ "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0",
+ "seld/jsonlint": "^1.10",
+ "symfony/cache": "^5.4|^6.0|^7.0",
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/error-handler": "^5.4|^6.0|^7.0",
+ "symfony/filesystem": "^5.4|^6.0|^7.0",
+ "symfony/form": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^5.4|^6.0|^7.0",
+ "symfony/http-kernel": "^5.4|^6.0|^7.0",
+ "symfony/messenger": "^5.4|^6.0|^7.0",
+ "symfony/mime": "^5.4|^6.0|^7.0",
+ "symfony/property-access": "^5.4|^6.0|^7.0",
+ "symfony/property-info": "^5.4.24|^6.2.11|^7.0",
+ "symfony/translation-contracts": "^2.5|^3",
+ "symfony/uid": "^5.4|^6.0|^7.0",
+ "symfony/validator": "^6.4|^7.0",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0",
+ "symfony/var-exporter": "^5.4|^6.0|^7.0",
+ "symfony/yaml": "^5.4|^6.0|^7.0"
+ },
+ "time": "2023-12-01T14:54:37+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Serializer\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/serializer/tree/v6.4.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/serializer"
+ },
{
"name": "symfony/service-contracts",
"version": "v2.5.2",
diff --git a/lib/composer/installed.php b/lib/composer/installed.php
index 555e71a3e..9623b684a 100644
--- a/lib/composer/installed.php
+++ b/lib/composer/installed.php
@@ -3,7 +3,7 @@
'name' => 'combodo/itop',
'pretty_version' => 'dev-develop',
'version' => 'dev-develop',
- 'reference' => '68b7e9ee65e454c7082a871c28496d1add96686b',
+ 'reference' => 'b35151f421e976ad7e3044a4b16c7e4550cddd8e',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -22,7 +22,7 @@
'combodo/itop' => array(
'pretty_version' => 'dev-develop',
'version' => 'dev-develop',
- 'reference' => '68b7e9ee65e454c7082a871c28496d1add96686b',
+ 'reference' => 'b35151f421e976ad7e3044a4b16c7e4550cddd8e',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -659,6 +659,15 @@
'aliases' => array(),
'dev_requirement' => false,
),
+ 'symfony/serializer' => array(
+ 'pretty_version' => 'v6.4.1',
+ 'version' => '6.4.1.0',
+ 'reference' => '7ead272e62c9567df619ef3c49809bf934ddbc1f',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/serializer',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
'symfony/service-contracts' => array(
'pretty_version' => 'v2.5.2',
'version' => '2.5.2.0',
diff --git a/sources/Controller/Base/Layout/ObjectController.php b/sources/Controller/Base/Layout/ObjectController.php
index aa2beeda5..9f34e5e6a 100644
--- a/sources/Controller/Base/Layout/ObjectController.php
+++ b/sources/Controller/Base/Layout/ObjectController.php
@@ -809,7 +809,10 @@ JS;
// Retrieve this reference object (for OQL)
$sThisObjectData = utils::ReadPostedParam('this_object_data', null, utils::ENUM_SANITIZATION_FILTER_RAW_DATA);
- $oThisObj = ObjectRepository::GetObjectFromWizardHelperData($sThisObjectData);
+ $oThisObj = null;
+ if($sThisObjectData !== null){
+ $oThisObj = ObjectRepository::GetObjectFromWizardHelperData($sThisObjectData);
+ }
// Retrieve data post processor
$aDataProcessor = utils::ReadParam('data_post_processor', null, false, utils::ENUM_SANITIZATION_FILTER_RAW_DATA);
diff --git a/sources/FormSDK/Controller/TestController.php b/sources/FormSDK/Controller/TestController.php
index 1e0c016c1..1b1f6eeeb 100644
--- a/sources/FormSDK/Controller/TestController.php
+++ b/sources/FormSDK/Controller/TestController.php
@@ -3,8 +3,12 @@
namespace Combodo\iTop\FormSDK\Controller;
use Combodo\iTop\Controller\AbstractAppController;
+use Combodo\iTop\FormSDK\Dto\ObjectSearchDto;
+use Combodo\iTop\FormSDK\Helper\SelectHelper;
use Combodo\iTop\FormSDK\Service\FormManager;
+use Combodo\iTop\Service\Base\ObjectRepository;
use Exception;
+use JsonPage;
use MetaModel;
use Symfony\Component\Form\ChoiceList\Loader\CallbackChoiceLoader;
use Symfony\Component\Form\Extension\Core\Type\DateType;
@@ -12,6 +16,8 @@ use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpKernel\Attribute\MapQueryString;
+use Symfony\Component\HttpKernel\Attribute\MapRequestPayload;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Validator\Constraints\Length;
use utils;
@@ -37,38 +43,24 @@ class TestController extends AbstractAppController
$oObjectPlugin->AddAttribute('name');
$oObjectPlugin->AddAttribute('mobile_phone');
// others data
- $oFormFactory->AddText('data1', ['label' => 'Ma ville', 'constraints' => new Length(['min' => 3])], 'Autun');
- $oFormFactory->AddText('data2', ['label' => 'Pays'], 'FRANCE');
-
- $aSelectOptions = [
- 'ajax_url' => $this->generateUrl('formSDK_ajax_select'),
- 'valueField' => 'breed',
- 'labelField' => 'breed',
- 'searchField' => 'breed',
- 'preload' => true,
- ];
- $oFormFactory->AddSelect('data3', [
+ $oFormFactory->AddTextField('data1', [
+ 'label' => 'Ma ville',
+ 'constraints' => new Length(['min' => 3])
+ ], 'Autun');
+ $oFormFactory->AddTextField('data2', [
+ 'label' => 'Pays'
+ ], 'FRANCE');
+ $oFormFactory->AddSelectField('data3', [
+ 'label' => 'Ma langue',
+ 'choices' => SelectHelper::GetApplicationLanguages()
+ ], 'FR FR');
+ $oFormFactory->AddSelectAjaxField('data4', [
'label' => 'Mon Chien',
- 'placeholder' => 'Sélectionnez un chien',
- 'attr' => [
- 'data-widget' => 'Select',
- 'data-widget-options' => json_encode($aSelectOptions)
- ],
-// 'choice_loader' => new CallbackChoiceLoader(function(): array {
-//
-// $curl_data = utils::DoPostRequest('http://localhost/' . $this->generateUrl('formSDK_ajax_select'), []);
-// $response_data = json_decode($curl_data);
-//
-// if(count($response_data->items) > 2) return [];
-//
-// $result = [];
-// foreach ($response_data->items as $e) {
-// $result[$e->breed] = $e->breed;
-// }
-//
-// return $result;
-// }),
- ], null);
+ 'placeholder' => 'Sélectionnez un chien'
+ ], 'http://localhost' . $this->generateUrl('formSDK_ajax_select'), [], 'breed', 'breed', 'breed', 20);
+ $oFormFactory->AddSelectOqlField('data5', [
+ 'label' => 'Ma personne',
+ ], 'Person', 'SELECT Person', [], '', 20);
// get the form
$oForm = $oFormFactory->GetForm();
@@ -94,13 +86,11 @@ class TestController extends AbstractAppController
}
-
#[Route('/formSDK/ajax_select', name: 'formSDK_ajax_select')]
public function ajax(Request $oRequest): Response
{
$oJson = file_get_contents('sources/FormSDK/Resources/dogs.json');
$aDogs = json_decode($oJson, true);
-
$sQuery = $oRequest->request->get('query');
return new JsonResponse([
@@ -108,6 +98,19 @@ class TestController extends AbstractAppController
]);
}
+ #[Route('/formSDK/object_search', name: 'formSDK_object_search')]
+ public function OperationSearch(
+ #[MapQueryString] ObjectSearchDto $objectSearch,
+ ): JsonResponse
+ {
+ // Search objects
+ $aResult = ObjectRepository::SearchFromOql($objectSearch->class, json_decode($objectSearch->fields, true), $objectSearch->oql, $objectSearch->search);
+
+ return new JsonResponse([
+ 'items' => $aResult,
+ ]);
+ }
+
#[Route('/success', name: 'app_success')]
public function success(): Response
{
diff --git a/sources/FormSDK/Dto/ObjectSearchDto.php b/sources/FormSDK/Dto/ObjectSearchDto.php
new file mode 100644
index 000000000..68f2c5bf0
--- /dev/null
+++ b/sources/FormSDK/Dto/ObjectSearchDto.php
@@ -0,0 +1,18 @@
+aDescriptions[$sKey] = new FormFieldDescription($sKey, FormFieldTypeEnumeration::TEXT, $aOptions);
- $this->aData[$sKey] = $oData;
-
- return $this;
- }
-
- /**
- * Add select.
- *
- * @param string $sKey
- * @param array $aOptions
- * @param mixed $oData
- *
- * @return $this
- */
- public function AddSelect(string $sKey, array $aOptions, mixed $oData) : FormFactory
- {
- $this->aDescriptions[$sKey] = new FormFieldDescription($sKey, FormFieldTypeEnumeration::SELECT, $aOptions);
- $this->aData[$sKey] = $oData;
-
- return $this;
- }
-
/**
* @return array{descriptions:array, data:array}
*/
@@ -161,4 +132,114 @@ class FormFactory
return $this->oSymfonyBridge->GetForm($aDescriptions, $aData);
}
+
+ /**
+ * Add text field.
+ *
+ * @param string $sKey
+ * @param array $aOptions
+ * @param mixed $oData
+ *
+ * @return $this
+ */
+ public function AddTextField(string $sKey, array $aOptions, mixed $oData = null) : FormFactory
+ {
+ $this->aDescriptions[$sKey] = new FormFieldDescription($sKey, FormFieldTypeEnumeration::TEXT, $aOptions);
+ $this->aData[$sKey] = $oData;
+
+ return $this;
+ }
+
+ /**
+ * Add select field.
+ *
+ * @param string $sKey
+ * @param array $aOptions
+ * @param mixed $oData
+ *
+ * @return $this
+ */
+ public function AddSelectField(string $sKey, array $aOptions, mixed $oData = null) : FormFactory
+ {
+ $this->aDescriptions[$sKey] = new FormFieldDescription($sKey, FormFieldTypeEnumeration::SELECT, $aOptions);
+ $this->aData[$sKey] = $oData;
+
+ return $this;
+ }
+
+ /**
+ * Add dynamic ajax select field.
+ *
+ * @param string $sKey
+ * @param array $aOptions
+ * @param string $sAjaxUrl
+ * @param array $aAjaxData
+ * @param string $sValueField
+ * @param string $sLabelField
+ * @param string $sSearchField
+ * @param int $iAjaxThershold
+ * @param mixed $oData
+ *
+ * @return \Combodo\iTop\FormSDK\Service\FormFactory
+ */
+ public function AddSelectAjaxField(string $sKey, array $aOptions, string $sAjaxUrl, array $aAjaxData, string $sValueField, string $sLabelField, string $sSearchField, int $iAjaxThershold, mixed $oData = null) : FormFactory
+ {
+ // ajax loader options
+ $aAjaxLoaderOptions = [
+ 'ajax_url' => $sAjaxUrl,
+ 'valueField' => $sValueField ? $sValueField : 'value',
+ 'labelField' => $sLabelField ? $sLabelField : 'label',
+ 'searchField' => $sSearchField ? $sSearchField : 'search',
+ 'preload' => false,
+ ];
+
+ // merge options
+ $aOptions = array_merge([
+ 'placeholder' => 'Select a value...',
+ 'attr' => [
+ 'data-widget' => 'SelectWidget',
+ 'data-widget-options' => json_encode($aAjaxLoaderOptions)
+ ],
+ 'choice_loader' => new CallbackChoiceLoader(function() use ($sAjaxUrl, $aAjaxData, $iAjaxThershold): array {
+ $curl_data = utils::DoPostRequest($sAjaxUrl, []);
+ $response_data = json_decode($curl_data);
+ if(count($response_data->items) > $iAjaxThershold) return [];
+ $result = [];
+ foreach ($response_data->items as $e) {
+ $result[$e->breed] = $e->breed;
+ }
+ return $result;
+ }),
+ ], $aOptions);
+
+ return $this->AddSelectField($sKey, $aOptions, $oData);
+ }
+
+
+ /**
+ * Add dynamic OQL select field.
+ *
+ * @param string $sKey
+ * @param array $aOptions
+ * @param string $sObjectClass
+ * @param string $sOql
+ * @param array $aFieldsToLoad
+ * @param string $sSearch
+ * @param int $iAjaxThershold
+ * @param mixed $oData
+ *
+ * @return \Combodo\iTop\FormSDK\Service\FormFactory
+ */
+ public function AddSelectOqlField(string $sKey, array $aOptions, string $sObjectClass, string $sOql, array $aFieldsToLoad, string $sSearch, int $iAjaxThershold, mixed $oData = null) : FormFactory
+ {
+// $sFieldsToLoad = implode($aFieldsToLoad);
+ $aData = [
+ 'class' => $sObjectClass,
+ 'oql' => $sOql,
+ 'fields' => json_encode($aFieldsToLoad),
+ 'search' => $sSearch
+ ];
+ $sUrl = 'http://localhost' . $this->oRouter->generate('formSDK_object_search') . '?' . http_build_query($aData);
+ return $this->AddSelectAjaxField($sKey, $aOptions, $sUrl, $aData, 'id', 'friendlyname', 'friendlyname', $iAjaxThershold, $oData);
+ }
}
\ No newline at end of file
diff --git a/sources/FormSDK/Service/FormManager.php b/sources/FormSDK/Service/FormManager.php
index b12c26b67..a1e053df6 100644
--- a/sources/FormSDK/Service/FormManager.php
+++ b/sources/FormSDK/Service/FormManager.php
@@ -20,6 +20,7 @@
namespace Combodo\iTop\FormSDK\Service;
use Combodo\iTop\FormSDK\Symfony\SymfonyBridge;
+use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
/**
* Form manager service.
@@ -36,7 +37,8 @@ class FormManager
* @param \Combodo\iTop\FormSDK\Symfony\SymfonyBridge $oSymfonyBridge
*/
public function __construct(
- private readonly SymfonyBridge $oSymfonyBridge
+ private readonly SymfonyBridge $oSymfonyBridge,
+ private UrlGeneratorInterface $oRouter
)
{
}
@@ -48,7 +50,7 @@ class FormManager
*/
public function CreateFactory() : FormFactory
{
- return new FormFactory($this->oSymfonyBridge);
+ return new FormFactory($this->oSymfonyBridge, $this->oRouter);
}
}
\ No newline at end of file
diff --git a/sources/FormSDK/Symfony/SymfonyBridge.php b/sources/FormSDK/Symfony/SymfonyBridge.php
index e3f54ac5b..393143d3e 100644
--- a/sources/FormSDK/Symfony/SymfonyBridge.php
+++ b/sources/FormSDK/Symfony/SymfonyBridge.php
@@ -60,6 +60,7 @@ class SymfonyBridge
public function ToSymfonyFormType(FormFieldDescription $oFormDescription) : ?array
{
switch($oFormDescription->GetType()){
+
case FormFieldTypeEnumeration::TEXT:
return [
'path' => $oFormDescription->GetPath(),
@@ -117,6 +118,18 @@ class SymfonyBridge
$aSymfony['type'],
$aSymfony['options']
);
+
+ /**
+ * Allow choices to be loaded client side via ajax.
+ * without this, field value needs to be part of initial choices that may be empty.
+ * Need reflexion because, value can be hacked with invalid value without extra validation.
+ * @see https://symfony.com/doc/current/reference/forms/types/choice.html#choice-loader
+ * @see https://itecnote.com/tecnote/php-disable-backend-validation-for-choice-field-in-symfony-2-type/
+ */
+ if($aSymfony['type'] === ChoiceType::class){
+ $oFormBuilder->get($aSymfony['path'])->resetViewTransformers();
+ }
+
}
return $oFormBuilder->getForm();
diff --git a/symfony/.env.local b/symfony/.env.local
index 6eee6fbbc..74f5e24f5 100644
--- a/symfony/.env.local
+++ b/symfony/.env.local
@@ -15,6 +15,6 @@
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
###> symfony/framework-bundle ###
-APP_ENV=prod
+APP_ENV=dev
#APP_SECRET=extracted from iTop general configuration in ./symfony/packages/itop_configuration_bridge.php
###< symfony/framework-bundle ###
diff --git a/templates/formSDK/form.html.twig b/templates/formSDK/form.html.twig
index c20d727b0..1cce138b7 100644
--- a/templates/formSDK/form.html.twig
+++ b/templates/formSDK/form.html.twig
@@ -2,6 +2,7 @@
{% extends 'base.html.twig' %}
{% block stylesheets %}
+