From ee466d69b0b097a836b733be1bc6ad8c2a5ab09f Mon Sep 17 00:00:00 2001 From: fusionate Date: Wed, 15 Feb 2023 19:33:11 +0000 Subject: [PATCH] Fax Server - List: Add Show All, fix search. --- app/fax/app_config.php | 3 + app/fax/fax.php | 196 +++++++++++++++++++++++++---------------- 2 files changed, 124 insertions(+), 75 deletions(-) diff --git a/app/fax/app_config.php b/app/fax/app_config.php index ca602c8d6a..706ced8476 100644 --- a/app/fax/app_config.php +++ b/app/fax/app_config.php @@ -180,6 +180,9 @@ $apps[$x]['permissions'][$y]['groups'][] = "superadmin"; $apps[$x]['permissions'][$y]['groups'][] = "admin"; $y++; + $apps[$x]['permissions'][$y]['name'] = "fax_extension_view_all"; + $apps[$x]['permissions'][$y]['groups'][] = "superadmin"; + $y++; $apps[$x]['permissions'][$y]['name'] = "fax_subject"; $apps[$x]['permissions'][$y]['groups'][] = "superadmin"; $apps[$x]['permissions'][$y]['groups'][] = "admin"; diff --git a/app/fax/fax.php b/app/fax/fax.php index 99a8fdf6f9..a4720cf76f 100644 --- a/app/fax/fax.php +++ b/app/fax/fax.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-2021 + Portions created by the Initial Developer are Copyright (C) 2008-2023 the Initial Developer. All Rights Reserved. Contributor(s): @@ -84,107 +84,141 @@ } //get record counts - if (permission_exists('fax_extension_view_domain')) { + if (permission_exists('fax_extension_view_all') && $_GET['show'] == 'all') { //count the fax extensions $sql = "select count(f.fax_uuid) from v_fax as f "; - $sql .= "where f.domain_uuid = :domain_uuid "; if (isset($search)) { - $sql .= "and ("; - $sql .= " lower(fax_name) like :search "; - $sql .= " or lower(fax_email) like :search "; - $sql .= " or lower(fax_extension) like :search "; - $sql .= " or lower(fax_destination_number) like :search "; - $sql .= " or lower(fax_caller_id_name) like :search "; - $sql .= " or lower(fax_caller_id_number) like :search "; - $sql .= " or lower(fax_forward_number) like :search "; - $sql .= " or lower(fax_description) like :search "; - $sql .= ") "; + $sql .= "where lower(fax_name) like :search "; + $sql .= "or lower(fax_email) like :search "; + $sql .= "or lower(fax_extension) like :search "; + $sql .= "or lower(fax_destination_number) like :search "; + $sql .= "or lower(fax_caller_id_name) like :search "; + $sql .= "or lower(fax_caller_id_number) like :search "; + $sql .= "or lower(fax_forward_number) like :search "; + $sql .= "or lower(fax_description) like :search "; $parameters['search'] = '%'.$search.'%'; } - $parameters['domain_uuid'] = $_SESSION['domain_uuid']; } else { - //ciount the assigned fax extensions - $sql = "select count(f.fax_uuid) "; - $sql .= "from v_fax as f, v_fax_users as u "; - $sql .= "where f.fax_uuid = u.fax_uuid "; - $sql .= "and f.domain_uuid = :domain_uuid "; - $sql .= "and u.user_uuid = :user_uuid "; - if (isset($search)) { - $sql .= "and ("; - $sql .= " lower(fax_name) like :search "; - $sql .= " or lower(fax_email) like :search "; - $sql .= " or lower(fax_extension) like :search "; - $sql .= " or lower(fax_destination_number) like :search "; - $sql .= " or lower(fax_caller_id_name) like :search "; - $sql .= " or lower(fax_caller_id_number) like :search "; - $sql .= " or lower(fax_forward_number) like :search "; - $sql .= " or lower(fax_description) like :search "; - $sql .= ") "; - $parameters['search'] = '%'.$search.'%'; + if (permission_exists('fax_extension_view_domain')) { + //count the fax extensions + $sql = "select count(f.fax_uuid) from v_fax as f "; + $sql .= "where f.domain_uuid = :domain_uuid "; + if (isset($search)) { + $sql .= "and ("; + $sql .= " lower(fax_name) like :search "; + $sql .= " or lower(fax_email) like :search "; + $sql .= " or lower(fax_extension) like :search "; + $sql .= " or lower(fax_destination_number) like :search "; + $sql .= " or lower(fax_caller_id_name) like :search "; + $sql .= " or lower(fax_caller_id_number) like :search "; + $sql .= " or lower(fax_forward_number) like :search "; + $sql .= " or lower(fax_description) like :search "; + $sql .= ") "; + $parameters['search'] = '%'.$search.'%'; + } + $parameters['domain_uuid'] = $_SESSION['domain_uuid']; + } + else { + //count the assigned fax extensions + $sql = "select count(f.fax_uuid) "; + $sql .= "from v_fax as f, v_fax_users as u "; + $sql .= "where f.fax_uuid = u.fax_uuid "; + $sql .= "and f.domain_uuid = :domain_uuid "; + $sql .= "and u.user_uuid = :user_uuid "; + if (isset($search)) { + $sql .= "and ("; + $sql .= " lower(fax_name) like :search "; + $sql .= " or lower(fax_email) like :search "; + $sql .= " or lower(fax_extension) like :search "; + $sql .= " or lower(fax_destination_number) like :search "; + $sql .= " or lower(fax_caller_id_name) like :search "; + $sql .= " or lower(fax_caller_id_number) like :search "; + $sql .= " or lower(fax_forward_number) like :search "; + $sql .= " or lower(fax_description) like :search "; + $sql .= ") "; + $parameters['search'] = '%'.$search.'%'; + } + $parameters['domain_uuid'] = $_SESSION['domain_uuid']; + $parameters['user_uuid'] = $_SESSION['user_uuid']; } - $parameters['domain_uuid'] = $_SESSION['domain_uuid']; - $parameters['user_uuid'] = $_SESSION['user_uuid']; } $database = new database; $num_rows = $database->select($sql, $parameters, 'column'); //prepare paging $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; - $param = "&search=".$search; + $param = $search ? "search=".$search : null; + $param .= permission_exists('fax_extension_view_all') && $_GET['show'] == 'all' ? "&show=all" : null; $page = is_numeric($_GET['page']) ? $_GET['page'] : 0; list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page); list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true); $offset = $rows_per_page * $page; //get fax extensions - if (permission_exists('fax_extension_view_domain')) { + if (permission_exists('fax_extension_view_all') && $_GET['show'] == 'all') { //show all fax extensions - $sql = "select f.fax_uuid, fax_extension, fax_prefix, fax_name, fax_email, fax_description "; + $sql = "select f.fax_uuid, f.domain_uuid, fax_extension, fax_prefix, fax_name, fax_email, fax_description "; $sql .= "from v_fax as f "; - $sql .= "where f.domain_uuid = :domain_uuid "; if (isset($search)) { - $sql = "and ("; - $sql .= " lower(fax_name) like :search "; - $sql .= " or lower(fax_email) like :search "; - $sql .= " or lower(fax_extension) like :search "; - $sql .= " or lower(fax_destination_number) like :search "; - $sql .= " or lower(fax_caller_id_name) like :search "; - $sql .= " or lower(fax_caller_id_number) like :search "; - $sql .= " or lower(fax_forward_number) like :search "; - $sql .= " or lower(fax_description) like :search "; - $sql .= ") "; + $sql .= "where lower(fax_name) like :search "; + $sql .= "or lower(fax_email) like :search "; + $sql .= "or lower(fax_extension) like :search "; + $sql .= "or lower(fax_destination_number) like :search "; + $sql .= "or lower(fax_caller_id_name) like :search "; + $sql .= "or lower(fax_caller_id_number) like :search "; + $sql .= "or lower(fax_forward_number) like :search "; + $sql .= "or lower(fax_description) like :search "; $parameters['search'] = '%'.$search.'%'; } - $parameters['domain_uuid'] = $_SESSION['domain_uuid']; } else { - //show only assigned fax extensions - $sql = "select f.fax_uuid, fax_extension, fax_prefix, fax_name, fax_email, fax_description "; - $sql .= "from v_fax as f, v_fax_users as u "; - $sql .= "where f.fax_uuid = u.fax_uuid "; - $sql .= "and f.domain_uuid = :domain_uuid "; - $sql .= "and u.user_uuid = :user_uuid "; - if (isset($search)) { - $sql = "and ("; - $sql .= " lower(fax_name) like :search "; - $sql .= " or lower(fax_email) like :search "; - $sql .= " or lower(fax_extension) like :search "; - $sql .= " or lower(fax_destination_number) like :search "; - $sql .= " or lower(fax_caller_id_name) like :search "; - $sql .= " or lower(fax_caller_id_number) like :search "; - $sql .= " or lower(fax_forward_number) like :search "; - $sql .= " or lower(fax_description) like :search "; - $sql .= ") "; - $parameters['search'] = '%'.$search.'%'; + if (permission_exists('fax_extension_view_domain')) { + //show all fax extensions + $sql = "select f.fax_uuid, fax_extension, fax_prefix, fax_name, fax_email, fax_description "; + $sql .= "from v_fax as f "; + $sql .= "where f.domain_uuid = :domain_uuid "; + if (isset($search)) { + $sql .= "and ("; + $sql .= " lower(fax_name) like :search "; + $sql .= " or lower(fax_email) like :search "; + $sql .= " or lower(fax_extension) like :search "; + $sql .= " or lower(fax_destination_number) like :search "; + $sql .= " or lower(fax_caller_id_name) like :search "; + $sql .= " or lower(fax_caller_id_number) like :search "; + $sql .= " or lower(fax_forward_number) like :search "; + $sql .= " or lower(fax_description) like :search "; + $sql .= ") "; + $parameters['search'] = '%'.$search.'%'; + } + $parameters['domain_uuid'] = $_SESSION['domain_uuid']; + } + else { + //show only assigned fax extensions + $sql = "select f.fax_uuid, fax_extension, fax_prefix, fax_name, fax_email, fax_description "; + $sql .= "from v_fax as f, v_fax_users as u "; + $sql .= "where f.fax_uuid = u.fax_uuid "; + $sql .= "and f.domain_uuid = :domain_uuid "; + $sql .= "and u.user_uuid = :user_uuid "; + if (isset($search)) { + $sql .= "and ("; + $sql .= " lower(fax_name) like :search "; + $sql .= " or lower(fax_email) like :search "; + $sql .= " or lower(fax_extension) like :search "; + $sql .= " or lower(fax_destination_number) like :search "; + $sql .= " or lower(fax_caller_id_name) like :search "; + $sql .= " or lower(fax_caller_id_number) like :search "; + $sql .= " or lower(fax_forward_number) like :search "; + $sql .= " or lower(fax_description) like :search "; + $sql .= ") "; + $parameters['search'] = '%'.$search.'%'; + } + $parameters['domain_uuid'] = $_SESSION['domain_uuid']; + $parameters['user_uuid'] = $_SESSION['user_uuid']; } - $parameters['domain_uuid'] = $_SESSION['domain_uuid']; - $parameters['user_uuid'] = $_SESSION['user_uuid']; } $sql .= order_by($order_by, $order, 'f.fax_name', 'asc'); $sql .= limit_offset($rows_per_page, $offset); -//echo $sql."\n"; -//view_array($parameters); $database = new database; $result = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); @@ -210,10 +244,16 @@ if (permission_exists('fax_extension_delete') && $result) { echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display: none;','onclick'=>"modal_open('modal-delete','btn_delete');"]); } + if (permission_exists('fax_extension_view_all') && $_GET['show'] != 'all') { + echo button::create(['type'=>'button','label'=>$text['button-show_all'],'icon'=>$_SESSION['theme']['button_icon_all'],'link'=>'?show=all'.($search ? '&search='.urlencode($search) : null)]); + } echo "