Portions created by the Initial Developer are Copyright (C) 2008-2019 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"; require_once "resources/paging.php"; //check permissions if (permission_exists('follow_me') || permission_exists('call_forward') || permission_exists('do_not_disturb')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get($_SESSION['domain']['language']['code'], 'app/calls'); //get posted data if (is_array($_POST['extensions'])) { $action = $_POST['action']; $search = $_POST['search']; $extensions = $_POST['extensions']; } //process the http post data by action if ($action != '' && is_array($extensions) && @sizeof($extensions) != 0) { switch ($action) { case 'toggle_call_forward': if (permission_exists('call_forward')) { $obj = new call_forward; $obj->toggle($extensions); } break; case 'toggle_follow_me': if (permission_exists('follow_me')) { $obj = new follow_me; $obj->toggle($extensions); } break; case 'toggle_do_not_disturb': if (permission_exists('do_not_disturb')) { $obj = new do_not_disturb; $obj->toggle($extensions); } break; } header('Location: calls.php'.($search != '' ? '?search='.urlencode($search) : null)); exit; } //get order and order by $order_by = $_GET["order_by"]; $order = $_GET["order"]; //handle search term $search = strtolower($_GET["search"]); if (strlen($search) > 0) { $sql_search = "and ( "; $sql_search .= "extension like :search "; $sql_search .= "or lower(description) like :search "; $sql_search .= ") "; $parameters['search'] = '%'.$search.'%'; } //define select count query $sql = "select count(*) from v_extensions "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and enabled = 'true' "; if (!permission_exists('extension_edit')) { if (is_array($_SESSION['user']['extension']) && count($_SESSION['user']['extension']) > 0) { $sql .= "and ("; $x = 0; foreach($_SESSION['user']['extension'] as $row) { if ($x > 0) { $sql .= "or "; } $sql .= "extension = '".$row['user']."' "; $x++; } $sql .= ")"; } else { //used to hide any results when a user has not been assigned an extension $sql .= "and extension = 'disabled' "; } } $sql .= $sql_search; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $database = new database; $num_rows = $database->select($sql, $parameters, 'column'); //prepare to page the results if ($is_included) { $rows_per_page = 10; } else { $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; } $param = "&search=".$search; $page = $_GET['page']; if (strlen($page) == 0) { $page = 0; $_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 the list $sql = "select * from v_extensions "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and enabled = 'true' "; if (!permission_exists('extension_edit')) { if (is_array($_SESSION['user']['extension']) && count($_SESSION['user']['extension']) > 0) { $sql .= "and ("; $x = 0; foreach($_SESSION['user']['extension'] as $row) { if ($x > 0) { $sql .= "or "; } $sql .= "extension = '".$row['user']."' "; $x++; } $sql .= ")"; } else { //used to hide any results when a user has not been assigned an extension $sql .= "and extension = 'disabled' "; } } $sql .= $sql_search; $sql .= order_by($order_by, $order, 'extension', 'asc'); $sql .= limit_offset($rows_per_page, $offset); $database = new database; $extensions = $database->select($sql, $parameters, 'all'); unset($parameters); //create token $object = new token; $token = $object->create($_SERVER['PHP_SELF']); //include header if (!$is_included) { $document['title'] = $text['title-call_routing']; } require_once "resources/header.php"; //javascript for toggle select box echo "\n"; //show the content if ($is_included) { echo "
\n"; echo "
".$text['header-call_routing']."
\n"; echo "
\n"; if ($num_rows > 10) { echo button::create(['type'=>'button','label'=>$text['button-view_all'],'icon'=>'project-diagram','collapse'=>false,'link'=>PROJECT_PATH.'/app/calls/calls.php']); } echo "
\n"; echo "
\n"; echo "
\n"; } else { echo "
\n"; echo "
".$text['header-call_routing']." (".$num_rows.")
\n"; echo "
\n"; if ($extensions) { echo button::create(['type'=>'button','label'=>$text['button-toggle'],'icon'=>$_SESSION['theme']['button_icon_toggle'],'onclick'=>"toggle_select(); this.blur();"]); } echo ""; echo "\n"; echo "
\n"; echo "
\n"; echo "
\n"; echo $text['description-call_routing']."\n"; echo "

\n"; echo "
\n"; echo "\n"; echo "\n"; } echo "\n"; echo "\n"; if (!$is_included) { echo " \n"; } echo " \n"; if (permission_exists('call_forward')) { echo " \n"; } if (permission_exists('follow_me')) { echo " \n"; } if (permission_exists('do_not_disturb')) { echo " \n"; } echo " \n"; if ($_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { echo " \n"; } echo "\n"; if (is_array($extensions)) { $x = 0; foreach($extensions as $row) { $list_row_url = PROJECT_PATH."/app/calls/call_edit.php?id=".$row['extension_uuid']."&return_url=".urlencode($_SERVER['REQUEST_URI']); echo "\n"; if (!$is_included && $extensions) { echo " \n"; } echo " \n"; if (permission_exists('call_forward')) { //-- inline toggle ----------------- //$button_label = $row['forward_all_enabled'] == 'true' ? ($row['forward_all_destination'] != '' ? escape(format_phone($row['forward_all_destination'])) : '('.$text['label-invalid'].')') : null; //if (!$is_included) { // echo " \n"; //} //else { // echo " "; //} //unset($button_label); //---------------------------------- echo " \n"; } if (permission_exists('follow_me')) { //-- inline toggle ----------------- //get destination count //if ($row['follow_me_enabled'] == 'true' && is_uuid($row['follow_me_uuid'])) { // $sql = "select count(*) from v_follow_me_destinations "; // $sql .= "where follow_me_uuid = :follow_me_uuid "; // $sql .= "and domain_uuid = :domain_uuid "; // $parameters['follow_me_uuid'] = $row['follow_me_uuid']; // $parameters['domain_uuid'] = $_SESSION['domain_uuid']; // $database = new database; // $follow_me_destination_count = $database->select($sql, $parameters, 'column'); // $button_label = $follow_me_destination_count ? $text['label-enabled'].' ('.$follow_me_destination_count.')' : $text['label-invalid']; // unset($sql, $parameters); //} //if (!$is_included) { // echo " \n"; //} //else { // echo " "; //} //unset($button_label); //---------------------------------- //get destination count $follow_me_destination_count = 0; if ($row['follow_me_enabled'] == 'true' && is_uuid($row['follow_me_uuid'])) { $sql = "select count(*) from v_follow_me_destinations "; $sql .= "where follow_me_uuid = :follow_me_uuid "; $sql .= "and domain_uuid = :domain_uuid "; $parameters['follow_me_uuid'] = $row['follow_me_uuid']; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $database = new database; $follow_me_destination_count = $database->select($sql, $parameters, 'column'); unset($sql, $parameters); } echo " \n"; } if (permission_exists('do_not_disturb')) { //-- inline toggle ----------------- //$button_label = $row['do_not_disturb'] == 'true' ? $text['label-enabled'] : null; //if (!$is_included) { // echo " \n"; //} //else { // echo " "; //} //---------------------------------- echo " \n"; } echo " \n"; if ($_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { echo " \n"; } echo "\n"; $x++; } unset($extensions); } echo "
\n"; echo " \n"; echo " ".$text['label-extension']."".$text['label-call-forward']."".$text['label-follow-me']."".$text['label-dnd']."".$text['label-description']." 
\n"; echo " \n"; echo " \n"; echo " ".escape($row['extension'])."".$button_label."\n"; echo $row['forward_all_enabled'] == 'true' ? escape(format_phone($row['forward_all_destination'])) : ' '; echo " ".$button_label."\n"; echo $follow_me_destination_count ? $text['label-enabled'].' ('.$follow_me_destination_count.')' : ' '; echo " ".$button_label."\n"; echo $row['do_not_disturb'] == 'true' ? $text['label-enabled'] : ' '; echo " ".escape($row['description'])." "; echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo "
\n"; if (!$is_included) { echo "
\n"; echo "
".$paging_controls."
\n"; echo "\n"; echo "
\n"; require_once "resources/footer.php"; } ?>