Fix sort order use last sortorder if several fields.

This commit is contained in:
Laurent Destailleur 2020-10-29 11:05:43 +01:00
parent b1b7a7c725
commit 980cb095da

View File

@ -229,6 +229,7 @@ abstract class DoliDB implements Database
{ {
if (! empty($sortfield)) if (! empty($sortfield))
{ {
$oldsortorder = '';
$return=''; $return='';
$fields=explode(',', $sortfield); $fields=explode(',', $sortfield);
$orders=explode(',', $sortorder); $orders=explode(',', $sortorder);
@ -238,15 +239,19 @@ abstract class DoliDB implements Database
if (! $return) $return.=' ORDER BY '; if (! $return) $return.=' ORDER BY ';
else $return.=', '; else $return.=', ';
$return.=preg_replace('/[^0-9a-z_\.]/i', '', $val); $return .= preg_replace('/[^0-9a-z_\.]/i', '', $val); // Add field
$tmpsortorder = trim($orders[$i]); $tmpsortorder = trim($orders[$i]);
// Only ASC and DESC values are valid SQL // Only ASC and DESC values are valid SQL
if (strtoupper($tmpsortorder) === 'ASC') { if (strtoupper($tmpsortorder) === 'ASC') {
$oldsortorder = 'ASC';
$return .= ' ASC'; $return .= ' ASC';
} elseif (strtoupper($tmpsortorder) === 'DESC') { } elseif (strtoupper($tmpsortorder) === 'DESC') {
$oldsortorder = 'DESC';
$return .= ' DESC'; $return .= ' DESC';
} else {
$return .= ' '.($oldsortorder ? $oldsortorder : 'ASC');
} }
$i++; $i++;