2 namespace TYPO3\CMS\Extbase\Mvc\Controller;
61 $formFieldArray = array();
62 foreach ($formFieldNames as $formField) {
63 $formFieldParts = explode(
'[', $formField);
64 $currentPosition = &$formFieldArray;
65 $formFieldPartsCount = count($formFieldParts);
66 for ($i = 0; $i < $formFieldPartsCount; $i++) {
67 $formFieldPart = $formFieldParts[$i];
68 $formFieldPart = rtrim($formFieldPart,
']');
69 if (!is_array($currentPosition)) {
70 throw new \TYPO3\CMS\Extbase\Security\Exception\InvalidArgumentForHashGenerationException(
'The form field "' . $formField .
'" is declared as array, but it collides with a previous form field of the same name which declared the field as string. This is an inconsistency you need to fix inside your Fluid form. (String overridden by Array)', 1255072196);
72 if ($i === $formFieldPartsCount - 1) {
73 if (isset($currentPosition[$formFieldPart]) && is_array($currentPosition[$formFieldPart])) {
74 throw new \TYPO3\CMS\Extbase\Security\Exception\InvalidArgumentForHashGenerationException(
'The form field "' . $formField .
'" is declared as string, but it collides with a previous form field of the same name which declared the field as array. This is an inconsistency you need to fix inside your Fluid form. (Array overridden by String)', 1255072587);
77 if ($formFieldPart ===
'') {
78 $currentPosition[] = 1;
80 $currentPosition[$formFieldPart] = 1;
83 if ($formFieldPart ===
'') {
84 throw new \TYPO3\CMS\Extbase\Security\Exception\InvalidArgumentForHashGenerationException(
'The form field "' . $formField .
'" is invalid. Reason: "[]" used not as last argument, but somewhere in the middle (like foo[][bar]).', 1255072832);
86 if (!isset($currentPosition[$formFieldPart])) {
87 $currentPosition[$formFieldPart] = array();
89 $currentPosition = &$currentPosition[$formFieldPart];
93 if ($fieldNamePrefix !==
'') {
94 $formFieldArray = (isset($formFieldArray[$fieldNamePrefix]) ? $formFieldArray[$fieldNamePrefix] : array());
108 $serializedFormFieldArray = serialize($formFieldArray);
109 return $this->hashService->appendHmac($serializedFormFieldArray);
123 $trustedPropertiesToken = $request->getInternalArgument(
'__trustedProperties');
124 if (!is_string($trustedPropertiesToken)) {
128 $serializedTrustedProperties = $this->hashService->validateAndStripHmac($trustedPropertiesToken);
129 $trustedProperties = unserialize($serializedTrustedProperties);
130 foreach ($trustedProperties as $propertyName => $propertyConfiguration) {
131 if (!$controllerArguments->hasArgument($propertyName)) {
134 $propertyMappingConfiguration = $controllerArguments->getArgument($propertyName)->getPropertyMappingConfiguration();
153 if (!is_array($propertyConfiguration)) {
157 if (isset($propertyConfiguration[
'__identity'])) {
158 $propertyMappingConfiguration->setTypeConverterOption(\TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter::class, \TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter::CONFIGURATION_MODIFICATION_ALLOWED,
true);
159 unset($propertyConfiguration[
'__identity']);
161 $propertyMappingConfiguration->setTypeConverterOption(\TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter::class, \TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter::CONFIGURATION_CREATION_ALLOWED,
true);
164 foreach ($propertyConfiguration as $innerKey => $innerValue) {
165 if (is_array($innerValue)) {
168 $propertyMappingConfiguration->allowProperties($innerKey);