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