Esempio n. 1
0
 /**
  * @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);
         }
     }
 }
Esempio n. 2
0
 /**
  * @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;
 }