/** * @param array $arrValues * @param int $intFid * @return int */ public static function saveValuesAndReturnFid(array $arrValues, $intFid = 0) { /* @var $objLanguages Languages */ $objLanguages = \System::getContainer()->get('craffft.translation_fields.service.languages'); $arrLanguageKeys = $objLanguages->getLanguageKeys(); // Check if translation fields should not be empty saved if (!$GLOBALS['TL_CONFIG']['dontfillEmptyTranslationFields']) { // Add fallback text to empty values $arrValues = WidgetUtil::addFallbackValueToEmptyField($arrValues); } if (is_array($arrLanguageKeys) && count($arrLanguageKeys)) { foreach ($arrLanguageKeys as $strLanguageKey) { // If current fid is correct if (is_numeric($intFid) && $intFid > 0) { // Get existing translation object by fid $objTranslation = self::findOneByFidAndLanguage($intFid, $strLanguageKey); // Get new translation object by fid if ($objTranslation === null) { // Create translation object $objTranslation = new self(); $objTranslation->language = $strLanguageKey; $objTranslation->fid = $intFid; } } // Get new translation object with new fid if ($objTranslation === null) { // Get next fid $intFid = self::getNextFid(); // Create translation object $objTranslation = new self(); $objTranslation->language = $strLanguageKey; $objTranslation->fid = $intFid; } // Set content value if (isset($arrValues[$strLanguageKey])) { $objTranslation->content = $arrValues[$strLanguageKey]; } // Set current timestamp $objTranslation->tstamp = time(); // Save $objTranslation->save(); } } return $intFid; }
/** * @param mixed $varInput * @return mixed */ protected function validator($varInput) { // Get language id $intId = $this->activeRecord ? $this->activeRecord->{$this->strName} : $GLOBALS['TL_CONFIG'][$this->strName]; // Check if translation fields should not be empty saved if (!$GLOBALS['TL_CONFIG']['dontfillEmptyTranslationFields']) { // Fill all empty fields with the content of the fallback field $varInput = WidgetUtil::addFallbackValueToEmptyField($varInput); parent::validator($varInput); } else { // Check only the first field parent::validator($varInput[key($varInput)]); } // Check if array if (is_array($varInput)) { if (!parent::hasErrors()) { // Save values and return fid return TranslationFieldsModel::saveValuesAndReturnFid($varInput, $intId); } } return $intId; }
/** * @param mixed $varInput * @return mixed */ protected function validator($varInput) { // Get array with language id $arrData = $this->activeRecord ? $this->activeRecord->{$this->strName} : $GLOBALS['TL_CONFIG'][$this->strName]; if (is_array($varInput['value'])) { // Check if translation fields should not be empty saved if (!$GLOBALS['TL_CONFIG']['dontfillEmptyTranslationFields']) { // Fill all empty fields with the content of the fallback field $varInput['value'] = WidgetUtil::addFallbackValueToEmptyField($varInput['value']); parent::validator($varInput['value']); } else { // Check only the first field parent::validator($varInput['value'][key($varInput['value'])]); } } $arrData = deserialize($arrData); if (!is_array($arrData) || empty($arrData)) { $arrData = array(); } // Save values and return fid $varInput['value'] = TranslationFieldsModel::saveValuesAndReturnFid($varInput['value'], isset($arrData['value']) ? $arrData['value'] : 0); return $varInput; }