Portions created by the Initial Developer are Copyright (C) 2008-2017 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ //includes include "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; //check permissions if (permission_exists('extension_view')) { //access granted } else { echo "access denied"; exit; } //get the registrations if (permission_exists('extension_registered')) { $obj = new registrations; $registrations = $obj->get('all'); } //add multi-lingual support $language = new text; $text = $language->get(); //get the http values and set them as variables $search = check_str($_GET["search"]); $order_by = check_str($_GET["order_by"]); $order = check_str($_GET["order"]); //handle search term $search = check_str($_GET["search"]); if (strlen($search) > 0) { $sql_search = "and ( "; $sql_search .= "extension like '%".$search."%' "; $sql_search .= "or call_group like '%".$search."%' "; $sql_search .= "or user_context like '%".$search."%' "; $sql_search .= "or enabled like '%".$search."%' "; $sql_search .= "or description like '%".$search."%' "; $sql_search .= ") "; } //additional includes require_once "resources/header.php"; $document['title'] = $text['title-extensions']; require_once "resources/paging.php"; //get total extension count from the database $sql = "select "; $sql .= "(select count(*) from v_extensions "; $sql .= "where 1 = 1 "; if ($_GET['show'] == "all" && permission_exists('extension_all')) { //show all extensions } else { $sql .= "and domain_uuid = '".$_SESSION['domain_uuid']."' "; } $sql .= " ".$sql_search.") as num_rows "; if ($db_type == "pgsql") { $sql .= ", (select count(*) as count from v_extensions "; $sql .= "where 1 = 1 "; if ($_GET['show'] == "all" && permission_exists('extension_all')) { //show all extensions } else { $sql .= "and domain_uuid = '".$_SESSION['domain_uuid']."' "; } $sql .= "and extension ~ '^[0-9]+$') as numeric_extensions "; } $prep_statement = $db->prepare($sql); if ($prep_statement) { $prep_statement->execute(); $row = $prep_statement->fetch(PDO::FETCH_ASSOC); $total_extensions = $row['num_rows']; if (($db_type == "pgsql") or ($db_type == "mysql")) { $numeric_extensions = $row['numeric_extensions']; } } unset($prep_statement, $row); //prepare to page the results $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; $param = "&search=".$search; if (!isset($_GET['page'])) { $_GET['page'] = 0; } $_GET['page'] = check_str($_GET['page']); list($paging_controls_mini, $rows_per_page, $var_3) = paging($total_extensions, $param, $rows_per_page, true); //top list($paging_controls, $rows_per_page, $var_3) = paging($total_extensions, $param, $rows_per_page); //bottom $offset = $rows_per_page * $_GET['page']; //to cast or not to cast if ($db_type == "pgsql") { $order_text = ($total_extensions == $numeric_extensions) ? "cast(extension as bigint)" : "extension asc"; } else { $order_text = "extension asc"; } //get the extensions $sql = "select * from v_extensions "; $sql .= "where 1 = 1 "; if ($_GET['show'] == "all" && permission_exists('extension_all')) { //show all gateways } else { $sql .= "and domain_uuid = '$domain_uuid' "; } $sql .= $sql_search; //add search mod from above if (strlen($order_by) > 0) { $sql .= ($order_by == 'extension') ? "order by $order_text ".$order." " : "order by ".$order_by." ".$order." "; } else { $sql .= "order by $order_text "; } $sql .= "limit $rows_per_page offset $offset "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $extensions = $prep_statement->fetchAll(PDO::FETCH_NAMED); unset ($prep_statement, $sql); //set the alternating styles $c = 0; $row_style["0"] = "row_style0"; $row_style["1"] = "row_style1"; //show the content echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
\n"; echo " ".$text['header-extensions']." (".$total_extensions.")
\n"; echo "
\n"; if (permission_exists('extension_all')) { if ($_GET['show'] == 'all') { echo " "; } else { echo " \n"; } } if (permission_exists('extension_import')) { echo "\n"; } if (permission_exists('extension_export')) { echo " \n"; } echo " "; echo " "; if ($paging_controls_mini != '') { echo "".$paging_controls_mini."\n"; } echo "
\n"; echo " ".$text['description-extensions']."\n"; echo "
\n"; echo "
"; echo "
\n"; echo "\n"; echo "\n"; if (permission_exists('extension_delete') && is_array($extensions)) { echo ""; } if ($_GET['show'] == "all" && permission_exists('extension_all')) { echo th_order_by('domain_name', $text['label-domain'], $order_by, $order, $param); } echo th_order_by('extension', $text['label-extension'], $order_by, $order); echo th_order_by('call_group', $text['label-call_group'], $order_by, $order); //echo th_order_by('voicemail_mail_to', $text['label-voicemail_mail_to'], $order_by, $order); echo th_order_by('user_context', $text['label-user_context'], $order_by, $order); if (permission_exists('extension_registered')) { echo th_order_by('description', $text['label-is_registered'], $order_by, $order); } echo th_order_by('enabled', $text['label-enabled'], $order_by, $order); echo th_order_by('description', $text['label-description'], $order_by, $order); echo "\n"; echo "\n"; if (is_array($extensions)) { foreach($extensions as $row) { $tr_link = (permission_exists('extension_edit')) ? " href='extension_edit.php?id=".$row['extension_uuid']."'" : null; echo "\n"; if (permission_exists('extension_delete')) { echo " "; $ext_ids[] = 'checkbox_'.$row['extension_uuid']; } if ($_GET['show'] == "all" && permission_exists('extension_all')) { echo " \n"; } echo " \n"; echo " \n"; //echo " \n"; echo " \n"; if (permission_exists('extension_registered')) { echo " \n"; } echo " \n"; echo " \n"; echo " \n"; echo "\n"; $c = ($c) ? 0 : 1; } unset($extensions, $row); } if (is_array($extensions)) { echo "\n"; echo " \n"; echo "\n"; } echo "
\n"; if (permission_exists('extension_add')) { if ($_SESSION['limit']['extensions']['numeric'] == '' || ($_SESSION['limit']['extensions']['numeric'] != '' && $total_extensions < $_SESSION['limit']['extensions']['numeric'])) { echo "".$v_link_label_add.""; } } if (permission_exists('extension_delete') && is_array($extensions)) { echo "".$v_link_label_delete.""; } echo "
".$_SESSION['domains'][$row['domain_uuid']]['domain_name'].""; if (permission_exists('extension_edit')) { echo "".$row['extension'].""; } else { echo $row['extension']; } echo "".$row['call_group']." ".$row['voicemail_mail_to']." ".$row['user_context'].""; $extension_number = $row['extension'].'@'.$_SESSION['domain_name']; $extension_number_alias = $row['number_alias']; if(strlen($extension_number_alias) > 0) { $extension_number_alias .= '@'.$_SESSION['domain_name']; } $found_count = 0; foreach ($registrations as $arr) { if( ($extension_number == $arr['user']) || ($extension_number_alias != '' && $extension_number_alias == $arr['user'] ) ){ $found_count++; } } if ($found_count > 0) { echo "Yes ($found_count)"; } else { echo "No"; } unset($extension_number, $extension_number_alias, $found_count, $arr); echo " ".ucwords($row['enabled'])."".$row['description']." "; if (permission_exists('extension_edit')) { echo "$v_link_label_edit"; } if (permission_exists('extension_delete')) { echo "$v_link_label_delete"; } echo "
\n"; if (permission_exists('extension_add')) { if ($_SESSION['limit']['extensions']['numeric'] == '' || ($_SESSION['limit']['extensions']['numeric'] != '' && $total_extensions < $_SESSION['limit']['extensions']['numeric'])) { echo "".$v_link_label_add.""; } } if (permission_exists('extension_delete')) { echo "".$v_link_label_delete.""; } echo "
"; echo "
"; if (strlen($paging_controls) > 0) { echo "
"; echo $paging_controls."\n"; } echo "

".((is_array($extensions)) ? "

" : null); // check or uncheck all checkboxes if (sizeof($ext_ids) > 0) { echo "\n"; } if (is_array($extensions)) { // check all checkboxes key_press('ctrl+a', 'down', 'document', null, null, "check('all');", true); // delete checked key_press('delete', 'up', 'document', array('#search'), $text['confirm-delete'], 'document.forms.frm.submit();', true); } //show the footer require_once "resources/footer.php"; ?>