/** * Processes the localization actions * * @param array $params */ protected function process($params) { $pageId = (int) $params['pageId']; $srcLanguageId = (int) $params['srcLanguageId']; $destLanguageId = (int) $params['destLanguageId']; // Build command map $cmd = ['tt_content' => []]; for ($i = 0, $count = count($params['uidList']); $i < $count; ++$i) { $currentUid = $params['uidList'][$i]; if ($params['action'] === static::ACTION_LOCALIZE) { if ($srcLanguageId === 0) { $cmd['tt_content'][$currentUid] = ['localize' => $destLanguageId]; } else { $previousUid = $this->localizationRepository->getPreviousLocalizedRecordUid('tt_content', $currentUid, $pageId, $srcLanguageId, $destLanguageId); $cmd['tt_content'][$currentUid] = ['copy' => ['action' => 'paste', 'target' => -$previousUid, 'update' => ['sys_language_uid' => $destLanguageId]]]; } } else { $previousUid = $this->localizationRepository->getPreviousLocalizedRecordUid('tt_content', $currentUid, $pageId, $srcLanguageId, $destLanguageId); $cmd['tt_content'][$currentUid] = ['copy' => ['action' => 'paste', 'target' => -$previousUid, 'update' => ['sys_language_uid' => $destLanguageId, 'l18n_parent' => 0]]]; } } /** @var DataHandler $dataHandler */ $dataHandler = GeneralUtility::makeInstance(DataHandler::class); $dataHandler->start([], $cmd); $dataHandler->process_cmdmap(); }