/**
  * @param $intId
  * @param \DataContainer $dc
  */
 public static function copyDataRecord($intId, \DataContainer $dc)
 {
     // If this is not the backend than return
     if (TL_MODE != 'BE') {
         return;
     }
     $strTable = $dc->table;
     $strModel = '\\' . \Model::getClassFromTable($strTable);
     $objTranslationController = new \TranslationController();
     // Return if the class does not exist (#9 thanks to tsarma)
     if (!class_exists($strModel)) {
         return;
     }
     // Get object from model
     $objModel = $strModel::findByPk($intId);
     if ($objModel !== null) {
         $arrData = $objModel->row();
         if (is_array($arrData) && count($arrData) > 0) {
             // Load current data container
             $objTranslationController->loadDataContainer($strTable);
             foreach ($arrData as $strField => $varValue) {
                 switch ($GLOBALS['TL_DCA'][$strTable]['fields'][$strField]['inputType']) {
                     case 'TranslationInputUnit':
                     case 'TranslationTextArea':
                     case 'TranslationTextField':
                         // Get translation values
                         $objTranslation = \TranslationFieldsModel::findByFid($varValue);
                         if ($objTranslation !== null) {
                             // Get next fid
                             $intFid = \TranslationFieldsModel::getNextFid();
                             // Set copy fid by field
                             $objModel->{$strField} = $intFid;
                             while ($objTranslation->next()) {
                                 // Generate new translation fields object to copy the current
                                 $objCopy = clone $objTranslation->current();
                                 $objCopy->fid = $intFid;
                                 $objCopy->save();
                             }
                         }
                         break;
                 }
             }
         }
         // Save model object
         $objModel->save();
     }
 }
 /**
  * @param $arrValues
  * @param null $intFid
  * @return null
  */
 public static function saveValuesAndReturnFid($arrValues, $intFid = null)
 {
     $arrLanguages = self::getTranslationLanguageKeys();
     // Check if translation fields should not be empty saved
     if (!$GLOBALS['TL_CONFIG']['dontfillEmptyTranslationFields']) {
         // Add fallback text to empty values
         $arrValues = self::addFallbackValueToEmptyField($arrValues);
     }
     if (is_array($arrLanguages) && count($arrLanguages)) {
         foreach ($arrLanguages as $strLanguage) {
             // If current fid is correct
             if (is_numeric($intFid) && $intFid > 0) {
                 // Get existing translation object by fid
                 $objTranslation = \TranslationFieldsModel::findOneByFidAndLanguage($intFid, $strLanguage);
                 // Get new translation object by fid
                 if ($objTranslation === null) {
                     // Create translation object
                     $objTranslation = new \TranslationFieldsModel();
                     $objTranslation->language = $strLanguage;
                     $objTranslation->fid = $intFid;
                 }
             }
             // Get new translation object with new fid
             if ($objTranslation === null) {
                 // Get next fid
                 $intFid = \TranslationFieldsModel::getNextFid();
                 // Create translation object
                 $objTranslation = new \TranslationFieldsModel();
                 $objTranslation->language = $strLanguage;
                 $objTranslation->fid = $intFid;
             }
             // Set content value
             $objTranslation->content = $arrValues[$strLanguage];
             // Set current timestamp
             $objTranslation->tstamp = time();
             // Save
             $objTranslation->save();
         }
     }
     return $intFid;
 }