+ /**
+ * Search a data structure array recursively -- including within nested
+ * (repeating) elements -- for a particular field config.
+ *
+ * @param array $dataStructure The data structure
+ * @param string $fieldName The field name
+ * @return array
+ */
+ protected function getNestedDsFieldConfig(array $dataStructure, $fieldName) {
+ $fieldConfig = array();
+ $elements = $dataStructure['ROOT']['el'] ? $dataStructure['ROOT']['el'] : $dataStructure['el'];
+ if (is_array($elements)) {
+ foreach ($elements as $k => $ds) {
+ if ($k === $fieldName) {
+ $fieldConfig = $ds['TCEforms']['config'];
+ break;
+ } elseif (isset($ds['el'][$fieldName]['TCEforms']['config'])) {
+ $fieldConfig = $ds['el'][$fieldName]['TCEforms']['config'];
+ break;
+ } else {
+ $fieldConfig = $this->getNestedDsFieldConfig($ds, $fieldName);
+ }
+ }
+ }
+ return $fieldConfig;
+ }
+