From 02a9372634d27e8daaf57f72e7d62ff77497ad42 Mon Sep 17 00:00:00 2001 From: FusionPBX Date: Fri, 27 Jan 2023 13:08:22 -0700 Subject: [PATCH] Fix call block search and search by more fields. Search by new fields. - call_block_direction - call_block_app - call_block_data Remove search by country code as its type numeric and casting it to text is likely to lower performance. --- app/call_block/call_block.php | 37 ++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/app/call_block/call_block.php b/app/call_block/call_block.php index 5fa5a5f10e..61a7a89c21 100644 --- a/app/call_block/call_block.php +++ b/app/call_block/call_block.php @@ -17,7 +17,7 @@ The Initial Developer of the Original Code is Mark J Crane - Portions created by the Initial Developer are Copyright (C) 2008-2019 + Portions created by the Initial Developer are Copyright (C) 2008-2023 the Initial Developer. All Rights Reserved. Contributor(s): @@ -84,15 +84,8 @@ $order = $_GET["order"]; //add the search term - $search = strtolower($_GET["search"]); - if (strlen($search) > 0) { - $sql_search = " ("; - $sql_search .= "lower(call_block_name) like :search "; - $sql_search .= "or call_block_country_code like :search "; - $sql_search .= "or lower(call_block_number) like :search "; - $sql_search .= "or lower(call_block_description) like :search "; - $sql_search .= ") "; - $parameters['search'] = '%'.$search.'%'; + if (isset($_GET["search"])) { + $search = strtolower($_GET["search"]); } //prepare to page the results @@ -117,8 +110,16 @@ } $sql .= ") "; } - if (isset($sql_search)) { - $sql .= "and ".$sql_search; + if (isset($search)) { + $sql .= "and ("; + $sql .= " lower(call_block_name) like :search "; + $sql .= " or lower(call_block_direction) like :search "; + $sql .= " or lower(call_block_number) like :search "; + $sql .= " or lower(call_block_app) like :search "; + $sql .= " or lower(call_block_data) like :search "; + $sql .= " or lower(call_block_description) like :search "; + $sql .= ") "; + $parameters['search'] = '%'.$search.'%'; } $database = new database; $num_rows = $database->select($sql, $parameters, 'column'); @@ -158,8 +159,16 @@ } $sql .= ") "; } - if (isset($sql_search)) { - $sql .= "and ".$sql_search; + if (isset($search)) { + $sql .= "and ("; + $sql .= " lower(call_block_name) like :search "; + $sql .= " or lower(call_block_direction) like :search "; + $sql .= " or lower(call_block_number) like :search "; + $sql .= " or lower(call_block_app) like :search "; + $sql .= " or lower(call_block_data) like :search "; + $sql .= " or lower(call_block_description) like :search "; + $sql .= ") "; + $parameters['search'] = '%'.$search.'%'; } $sql .= order_by($order_by, $order, ['call_block_country_code','call_block_number']); $sql .= limit_offset($rows_per_page, $offset);