/** * Migrates all content elements for the FCE with the given uid to the selected column positions * * @param array $contentElement * @param array $formdata * @return int Number of Content elements updated */ public function migrateContentElementsForFce($contentElement, $formdata) { $fieldMapping = $this->sharedHelper->getFieldMappingArray($formdata, 'tv_col_', 'ge_col_'); $tvContentArray = $this->sharedHelper->getTvContentArrayForContent($contentElement['uid']); $translationParentUid = (int) $contentElement['l18n_parent']; $sysLanguageUid = (int) $contentElement['sys_language_uid']; $pageUid = (int) $contentElement['pid']; $count = 0; $sorting = 0; foreach ($tvContentArray as $key => $contentUidString) { if (array_key_exists($key, $fieldMapping) && $contentUidString != '') { $contentUids = explode(',', $contentUidString); foreach ($contentUids as $contentUid) { $contentUid = (int) $contentUid; $myContentElement = NULL; $myContentElement = $this->sharedHelper->getContentElement($contentUid); $containerUid = (int) $contentElement['uid']; if ($translationParentUid > 0 && $sysLanguageUid > 0) { $myCeTranslationParentUid = (int) $myContentElement['uid']; if ($myCeTranslationParentUid > 0) { $tmpMyContentElement = $this->sharedHelper->getTranslationForContentElementAndLanguage($myCeTranslationParentUid, $sysLanguageUid); $tmpMyContentUid = (int) $tmpMyContentElement['uid']; if ($tmpMyContentUid > 0) { $contentUid = $tmpMyContentUid; $myContentElement = $tmpMyContentElement; } else { $containerUid = $translationParentUid; } } else { $containerUid = $translationParentUid; } } else { $myContentElement = $this->sharedHelper->getContentElement($contentUid); } if (intval($myContentElement['pid']) === $pageUid) { $this->sharedHelper->updateContentElementForGe($contentUid, $containerUid, $fieldMapping[$key], $sorting); } $sorting += 25; $count++; $this->sharedHelper->fixContentElementLocalizationDiffSources($contentUid); $this->refIndex->updateRefIndexTable('tt_content', $contentUid); } } } return $count; }
/** * @param array $origContentElement * @param int $langUid * @return int */ protected function addTranslationContentElement($contentElement, $langUid, $origUid) { $langUid = (int) $langUid; $origUid = (int) $origUid; unset($contentElement['uid']); $contentElement['sys_language_uid'] = $langUid; $contentElement['t3_origuid'] = (int) $origUid; $contentElement['l18n_parent'] = (int) $origUid; $tvTemplateUid = (int) $contentElement['tx_templavoila_to']; if (!empty($contentElement['tx_templavoila_flex'])) { $contentElement['pi_flexform'] = $contentElement['tx_templavoila_flex']; } if ($this->flexformConversionOption !== 'exclude') { if (t3lib_extMgm::isLoaded('static_info_tables')) { $langUid = (int) $contentElement['sys_language_uid']; if ($langUid > 0) { $forceLanguage = $this->flexformConversionOption === 'forceLanguage'; if ($origUid <= 0) { $forceLanguage = FALSE; } if (!$this->sharedHelper->isTvDataLangDisabled($tvTemplateUid)) { $contentElement['pi_flexform'] = $this->sharedHelper->convertFlexformForTranslation($contentElement['pi_flexform'], $this->langIsoCodes[$langUid], $forceLanguage); } } } } $contentElement['pi_flexform'] = $this->sharedHelper->cleanFlexform($contentElement['pi_flexform'], $tvTemplateUid); $existingTranslation = $this->sharedHelper->getTranslationForContentElementAndLanguage($origUid, $langUid); $existingTranslationUid = 0; if (!empty($existingTranslation) && is_array($existingTranslation)) { $existingTranslationUid = (int) $existingTranslation['uid']; } $contentElementUid = NULL; if ($existingTranslationUid > 0) { $GLOBALS['TYPO3_DB']->exec_UPDATEquery('tt_content', 'uid=' . $existingTranslationUid, $contentElement); $contentElementUid = $existingTranslationUid; } else { $GLOBALS['TYPO3_DB']->exec_INSERTquery('tt_content', $contentElement); $contentElementUid = (int) $GLOBALS['TYPO3_DB']->sql_insert_id(); } return $contentElementUid; }