/** * @param array $row * @param integer $newUid * @param integer $oldUid * @param integer $newLanguageUid * @param string $languageFieldName * @param DataHandler $tceMain */ protected function initializeRecordByNewAndOldAndLanguageUids($row, $newUid, $oldUid, $newLanguageUid, $languageFieldName, DataHandler $tceMain) { if (0 < $newUid && 0 < $oldUid && 0 < $newLanguageUid) { $oldRecord = $this->loadRecordFromDatabase($oldUid); if ($oldRecord[$languageFieldName] !== $newLanguageUid && $oldRecord['pid'] === $row['pid']) { // look for the translated version of the parent record indicated // in this new, translated record. Below, we adjust the parent UID // so it has the UID of the translated parent if one exists. $translatedParents = (array) $this->workspacesAwareRecordService->get('tt_content', 'uid,sys_language_uid', "t3_origuid = '" . $oldRecord['tx_flux_parent'] . "'" . BackendUtility::deleteClause('tt_content')); foreach ($translatedParents as $translatedParent) { if ($translatedParent['sys_language_uid'] == $newLanguageUid) { // set $translatedParent to the right language ($newLanguageUid): break; } } $sortbyFieldName = TRUE === isset($GLOBALS['TCA']['tt_content']['ctrl']['sortby']) ? $GLOBALS['TCA']['tt_content']['ctrl']['sortby'] : 'sorting'; $overrideValues = array($sortbyFieldName => $tceMain->resorting('tt_content', $row['pid'], $sortbyFieldName, $oldUid), 'tx_flux_parent' => NULL !== $translatedParent ? $translatedParent['uid'] : $oldRecord['tx_flux_parent']); $this->updateRecordInDatabase($overrideValues, $newUid); } } }
/** * @param array $row * @param integer $newUid * @param integer $oldUid * @param integer $newLanguageUid * @param string $languageFieldName * @param DataHandler $tceMain */ protected function initializeRecordByNewAndOldAndLanguageUids($row, $newUid, $oldUid, $newLanguageUid, $languageFieldName, DataHandler $tceMain) { if (0 < $newUid && 0 < $oldUid && 0 < $newLanguageUid) { $oldRecord = $this->loadRecordFromDatabase($oldUid); if ($oldRecord[$languageFieldName] !== $newLanguageUid && $oldRecord['pid'] === $row['pid']) { $sortbyFieldName = TRUE === isset($GLOBALS['TCA']['tt_content']['ctrl']['sortby']) ? $GLOBALS['TCA']['tt_content']['ctrl']['sortby'] : 'sorting'; $overrideValues = array($sortbyFieldName => $tceMain->resorting('tt_content', $row['pid'], $sortbyFieldName, $oldUid)); $this->updateRecordInDatabase($overrideValues, $newUid); } } }
/** * Paste one record after another record. * * @param string $command The command which caused pasting - "copy" is targeted in order to determine "reference" pasting. * @param array $row The record to be pasted, by reference. Changes original $row * @param array $parameters List of parameters defining the paste operation target * @param DataHandler $tceMain * @return boolean */ public function pasteAfter($command, array &$row, $parameters, DataHandler $tceMain) { $id = $row['uid']; if (1 < substr_count($parameters[1], '-')) { list($pid, $subCommand, $relativeUid, $parentUid, $possibleArea, $possibleColPos) = explode('-', $parameters[1]); $relativeUid = 0 - $relativeUid; } else { list($tablename, $pid, $relativeUid) = $parameters; } if ($command !== 'copy') { $record = $row; } else { $copiedUid = $tceMain->copyMappingArray['tt_content'][$id]; $record = $this->loadRecordFromDatabase($copiedUid); if ('reference' === $subCommand) { $record['CType'] = 'shortcut'; $record['records'] = $id; } $id = $copiedUid; } if (FALSE === empty($possibleArea)) { $record['tx_flux_parent'] = $parentUid; $record['tx_flux_column'] = $possibleArea; $record['colPos'] = self::COLPOS_FLUXCONTENT; } elseif (0 > $relativeUid) { $relativeRecord = $this->loadRecordFromDatabase(abs($relativeUid)); $record['sorting'] = $tceMain->resorting('tt_content', $row['pid'], 'sorting', abs($relativeUid)); $record['pid'] = $relativeRecord['pid']; $record['colPos'] = $relativeRecord['colPos']; $record['tx_flux_column'] = $relativeRecord['tx_flux_column']; $record['tx_flux_parent'] = $relativeRecord['tx_flux_parent']; } elseif (0 < $relativeUid) { $record['sorting'] = 0; $record['pid'] = $relativeUid; $record['tx_flux_column'] = ''; $record['tx_flux_parent'] = ''; } if (FALSE === empty($possibleColPos) || 0 === $possibleColPos || '0' === $possibleColPos) { $record['colPos'] = $possibleColPos; } if (TRUE === isset($pid) && FALSE === isset($relativeRecord['pid'])) { $record['pid'] = $pid; } $this->updateRecordInDatabase($record, $id); $row = $record; }