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 {