53 $formFieldArray = array();
54 foreach ($formFieldNames as $formField) {
55 $formFieldParts = explode(
'[', $formField);
56 $currentPosition = &$formFieldArray;
57 for ($i = 0; $i < count($formFieldParts); $i++) {
58 $formFieldPart = $formFieldParts[$i];
59 $formFieldPart = rtrim($formFieldPart,
']');
60 if (!is_array($currentPosition)) {
61 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);
63 if ($i === count($formFieldParts) - 1) {
64 if (isset($currentPosition[$formFieldPart]) && is_array($currentPosition[$formFieldPart])) {
65 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);
68 if ($formFieldPart ===
'') {
69 $currentPosition[] = 1;
71 $currentPosition[$formFieldPart] = 1;
74 if ($formFieldPart ===
'') {
75 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);
77 if (!isset($currentPosition[$formFieldPart])) {
78 $currentPosition[$formFieldPart] = array();
80 $currentPosition = &$currentPosition[$formFieldPart];
84 if ($fieldNamePrefix !==
'') {
85 $formFieldArray = (isset($formFieldArray[$fieldNamePrefix]) ? $formFieldArray[$fieldNamePrefix] : array());
98 $serializedFormFieldArray = serialize($formFieldArray);
99 return $this->hashService->appendHmac($serializedFormFieldArray);
112 $trustedPropertiesToken = $request->getInternalArgument(
'__trustedProperties');
113 if (!is_string($trustedPropertiesToken)) {
117 $serializedTrustedProperties = $this->hashService->validateAndStripHmac($trustedPropertiesToken);
118 $trustedProperties = unserialize($serializedTrustedProperties);
119 foreach ($trustedProperties as $propertyName => $propertyConfiguration) {
120 if (!$controllerArguments->hasArgument($propertyName)) {
123 $propertyMappingConfiguration = $controllerArguments->getArgument($propertyName)->getPropertyMappingConfiguration();
141 if (!is_array($propertyConfiguration)) {
145 if (isset($propertyConfiguration[
'__identity'])) {
146 $propertyMappingConfiguration->setTypeConverterOption(
'TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter', \
TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter::CONFIGURATION_MODIFICATION_ALLOWED, TRUE);
147 unset($propertyConfiguration[
'__identity']);
149 $propertyMappingConfiguration->setTypeConverterOption(
'TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter', \
TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter::CONFIGURATION_CREATION_ALLOWED, TRUE);
152 foreach ($propertyConfiguration as $innerKey => $innerValue) {
153 if (is_array($innerValue)) {
156 $propertyMappingConfiguration->allowProperties($innerKey);
modifyPropertyMappingConfiguration($propertyConfiguration, \TYPO3\CMS\Extbase\Property\PropertyMappingConfiguration $propertyMappingConfiguration)
initializePropertyMappingConfigurationFromRequest(\TYPO3\CMS\Extbase\Mvc\Request $request, \TYPO3\CMS\Extbase\Mvc\Controller\Arguments $controllerArguments)
serializeAndHashFormFieldArray(array $formFieldArray)
generateTrustedPropertiesToken($formFieldNames, $fieldNamePrefix='')