Index: branches/RC/core/kernel/kbase.php =================================================================== diff -u -r10994 -r11271 --- branches/RC/core/kernel/kbase.php (.../kbase.php) (revision 10994) +++ branches/RC/core/kernel/kbase.php (.../kbase.php) (revision 11271) @@ -573,25 +573,36 @@ return preg_match('/[.(]/', $field_expr) ? $field_expr : '`'.$field_expr.'`'; } + /** + * Replaces current language id in given field options + * + * @param string $field_name + * @param Array $field_option_names + */ + function _replaceLanguageId($field_name, $field_option_names) + { + $language_id = $this->Application->GetVar('m_lang'); + + $field_options =& $this->Fields[$field_name]; + foreach ($field_option_names as $option_name) { + $field_options[$option_name] = str_replace('%2$s', $language_id, $field_options[$option_name]); + } + } + function PrepareFieldOptions($field_name) { $field_options =& $this->Fields[$field_name]; if (array_key_exists('options_sql', $field_options) ) { - // replace with query result - $language_id = $this->Application->GetVar('m_lang'); + // get options based on given sql + $replace_options = Array ('option_title_field', 'option_key_field', 'options_sql'); + $this->_replaceLanguageId($field_name, $replace_options); $select_clause = $this->escapeField($field_options['option_title_field']) . ',' . $this->escapeField($field_options['option_key_field']); - - $sql = sprintf($field_options['options_sql'], $select_clause, $language_id); - $sql = str_replace('%2$s', $language_id, $sql); // replace langauge in field names - - $options_hash = getArrayValue($field_options,'options'); - if($options_hash === false) $options_hash = Array(); - + $sql = sprintf($field_options['options_sql'], $select_clause); $dynamic_options = $this->Conn->GetCol($sql, $field_options['option_key_field']); - $field_options['options'] = array_merge_recursive2($options_hash, $dynamic_options); - unset($field_options['options_sql']); + $options_hash = array_key_exists('options', $field_options) ? $field_options['options'] : Array (); + $field_options['options'] = array_merge_recursive2($options_hash, $dynamic_options); } }