From 0de8570dd371c763d6a37c72c89b930c539ddb08 Mon Sep 17 00:00:00 2001 From: fusionate Date: Thu, 19 Oct 2023 16:46:48 +0000 Subject: [PATCH] Order By [Function]: Updated to support natural sorting. --- resources/functions.php | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/resources/functions.php b/resources/functions.php index b48e81202c..0a28ac5b7e 100644 --- a/resources/functions.php +++ b/resources/functions.php @@ -2003,13 +2003,17 @@ function number_pad($number,$n) { //validate and format order by clause of select statement if (!function_exists('order_by')) { - function order_by($col, $dir, $col_default = '', $dir_default = 'asc') { + function order_by($col, $dir, $col_default = '', $dir_default = 'asc', $sort = '') { $order_by = ' order by '; $col = preg_replace('#[^a-zA-Z0-9-_.]#', '', $col ?? ''); - if(!empty($dir)) - $dir = strtolower($dir) == 'desc' ? 'desc' : 'asc'; + $dir = !empty($dir) && strtolower($dir) == 'desc' ? 'desc' : 'asc'; if (!empty($col)) { - return $order_by.$col.' '.$dir.' '; + if ($sort == 'natural') { + return $order_by.'natural_sort('.$col.') '.$dir.' '; + } + else { + return $order_by.$col.' '.$dir.' '; + } } else if (!empty($col_default)) { if (is_array($col_default) && @sizeof($col_default) != 0) { @@ -2022,7 +2026,12 @@ function number_pad($number,$n) { } } else { - return $order_by.$col_default.' '.$dir_default.' '; + if ($sort == 'natural') { + return $order_by.'natural_sort('.$col_default.') '.$dir_default.' '; + } + else { + return $order_by.$col_default.' '.$dir_default.' '; + } } } }