2 declare(strict_types = 1);
65 if (!empty($this->settings[
'persistenceIdentifier'])) {
66 $formDefinition = $this->formPersistenceManager->load($this->settings[
'persistenceIdentifier']);
67 $formDefinition[
'persistenceIdentifier'] = $this->settings[
'persistenceIdentifier'];
71 $formDefinition[
'identifier'] .=
'-' . $this->configurationManager->getContentObject()->data[
'uid'];
73 $this->view->assign(
'formConfiguration', $formDefinition);
96 $flexFormData = GeneralUtility::xml2array($this->configurationManager->getContentObject()->data[
'pi_flexform'] ??
'');
98 if (!is_array($flexFormData)) {
99 return $formDefinition;
102 if (isset($formDefinition[
'finishers'])) {
103 $prototypeName = $formDefinition[
'prototypeName'] ??
'standard';
104 $configurationService = $this->objectManager->get(ConfigurationService::class);
105 $prototypeConfiguration = $configurationService->getPrototypeConfiguration($prototypeName);
107 foreach ($formDefinition[
'finishers'] as $index => $formFinisherDefinition) {
108 $finisherIdentifier = $formFinisherDefinition[
'identifier'];
113 if ($this->settings[
'overrideFinishers'] && isset($flexFormSheetSettings[
'finishers'][$finisherIdentifier])) {
114 $prototypeFinisherDefinition = $prototypeConfiguration[
'finishersDefinition'][$finisherIdentifier] ?? [];
115 $converterDto = GeneralUtility::makeInstance(
116 FlexFormFinisherOverridesConverterDto::class,
117 $formFinisherDefinition,
119 $flexFormSheetSettings
123 GeneralUtility::makeInstance(ArrayProcessor::class, $prototypeFinisherDefinition[
'FormEngine'][
'elements'])->forEach(
124 GeneralUtility::makeInstance(
125 ArrayProcessing::class,
126 'modifyFinisherOptionsFromFlexFormOverrides',
127 '^(.*)\.config\.type$',
128 GeneralUtility::makeInstance(FinisherOptionsFlexFormOverridesConverter::class, $converterDto)
132 $formDefinition[
'finishers'][$index] = $converterDto->getFinisherDefinition();
136 return $formDefinition;
151 isset($this->settings[
'formDefinitionOverrides'][$formDefinition[
'identifier']])
152 && !empty($this->settings[
'formDefinitionOverrides'][$formDefinition[
'identifier']])
156 $this->settings[
'formDefinitionOverrides'][$formDefinition[
'identifier']]
158 $formDefinition = $this->objectManager->get(TypoScriptService::class)
159 ->resolvePossibleTypoScriptConfiguration($formDefinition);
161 return $formDefinition;
171 array $formDefinition,
172 string $prototypeName,
173 string $finisherIdentifier
177 $formDefinition[
'persistenceIdentifier'],
179 $formDefinition[
'identifier'],
192 string $sheetIdentifier
194 $sheetData[
'data'] = array_filter(
195 $flexForm[
'data'] ?? [],
196 function ($key) use ($sheetIdentifier) {
197 return $key === $sheetIdentifier;
202 if (empty($sheetData[
'data'])) {
206 $flexFormService = GeneralUtility::makeInstance(FlexFormService::class);
207 $flexFormTools = GeneralUtility::makeInstance(FlexFormTools::class);
209 $sheetDataXml = $flexFormTools->flexArray2Xml($sheetData);
210 return $flexFormService->convertFlexFormContentToArray($sheetDataXml)[
'settings'] ?? [];