37 $flexFormArray = \TYPO3\CMS\Core\Utility\GeneralUtility::xml2array($flexFormContent);
38 $flexFormArray = $flexFormArray[
'data'] ?? [];
39 foreach (array_values($flexFormArray) as $languages) {
40 if (!is_array($languages[$languagePointer])) {
43 foreach ($languages[$languagePointer] as $valueKey => $valueDefinition) {
44 if (strpos($valueKey,
'.') ===
false) {
47 $valueKeyParts = explode(
'.', $valueKey);
48 $currentNode = &$settings;
49 foreach ($valueKeyParts as $valueKeyPart) {
50 $currentNode = &$currentNode[$valueKeyPart];
52 if (is_array($valueDefinition)) {
53 if (array_key_exists($valuePointer, $valueDefinition)) {
54 $currentNode = $valueDefinition[$valuePointer];
59 $currentNode = $valueDefinition;
76 if (is_array($nodeArray)) {
78 foreach ($nodeArray as $nodeKey => $nodeValue) {
79 if ($nodeKey === $valuePointer) {
82 if (in_array($nodeKey, [
'el',
'_arrayContainer'])) {
85 if (($nodeKey[0] ??
'') ===
'_') {
88 if (strpos($nodeKey,
'.')) {
89 $nodeKeyParts = explode(
'.', $nodeKey);
90 $currentNode = &$return;
91 $nodeKeyPartsCount = count($nodeKeyParts);
92 for ($i = 0; $i < $nodeKeyPartsCount - 1; $i++) {
93 $currentNode = &$currentNode[$nodeKeyParts[$i]];
95 $newNode = [next($nodeKeyParts) => $nodeValue];
97 $currentNode[key($subVal)] = current($subVal);
98 } elseif (is_array($nodeValue)) {
99 if (array_key_exists($valuePointer, $nodeValue)) {
100 $return[$nodeKey] = $nodeValue[$valuePointer];
105 $return[$nodeKey] = $nodeValue;