2 namespace TYPO3\CMS\Extbase\Service;
37 $flexFormArray = \TYPO3\CMS\Core\Utility\GeneralUtility::xml2array($flexFormContent);
38 $flexFormArray = isset($flexFormArray[
'data']) ? $flexFormArray[
'data'] : array();
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) {
45 $settings[$valueKey] = $this->
walkFlexFormNode($valueDefinition, $valuePointer);
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, array(
'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 = array(next($nodeKeyParts) => $nodeValue);
97 }
elseif (is_array($nodeValue)) {
98 if (array_key_exists($valuePointer, $nodeValue)) {
99 $return[$nodeKey] = $nodeValue[$valuePointer];
104 $return[$nodeKey] = $nodeValue;