Integrate device address in the extensions SQL query.

This commit is contained in:
FusionPBX 2023-12-16 11:56:30 -07:00 committed by GitHub
parent fbb2af9bad
commit 38786cacbe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 69 additions and 52 deletions

View File

@ -92,35 +92,35 @@
//add the search term
$search = strtolower($_GET["search"] ?? '');
if (!empty($search)) {
$sql_search = " and ( ";
$sql_search .= "lower(extension) like :search ";
$sql_search .= "or lower(number_alias) like :search ";
$sql_search .= "or lower(effective_caller_id_name) like :search ";
$sql_search .= "or lower(effective_caller_id_number) like :search ";
$sql_search .= "or lower(outbound_caller_id_name) like :search ";
$sql_search .= "or lower(outbound_caller_id_number) like :search ";
$sql_search .= "or lower(emergency_caller_id_name) like :search ";
$sql_search .= "or lower(emergency_caller_id_number) like :search ";
$sql_search .= "or lower(directory_first_name) like :search ";
$sql_search .= "or lower(directory_last_name) like :search ";
if (permission_exists("extension_call_group")) {
$sql_search .= "or lower(call_group) like :search ";
}
$sql_search .= "or lower(user_context) like :search ";
$sql_search .= "or lower(enabled) like :search ";
$sql_search .= "or lower(description) like :search ";
$sql_search .= ") ";
$parameters['search'] = '%'.$search.'%';
}
//get total extension count
$sql = "select count(*) from v_extensions where true ";
$sql = "select count(*) from v_extensions ";
$sql .= "where true ";
if (!(!empty($_GET['show']) && $_GET['show'] == "all" && permission_exists('extension_all'))) {
$sql .= "and domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
$sql .= $sql_search ?? '';
if (!empty($search)) {
$sql .= "and ( ";
$sql .= " lower(extension) like :search ";
$sql .= " or lower(number_alias) like :search ";
$sql .= " or lower(effective_caller_id_name) like :search ";
$sql .= " or lower(effective_caller_id_number) like :search ";
$sql .= " or lower(outbound_caller_id_name) like :search ";
$sql .= " or lower(outbound_caller_id_number) like :search ";
$sql .= " or lower(emergency_caller_id_name) like :search ";
$sql .= " or lower(emergency_caller_id_number) like :search ";
$sql .= " or lower(directory_first_name) like :search ";
$sql .= " or lower(directory_last_name) like :search ";
if (permission_exists("extension_call_group")) {
$sql .= " or lower(call_group) like :search ";
}
$sql .= " or lower(user_context) like :search ";
$sql .= " or lower(enabled) like :search ";
$sql .= " or lower(description) like :search ";
$sql .= ") ";
$parameters['search'] = '%'.$search.'%';
}
$database = new database;
$num_rows = $database->select($sql, $parameters ?? null, 'column');
@ -136,7 +136,51 @@
$offset = $rows_per_page * $page;
//get the extensions
$sql = str_replace('count(*)', '*', $sql);
$sql = "select e.*, ";
$sql .= "( ";
$sql .= " select device_uuid ";
$sql .= " from v_device_lines ";
$sql .= " where extension_uuid = e.extension_uuid ";
$sql .= " and user_id = e.extension ";
$sql .= " limit 1 ";
$sql .= ") AS device_uuid, ";
$sql .= "( ";
$sql .= " select device_address ";
$sql .= " from v_devices ";
$sql .= " where device_uuid in ( ";
$sql .= " select device_uuid ";
$sql .= " from v_device_lines ";
$sql .= " where extension_uuid = e.extension_uuid ";
$sql .= " and user_id = e.extension ";
$sql .= " limit 1) ";
$sql .= ") AS device_address ";
$sql .= "from v_extensions as e ";
$sql .= "where true ";
if (!(!empty($_GET['show']) && $_GET['show'] == "all" && permission_exists('extension_all'))) {
$sql .= "and domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
if (!empty($search)) {
$sql .= "and ( ";
$sql .= " lower(extension) like :search ";
$sql .= " or lower(number_alias) like :search ";
$sql .= " or lower(effective_caller_id_name) like :search ";
$sql .= " or lower(effective_caller_id_number) like :search ";
$sql .= " or lower(outbound_caller_id_name) like :search ";
$sql .= " or lower(outbound_caller_id_number) like :search ";
$sql .= " or lower(emergency_caller_id_name) like :search ";
$sql .= " or lower(emergency_caller_id_number) like :search ";
$sql .= " or lower(directory_first_name) like :search ";
$sql .= " or lower(directory_last_name) like :search ";
if (permission_exists("extension_call_group")) {
$sql .= " or lower(call_group) like :search ";
}
$sql .= " or lower(user_context) like :search ";
$sql .= " or lower(enabled) like :search ";
$sql .= " or lower(description) like :search ";
$sql .= ") ";
$parameters['search'] = '%'.$search.'%';
}
$sql .= order_by($order_by, $order, null, null, $sort);
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
@ -271,26 +315,6 @@
echo "</tr>\n";
if (is_array($extensions) && @sizeof($extensions) != 0) {
if (permission_exists("extension_address")) {
// get all device list
$sql = " select l.user_id, l.domain_uuid, d.device_address, d.device_template, d.device_description, l.device_line_uuid, l.device_uuid, l.line_number ";
$sql .= " from v_device_lines as l, v_devices as d ";
$sql .= " where l.device_uuid = d.device_uuid ";
if (!($_GET['show'] == "all" && permission_exists('extension_all'))) {
$sql.= " and l.domain_uuid = :domain_uuid ";
}
$sql .= " order by l.line_number, d.device_address asc ";
if (!($_GET['show'] == "all" && permission_exists('extension_all'))) {
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
$database = new database;
if ($_GET['show'] == "all" && permission_exists('extension_all')) {
$device_lines = $database->select($sql, 'all');
} else {
$device_lines = $database->select($sql, $parameters, 'all');
}
unset($sql, $parameters, $database);
}
$x = 0;
foreach($extensions as $row) {
if (permission_exists('extension_edit')) {
@ -323,14 +347,7 @@
echo " <td>".escape($row['call_group'])."&nbsp;</td>\n";
}
if (permission_exists("extension_address")) {
$filtered = array_filter($device_lines, function ($elem) use ($row) {
return ($elem['user_id'] == $row['extension'] || $elem['user_id'] == $row['number_alias']) && $row['domain_uuid'] == $elem['domain_uuid'];
});
if (count($filtered)) {
echo " <td class='device_address'><a href='" . PROJECT_PATH . "/app/devices/device_edit.php?id=" . escape(array_pop(array_reverse($filtered))['device_uuid']) . "'>" . escape(array_pop(array_reverse($filtered))['device_address']) . " " . ((count($filtered) - 1) > 0 ? " (+" . (count($filtered) - 1) . ")" : "") . "</td>\n";
} else {
echo " <td> - </td>";
}
echo " <td class='device_address'><a href='" . PROJECT_PATH . "/app/devices/device_edit.php?id=".escape($row['device_uuid'])."'>".escape($row['device_address'])."</td>\n";
}
if (permission_exists("extension_user_context")) {
echo " <td>".escape($row['user_context'])."</td>\n";