34 foreach ($result[
'processedTca'][
'columns'] as $fieldName => $fieldConfig) {
35 if (empty($fieldConfig[
'config'][
'type']) || $fieldConfig[
'config'][
'type'] !==
'inline') {
40 if (!isset($fieldConfig[
'config'][
'foreign_table'])) {
41 throw new \UnexpectedValueException(
42 'Inline field ' . $fieldName .
' of table ' . $result[
'tableName'] .
' must have a foreign_table config',
54 if (isset($result[
'inlineParentConfig']) && isset($result[
'inlineParentConfig'][
'readOnly']) && $result[
'inlineParentConfig'][
'readOnly']) {
55 foreach ($result[
'processedTca'][
'columns'] as $columnName => $columnConfiguration) {
56 $result[
'processedTca'][
'columns'][$columnName][
'config'][
'readOnly'] =
true;
73 $config = $result[
'processedTca'][
'columns'][$fieldName][
'config'];
76 if (isset($config[
'minitems'])) {
79 $result[
'processedTca'][
'columns'][$fieldName][
'config'][
'minitems'] = $minItems;
82 if (isset($config[
'maxitems'])) {
85 $result[
'processedTca'][
'columns'][$fieldName][
'config'][
'maxitems'] = $maxItems;
100 $config = $result[
'processedTca'][
'columns'][$fieldName][
'config'];
101 if (!isset($config[
'appearance']) || !is_array($config[
'appearance'])) {
103 $config[
'appearance'] = [];
106 if (isset($config[
'foreign_selector']) && $config[
'foreign_selector']
107 && (!isset($config[
'appearance'][
'useCombination']) || !$config[
'appearance'][
'useCombination'])
109 $config[
'appearance'][
'levelLinksPosition'] =
'none';
110 } elseif (!isset($config[
'appearance'][
'levelLinksPosition'])
111 || !in_array($config[
'appearance'][
'levelLinksPosition'], [
'top',
'bottom',
'both',
'none'],
true)
113 $config[
'appearance'][
'levelLinksPosition'] =
'top';
115 $config[
'appearance'][
'showPossibleLocalizationRecords']
116 = isset($config[
'appearance'][
'showPossibleLocalizationRecords']) && $config[
'appearance'][
'showPossibleLocalizationRecords'];
117 $config[
'appearance'][
'showRemovedLocalizationRecords']
118 = isset($config[
'appearance'][
'showRemovedLocalizationRecords']) && $config[
'appearance'][
'showRemovedLocalizationRecords'];
129 if (isset($config[
'appearance'][
'enabledControls']) && is_array($config[
'appearance'][
'enabledControls'])) {
130 $config[
'appearance'][
'enabledControls'] = array_merge($enabledControls, $config[
'appearance'][
'enabledControls']);
132 $config[
'appearance'][
'enabledControls'] = $enabledControls;
134 $result[
'processedTca'][
'columns'][$fieldName][
'config'] = $config;
154 $childTableName = $result[
'processedTca'][
'columns'][$fieldName][
'config'][
'foreign_table'];
156 if (empty($result[
'processedTca'][
'ctrl'][
'languageField'])
157 || empty(
$GLOBALS[
'TCA'][$childTableName][
'ctrl'][
'languageField'])
162 $parentConfig = $result[
'processedTca'][
'columns'][$fieldName][
'config'];
164 $parentLanguageField = $result[
'processedTca'][
'ctrl'][
'languageField'];
165 if (!isset($parentConfig[
'inline'][
'parentSysLanguageUid'])
166 && isset($result[
'databaseRow'][$parentLanguageField])
168 if (is_array($result[
'databaseRow'][$parentLanguageField])) {
169 $result[
'processedTca'][
'columns'][$fieldName][
'config'][
'inline'][
'parentSysLanguageUid']
170 = (int)$result[
'databaseRow'][$parentLanguageField][0];
172 $result[
'processedTca'][
'columns'][$fieldName][
'config'][
'inline'][
'parentSysLanguageUid']
173 = (int)$result[
'databaseRow'][$parentLanguageField];
196 $config = $result[
'processedTca'][
'columns'][$fieldName][
'config'];
199 if (!isset($config[
'foreign_unique']) && !isset($config[
'foreign_selector'])) {
204 if (isset($config[
'foreign_unique']) && isset($config[
'foreign_selector'])
205 && $config[
'foreign_unique'] !== $config[
'foreign_selector']
207 throw new \UnexpectedValueException(
208 'Table ' . $result[
'tableName'] .
' field ' . $fieldName .
': If both foreign_unique and'
209 .
' foreign_selector are set, they must point to the same field',
214 if (isset($config[
'foreign_unique'])) {
215 $fieldNameInChildConfiguration = $config[
'foreign_unique'];
217 $fieldNameInChildConfiguration = $config[
'foreign_selector'];
221 if (!isset(
$GLOBALS[
'TCA'][$config[
'foreign_table']][
'columns'][$fieldNameInChildConfiguration][
'config'][
'type'])
222 || (
$GLOBALS[
'TCA'][$config[
'foreign_table']][
'columns'][$fieldNameInChildConfiguration][
'config'][
'type'] !==
'select'
223 &&
$GLOBALS[
'TCA'][$config[
'foreign_table']][
'columns'][$fieldNameInChildConfiguration][
'config'][
'type'] !==
'group')
225 throw new \UnexpectedValueException(
226 'Table ' . $result[
'tableName'] .
' field ' . $fieldName .
' points in foreign_selector or foreign_unique'
227 .
' to field ' . $fieldNameInChildConfiguration .
' of table ' . $config[
'foreign_table'] .
', but this field'
228 .
' is either not defined or is not of type select or group',
233 $selectorOrUniqueConfiguration = [
234 'config' =>
$GLOBALS[
'TCA'][$config[
'foreign_table']][
'columns'][$fieldNameInChildConfiguration][
'config'],
238 if ($selectorOrUniqueConfiguration[
'config'][
'type'] ===
'group'
239 && (!isset($selectorOrUniqueConfiguration[
'config'][
'internal_type']) || $selectorOrUniqueConfiguration[
'config'][
'internal_type'] !==
'db')
241 throw new \UnexpectedValueException(
242 'Table ' . $result[
'tableName'] .
' field ' . $fieldName .
' points in foreign_selector or foreign_unique'
243 .
' to field ' . $fieldNameInChildConfiguration .
' of table ' . $config[
'foreign_table'] .
'. This field'
244 .
' is of type group and must be of internal_type db, which is not the case',
250 if (isset($config[
'foreign_selector'], $config[
'overrideChildTca'][
'columns'][$config[
'foreign_selector']][
'config'])
251 && is_array($config[
'overrideChildTca'][
'columns'][$config[
'foreign_selector']][
'config'])
253 $selectorOrUniqueConfiguration[
'config'] = array_replace_recursive($selectorOrUniqueConfiguration[
'config'], $config[
'overrideChildTca'][
'columns'][$config[
'foreign_selector']][
'config']);
257 $selectorOrUniqueConfiguration[
'fieldName'] = $fieldNameInChildConfiguration;
260 if ($selectorOrUniqueConfiguration[
'config'][
'type'] ===
'select') {
261 if (!isset($selectorOrUniqueConfiguration[
'config'][
'foreign_table'])) {
262 throw new \UnexpectedValueException(
263 'Table ' . $result[
'tableName'] .
' field ' . $fieldName .
' points in foreign_selector or foreign_unique'
264 .
' to field ' . $fieldNameInChildConfiguration .
' of table ' . $config[
'foreign_table'] .
'. This field'
265 .
' is of type select and must define foreign_table',
269 $foreignTable = $selectorOrUniqueConfiguration[
'config'][
'foreign_table'];
271 if (!isset($selectorOrUniqueConfiguration[
'config'][
'allowed'])) {
272 throw new \UnexpectedValueException(
273 'Table ' . $result[
'tableName'] .
' field ' . $fieldName .
' points in foreign_selector or foreign_unique'
274 .
' to field ' . $fieldNameInChildConfiguration .
' of table ' . $config[
'foreign_table'] .
'. This field'
275 .
' is of type select and must define allowed',
279 $foreignTable = $selectorOrUniqueConfiguration[
'config'][
'allowed'];
281 $selectorOrUniqueConfiguration[
'foreignTable'] = $foreignTable;
284 $selectorOrUniqueConfiguration[
'isSelector'] =
false;
285 if (isset($config[
'foreign_selector'])) {
286 $selectorOrUniqueConfiguration[
'isSelector'] =
true;
290 $selectorOrUniqueConfiguration[
'isUnique'] =
false;
291 if (isset($config[
'foreign_unique'])) {
292 $selectorOrUniqueConfiguration[
'isUnique'] =
true;
296 $result[
'processedTca'][
'columns'][$fieldName][
'config'][
'selectorOrUniqueConfiguration'] = $selectorOrUniqueConfiguration;