Index: trunk/core/kernel/db/dblist.php =================================================================== diff -u -N -r7391 -r7635 --- trunk/core/kernel/db/dblist.php (.../dblist.php) (revision 7391) +++ trunk/core/kernel/db/dblist.php (.../dblist.php) (revision 7635) @@ -560,21 +560,22 @@ * @access public * @param string $field Field name * @param string $direction Direction of ordering (asc|desc) + * @param bool $is_expression this is expression, that should not be escapted by "`" symbols * @return void */ - function AddOrderField($field, $direction) + function AddOrderField($field, $direction = 'asc', $is_expression = false) { // original multilanguage field - convert to current lang field if (getArrayValue($this->Fields, $field, 'formatter') == 'kMultiLanguage' && !getArrayValue($this->Fields, $field, 'master_field')) { $lang = $this->Application->GetVar('m_lang'); $field = 'l'.$lang.'_'.$field; } - if (!isset($this->Fields[$field]) && ($field != 'RAND()')) { + if (!isset($this->Fields[$field]) && $field != 'RAND()' && !$is_expression) { trigger_error('Incorrect sorting defined (field = '.$field.'; direction = '.$direction.') in config for prefix '.$this->Prefix.'', E_USER_WARNING); } - $this->OrderFields[] = Array($field, $direction); + $this->OrderFields[] = Array($field, $direction, $is_expression); } /** @@ -603,7 +604,8 @@ $name = $field[0]; $ret .= isset($this->Fields[$name]) && !isset($this->VirtualFields[$name]) ? '`'.$this->TableName.'`.' : ''; - if ($field[0] == 'RAND()') { + + if ($field[0] == 'RAND()' || $field[2]) { $ret .= $field[0].' '.$field[1].','; } else {