/**
  * 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;
 }