Index: branches/RC/core/kernel/kbase.php =================================================================== diff -u -r9230 -r10294 --- branches/RC/core/kernel/kbase.php (.../kbase.php) (revision 9230) +++ branches/RC/core/kernel/kbase.php (.../kbase.php) (revision 10294) @@ -557,14 +557,26 @@ } } + /** + * Escapes fields only, not expressions + * + * @param string $field_expr + * @return string + */ + function escapeField($field_expr) + { + return preg_match('/[.(]/', $field_expr) ? $field_expr : '`'.$field_expr.'`'; + } + function PrepareFieldOptions($field_name) { $field_options =& $this->Fields[$field_name]; - if( isset($field_options['options_sql']) ) - { + if (array_key_exists('options_sql', $field_options) ) { // replace with query result $language_id = $this->Application->GetVar('m_lang'); - $select_clause = '`'.$field_options['option_title_field'].'`,`'.$field_options['option_key_field'].'`'; + + $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