Project

General

Profile

Bug #82461 » typo3-cms_82461.patch

Dmitry Dulepov, 2018-08-03 12:31

View differences:

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, []);
    (1-1/1)