mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2025-12-30 00:53:50 +00:00
Extensions: Add natural sorting for PostgreSQL (Upgrade > App Defaults to create required function).
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2017
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2019
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
@@ -78,6 +78,18 @@
|
||||
|
||||
$p->delete('default_setting_edit', 'temp');
|
||||
|
||||
//create natural sort function (source: http://www.rhodiumtoad.org.uk/junk/naturalsort.sql)
|
||||
if ($db_type == 'pgsql') {
|
||||
$sql = "create or replace function natural_sort(text)\n";
|
||||
$sql .= " returns bytea language sql immutable strict as \$f\$\n";
|
||||
$sql .= " select string_agg(convert_to(coalesce(r[2], length(length(r[1])::text) || length(r[1])::text || r[1]), 'SQL_ASCII'),'\\x00')\n";
|
||||
$sql .= " from regexp_matches(\$1, '0*([0-9]+)|([^0-9]+)', 'g') r;\n";
|
||||
$sql .= "\$f\$;";
|
||||
$database = new database;
|
||||
$database->execute($sql);
|
||||
unset($sql);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -97,7 +97,17 @@
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
}
|
||||
$sql .= $sql_search;
|
||||
$sql .= order_by($order_by, $order);
|
||||
if ($order_by == '' || $order_by == 'extension') {
|
||||
if ($db_type == 'pgsql') {
|
||||
$sql .= 'order by natural_sort(extension) '.$order; //function in app_defaults.php
|
||||
}
|
||||
else {
|
||||
$sql .= 'order by extension '.$order;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$sql .= order_by($order_by, $order);
|
||||
}
|
||||
$sql .= limit_offset($rows_per_page, $offset);
|
||||
$database = new database;
|
||||
$extensions = $database->select($sql, $parameters, 'all');
|
||||
@@ -300,4 +310,4 @@
|
||||
//show the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
?>
|
||||
Reference in New Issue
Block a user