Index: trunk/core/kernel/utility/formatters/multilang_formatter.php =================================================================== diff -u -N --- trunk/core/kernel/utility/formatters/multilang_formatter.php (revision 8842) +++ trunk/core/kernel/utility/formatters/multilang_formatter.php (revision 0) @@ -1,140 +0,0 @@ -Application->GetDefaultLanguageId() : $this->Application->GetVar('m_lang'); - if (!$lang) $lang = $this->Application->GetDefaultLanguageId(); - return 'l'.$lang.'_'.$field_name; - } - - function PrepareOptions($field_name, &$field_options, &$object) - { - if (getArrayValue($object->Fields, $field_name, 'master_field')) return; - - $lang_field_name = $this->LangFieldName($field_name); - - //substitude title field - $title_field = $this->Application->getUnitOption($object->Prefix, 'TitleField'); - if ($title_field == $field_name) { - $this->Application->setUnitOption($object->Prefix, 'TitleField', $lang_field_name); - } - - //substitude fields - $fields = $this->Application->getUnitOption($object->Prefix, 'Fields'); - if ( isset($fields[$field_name]) ) { - - $fields[$lang_field_name] = $fields[$field_name]; - $fields[$lang_field_name]['master_field'] = $field_name; - $fields[$lang_field_name]['error_field'] = $field_name; - $object->Fields[$lang_field_name] = $fields[$lang_field_name]; - $fields[$field_name]['required'] = false; - $object->Fields[$field_name]['required'] = false; - $object->VirtualFields[$field_name] = $object->Fields[$field_name]; - } - $this->Application->setUnitOption($object->Prefix, 'Fields', $fields); - - //substitude virtual fields - $virtual_fields = $this->Application->getUnitOption($object->Prefix, 'VirtualFields'); - if ( isset($virtual_fields[$field_name]) ) { - $virtual_fields[$lang_field_name] = $virtual_fields[$field_name]; - $virtual_fields[$lang_field_name]['master_field'] = $field_name; - $object->VirtualFields[$lang_field_name] = $virtual_fields[$lang_field_name]; - $virtual_fields[$field_name]['required'] = false; - $object->VirtualFields[$field_name]['required'] = false; - } - $this->Application->setUnitOption($object->Prefix, 'VirtualFields', $virtual_fields); - - //substitude grid fields - $grids = $this->Application->getUnitOption($object->Prefix, 'Grids', Array()); - foreach ($grids as $name => $grid) { - if ( getArrayValue($grid, 'Fields', $field_name) ) { - array_rename_key($grids[$name]['Fields'], $field_name, $lang_field_name); - } - // update sort fields - used for sorting and filtering in SQLs - foreach ($grid['Fields'] as $grid_fld_name => $fld_options) { - if (isset($fld_options['sort_field']) && $fld_options['sort_field'] == $field_name) { - $grids[$name]['Fields'][$grid_fld_name]['sort_field'] = $lang_field_name; - } - } - } - $this->Application->setUnitOption($object->Prefix, 'Grids', $grids); - - //substitude default sortings - $sortings = $this->Application->getUnitOption($object->Prefix, 'ListSortings', Array()); - foreach ($sortings as $special => $the_sortings) { - if (isset($the_sortings['ForcedSorting'])) { - array_rename_key($sortings[$special]['ForcedSorting'], $field_name, $lang_field_name); - } - if (isset($the_sortings['Sorting'])) { - array_rename_key($sortings[$special]['Sorting'], $field_name, $lang_field_name); - } - } - $this->Application->setUnitOption($object->Prefix, 'ListSortings', $sortings); - - //TODO: substitude possible language-fields sortings after changing language - } - - /*function UpdateSubFields($field, $value, &$options, &$object) - { - - } - - function UpdateMasterFields($field, $value, &$options, &$object) - { - - }*/ - - function Format($value, $field_name, &$object, $format=null) - { - $master_field = isset($object->Fields[$field_name]['master_field']) ? $object->Fields[$field_name]['master_field'] : false; - if (!$master_field) { // if THIS field is master it does NOT have reference to it's master_field - $lang = $this->Application->GetVar('m_lang'); - $value = $object->GetDBField('l'.$lang.'_'.$field_name); //getting value of current language - $master_field = $field_name; // THIS is master_field - } - $options = $object->GetFieldOptions($field_name); - $format = isset($format) ? $format : ( isset($options['format']) ? $options['format'] : null); - - if ( $value == '' && $format != 'no_default') { // try to get default language value - $def_lang_value = $object->GetDBField('l'.$this->Application->GetDefaultLanguageId().'_'.$master_field); - if ($def_lang_value == '') return NULL; - return $def_lang_value; //return value from default language - } - return $value; - } - - /** - * Performs required field check on primary language - * - * @param mixed $value - * @param string $field_name - * @param kDBItem $object - * @return string - */ - function Parse($value, $field_name, &$object) - { - $lang = $this->Application->GetVar('m_lang'); - $def_lang = $this->Application->GetDefaultLanguageId(); - $master_field = getArrayValue($object->Fields, $field_name, 'master_field'); - - if (!$this->Application->GetVar('allow_translation') && $lang != $def_lang && getArrayValue($object->Fields, $field_name, 'required')) { - $def_lang_field = 'l'.$def_lang.'_'.$master_field; - if ( !$object->ValidateRequired($def_lang_field, $object->Fields[$field_name]) ) { - $object->SetError($master_field, 'primary_lang_required'); - } - } - - if ($value == '') return NULL; - return $value; - } -} \ No newline at end of file