Bug #82461 » typo3-cms_82461.patch
typo3/sysext/backend/Classes/Controller/Wizard/AddController.php 2018-07-12 14:01:26.000000000 +0300 → typo3/sysext/backend/Classes/Controller/Wizard/AddController.php 2018-08-03 12:25:29.000000000 +0300 | ||
---|---|---|
// values after the wizard falls back to the parent record
|
||
$currentValue = $currentParentRow[$this->P['field']];
|
||
if (is_array($currentValue)) {
|
||
$currentValue = implode(',', array_column($currentValue, 'uid'));
|
||
$firstValue = reset($currentValue);
|
||
if (is_array($firstValue) && isset($firstValue['uid'])) {
|
||
$currentValue = array_column($currentValue, 'uid');
|
||
}
|
||
}
|
||
// Normalize CSV values
|
||
if (!is_array($currentValue)) {
|
||
$currentValue = GeneralUtility::trimExplode(',', $currentValue, true);
|
||
}
|
||
// Normalize all items to "<table>_<uid>" format
|
||
$currentValue = array_map(function ($item) {
|
||
// Handle per-item table for "group" elements
|
||
if (is_array($item)) {
|
||
$item = $item['table'] . '_' . $item['uid'];
|
||
} else {
|
||
$item = $this->table . '_' . $item;
|
||
}
|
||
return $item;
|
||
}, $currentValue);
|
||
switch ((string)$this->P['params']['setValue']) {
|
||
case 'set':
|
||
$data[$this->P['table']][$this->P['uid']][$this->P['field']] = $recordId;
|
||
$currentValue = [$recordId];
|
||
break;
|
||
case 'prepend':
|
||
$data[$this->P['table']][$this->P['uid']][$this->P['field']] = $currentValue . ',' . $recordId;
|
||
$currentValue[] = $recordId;
|
||
break;
|
||
case 'append':
|
||
$data[$this->P['table']][$this->P['uid']][$this->P['field']] = $recordId . ',' . $currentValue;
|
||
array_unshift($currentValue, $recordId);
|
||
break;
|
||
}
|
||
$data[$this->P['table']][$this->P['uid']][$this->P['field']] = implode(
|
||
',',
|
||
GeneralUtility::trimExplode(
|
||
',',
|
||
$data[$this->P['table']][$this->P['uid']][$this->P['field']],
|
||
true
|
||
)
|
||
);
|
||
$data[$this->P['table']][$this->P['uid']][$this->P['field']] = implode(',', $currentValue);
|
||
}
|
||
// Submit the data:
|
||
$dataHandler->start($data, []);
|