2 namespace TYPO3\CMS\Backend\Form\FormDataProvider;
35 foreach ($result[
'processedTca'][
'columns'] as $fieldName => $fieldConfig) {
36 if (empty($fieldConfig[
'config'][
'type']) || $fieldConfig[
'config'][
'type'] !==
'inline') {
41 if (!isset($fieldConfig[
'config'][
'foreign_table'])) {
42 throw new \UnexpectedValueException(
43 'Inline field ' . $fieldName .
' of table ' . $result[
'tableName'] .
' must have a foreign_table config',
66 $config = $result[
'processedTca'][
'columns'][$fieldName][
'config'];
69 if (isset($config[
'minitems'])) {
72 $result[
'processedTca'][
'columns'][$fieldName][
'config'][
'minitems'] = $minItems;
75 if (isset($config[
'maxitems'])) {
78 $result[
'processedTca'][
'columns'][$fieldName][
'config'][
'maxitems'] = $maxItems;
93 $config = $result[
'processedTca'][
'columns'][$fieldName][
'config'];
94 if (!isset($config[
'appearance']) || !is_array($config[
'appearance'])) {
96 $config[
'appearance'] = [];
99 if (isset($config[
'foreign_selector']) && $config[
'foreign_selector']
100 && (!isset($config[
'appearance'][
'useCombination']) || !$config[
'appearance'][
'useCombination'])
102 $config[
'appearance'][
'levelLinksPosition'] =
'none';
103 }
elseif (!isset($config[
'appearance'][
'levelLinksPosition'])
104 || !in_array($config[
'appearance'][
'levelLinksPosition'], array(
'top',
'bottom',
'both',
'none'),
true)
106 $config[
'appearance'][
'levelLinksPosition'] =
'top';
108 $config[
'appearance'][
'showPossibleLocalizationRecords']
109 = isset($config[
'appearance'][
'showPossibleLocalizationRecords']) && $config[
'appearance'][
'showPossibleLocalizationRecords'];
110 $config[
'appearance'][
'showRemovedLocalizationRecords']
111 = isset($config[
'appearance'][
'showRemovedLocalizationRecords']) && $config[
'appearance'][
'showRemovedLocalizationRecords'];
122 if (isset($config[
'appearance'][
'enabledControls']) && is_array($config[
'appearance'][
'enabledControls'])) {
123 $config[
'appearance'][
'enabledControls'] = array_merge($enabledControls, $config[
'appearance'][
'enabledControls']);
125 $config[
'appearance'][
'enabledControls'] = $enabledControls;
127 $result[
'processedTca'][
'columns'][$fieldName][
'config'] = $config;
145 if ($result[
'defaultLanguageRow'] === null) {
148 $result[
'processedTca'][
'columns'][$fieldName][
'config'][
'behaviour'][
'localizationMode'] =
'none';
152 $childTableName = $result[
'processedTca'][
'columns'][$fieldName][
'config'][
'foreign_table'];
153 $parentConfig = $result[
'processedTca'][
'columns'][$fieldName][
'config'];
155 $isChildTableLocalizable =
false;
156 if (isset(
$GLOBALS[
'TCA'][$childTableName][
'ctrl']) && is_array(
$GLOBALS[
'TCA'][$childTableName][
'ctrl'])
157 && isset(
$GLOBALS[
'TCA'][$childTableName][
'ctrl'][
'languageField'])
158 &&
$GLOBALS[
'TCA'][$childTableName][
'ctrl'][
'languageField']
159 && isset(
$GLOBALS[
'TCA'][$childTableName][
'ctrl'][
'transOrigPointerField'])
160 &&
$GLOBALS[
'TCA'][$childTableName][
'ctrl'][
'transOrigPointerField']
162 $isChildTableLocalizable =
true;
167 if (isset($parentConfig[
'behaviour'][
'localizationMode'])) {
170 if ($parentConfig[
'behaviour'][
'localizationMode'] !==
'keep' && $parentConfig[
'behaviour'][
'localizationMode'] !==
'select') {
171 throw new \UnexpectedValueException(
172 'localizationMode of table ' . $result[
'tableName'] .
' field ' . $fieldName .
' is not valid, set to either \'keep\' or \'select\'',
177 if ($parentConfig[
'behaviour'][
'localizationMode'] ===
'select' && !$isChildTableLocalizable) {
178 throw new \UnexpectedValueException(
179 'Wrong configuration: localizationMode of table ' . $result[
'tableName'] .
' field ' . $fieldName .
' is set to \'select\', but table is not localizable.',
183 $mode = $parentConfig[
'behaviour'][
'localizationMode'];
187 if ($isChildTableLocalizable) {
193 $result[
'processedTca'][
'columns'][$fieldName][
'config'][
'behaviour'][
'localizationMode'] = $mode;
213 $config = $result[
'processedTca'][
'columns'][$fieldName][
'config'];
216 if (!isset($config[
'foreign_unique']) && !isset($config[
'foreign_selector'])) {
221 if (isset($config[
'foreign_unique']) && isset($config[
'foreign_selector'])
222 && $config[
'foreign_unique'] !== $config[
'foreign_selector']
224 throw new \UnexpectedValueException(
225 'Table ' . $result[
'tableName'] .
' field ' . $fieldName .
': If both foreign_unique and'
226 .
' foreign_selector are set, they must point to the same field',
231 if (isset($config[
'foreign_unique'])) {
232 $fieldNameInChildConfiguration = $config[
'foreign_unique'];
234 $fieldNameInChildConfiguration = $config[
'foreign_selector'];
238 if (!isset(
$GLOBALS[
'TCA'][$config[
'foreign_table']][
'columns'][$fieldNameInChildConfiguration][
'config'][
'type'])
239 || (
$GLOBALS[
'TCA'][$config[
'foreign_table']][
'columns'][$fieldNameInChildConfiguration][
'config'][
'type'] !==
'select'
240 &&
$GLOBALS[
'TCA'][$config[
'foreign_table']][
'columns'][$fieldNameInChildConfiguration][
'config'][
'type'] !==
'group')
242 throw new \UnexpectedValueException(
243 'Table ' . $result[
'tableName'] .
' field ' . $fieldName .
' points in foreign_selector or foreign_unique'
244 .
' to field ' . $fieldNameInChildConfiguration .
' of table ' . $config[
'foreign_table'] .
', but this field'
245 .
' is either not defined or is not of type select or group',
250 $selectorOrUniqueConfiguration = [
251 'config' =>
$GLOBALS[
'TCA'][$config[
'foreign_table']][
'columns'][$fieldNameInChildConfiguration][
'config'],
255 if ($selectorOrUniqueConfiguration[
'config'][
'type'] ===
'group'
256 && (!isset($selectorOrUniqueConfiguration[
'config'][
'internal_type']) || $selectorOrUniqueConfiguration[
'config'][
'internal_type'] !==
'db')) {
257 throw new \UnexpectedValueException(
258 'Table ' . $result[
'tableName'] .
' field ' . $fieldName .
' points in foreign_selector or foreign_unique'
259 .
' to field ' . $fieldNameInChildConfiguration .
' of table ' . $config[
'foreign_table'] .
'. This field'
260 .
' is of type group and must be of internal_type db, which is not the case',
266 if (isset($config[
'foreign_selector'])
267 && isset($config[
'foreign_selector_fieldTcaOverride'][
'config'])
268 && is_array($config[
'foreign_selector_fieldTcaOverride'][
'config'])
274 $selectorOrUniqueConfiguration[
'fieldName'] = $fieldNameInChildConfiguration;
277 if ($selectorOrUniqueConfiguration[
'config'][
'type'] ===
'select') {
278 if (!isset($selectorOrUniqueConfiguration[
'config'][
'foreign_table'])) {
279 throw new \UnexpectedValueException(
280 'Table ' . $result[
'tableName'] .
' field ' . $fieldName .
' points in foreign_selector or foreign_unique'
281 .
' to field ' . $fieldNameInChildConfiguration .
' of table ' . $config[
'foreign_table'] .
'. This field'
282 .
' is of type select and must define foreign_table',
286 $foreignTable = $selectorOrUniqueConfiguration[
'config'][
'foreign_table'];
288 if (!isset($selectorOrUniqueConfiguration[
'config'][
'allowed'])) {
289 throw new \UnexpectedValueException(
290 'Table ' . $result[
'tableName'] .
' field ' . $fieldName .
' points in foreign_selector or foreign_unique'
291 .
' to field ' . $fieldNameInChildConfiguration .
' of table ' . $config[
'foreign_table'] .
'. This field'
292 .
' is of type select and must define allowed',
296 $foreignTable = $selectorOrUniqueConfiguration[
'config'][
'allowed'];
298 $selectorOrUniqueConfiguration[
'foreignTable'] = $foreignTable;
301 $selectorOrUniqueConfiguration[
'isSelector'] =
false;
302 if (isset($config[
'foreign_selector'])) {
303 $selectorOrUniqueConfiguration[
'isSelector'] =
true;
307 $selectorOrUniqueConfiguration[
'isUnique'] =
false;
308 if (isset($config[
'foreign_unique'])) {
309 $selectorOrUniqueConfiguration[
'isUnique'] =
true;
313 $result[
'processedTca'][
'columns'][$fieldName][
'config'][
'selectorOrUniqueConfiguration'] = $selectorOrUniqueConfiguration;