From 980cb095da0629806131170bbd8aace826292bb6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 29 Oct 2020 11:05:43 +0100 Subject: [PATCH] Fix sort order use last sortorder if several fields. --- htdocs/core/db/DoliDB.class.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php index 8ca84e0dd10..02864012dc3 100644 --- a/htdocs/core/db/DoliDB.class.php +++ b/htdocs/core/db/DoliDB.class.php @@ -229,6 +229,7 @@ abstract class DoliDB implements Database { if (! empty($sortfield)) { + $oldsortorder = ''; $return=''; $fields=explode(',', $sortfield); $orders=explode(',', $sortorder); @@ -238,15 +239,19 @@ abstract class DoliDB implements Database if (! $return) $return.=' ORDER BY '; else $return.=', '; - $return.=preg_replace('/[^0-9a-z_\.]/i', '', $val); + $return .= preg_replace('/[^0-9a-z_\.]/i', '', $val); // Add field $tmpsortorder = trim($orders[$i]); // Only ASC and DESC values are valid SQL if (strtoupper($tmpsortorder) === 'ASC') { + $oldsortorder = 'ASC'; $return .= ' ASC'; } elseif (strtoupper($tmpsortorder) === 'DESC') { + $oldsortorder = 'DESC'; $return .= ' DESC'; + } else { + $return .= ' '.($oldsortorder ? $oldsortorder : 'ASC'); } $i++;