Extensions: Add natural sorting for PostgreSQL (Upgrade > App Defaults to create required function).
This commit is contained in:
parent
ad516e681c
commit
088b036b4a
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
The Initial Developer of the Original Code is
|
The Initial Developer of the Original Code is
|
||||||
Mark J Crane <markjcrane@fusionpbx.com>
|
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.
|
the Initial Developer. All Rights Reserved.
|
||||||
|
|
||||||
Contributor(s):
|
Contributor(s):
|
||||||
|
|
@ -78,6 +78,18 @@
|
||||||
|
|
||||||
$p->delete('default_setting_edit', 'temp');
|
$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'];
|
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||||
}
|
}
|
||||||
$sql .= $sql_search;
|
$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);
|
$sql .= limit_offset($rows_per_page, $offset);
|
||||||
$database = new database;
|
$database = new database;
|
||||||
$extensions = $database->select($sql, $parameters, 'all');
|
$extensions = $database->select($sql, $parameters, 'all');
|
||||||
|
|
@ -300,4 +310,4 @@
|
||||||
//show the footer
|
//show the footer
|
||||||
require_once "resources/footer.php";
|
require_once "resources/footer.php";
|
||||||
|
|
||||||
?>
|
?>
|
||||||
Loading…
Reference in New Issue