Portions created by the Initial Developer are Copyright (C) 2008-2025 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ //includes files require_once dirname(__DIR__, 2) . "/resources/require.php"; require_once "resources/check_auth.php"; //check permissions if (permission_exists('call_active_view')) { //access granted } else { echo "access denied"; exit; } //get the session settings $domain_uuid = $_SESSION['domain_uuid']; $domain_name = $_SESSION['domain_name']; $user_uuid = $_SESSION['user_uuid']; $gateways = $_SESSION['gateways']; $user = $_SESSION['user']; //initialize the settings object $settings = new settings(["domain_uuid" => $domain_uuid, "user_uuid" => $user_uuid]); //get the settings $template_name = $settings->get('domain', 'template', 'default'); $theme_button_icon_back = $settings->get('theme', 'button_icon_back', ''); $theme_button_icon_all = $settings->get('theme', 'button_icon_all', ''); //add multi-lingual support $language = new text; $text = $language->get(); //get the HTTP values and set as variables $show = trim($_REQUEST["show"] ?? ''); if ($show != "all") { $show = ''; } //include theme config for button images include_once("themes/".$template_name."/config.php"); //set the command $switch_cmd = 'show channels as json'; //create the event socket connection $event_socket = event_socket::create(); //send the event socket command and get the array if ($event_socket->is_connected()) { $json = trim(event_socket::api($switch_cmd)); $results = json_decode($json, "true"); } //build a new array with domain_name $rows = array(); if (isset($results["rows"])) { foreach ($results["rows"] as $row) { //get the domain if (!empty($row['context']) && $row['context'] != "public" && $row['context'] != "default") { if (substr_count($row['context'], '@') > 0) { $row['domain_name'] = explode('@', $row['context'])[1]; } else { $row['domain_name'] = $row['context']; } } else if (substr_count($row['presence_id'], '@') > 0) { $row['domain_name'] = explode('@', $row['presence_id'])[1]; } //add the row to the array if (($show == 'all' && permission_exists('call_active_all'))) { $rows[] = $row; } elseif ($row['domain_name'] == $domain_name) { $rows[] = $row; } } unset($results); } $num_rows = @sizeof($rows); //if the connnection is available then run it and return the results if (!$event_socket) { $msg = "
".$text['confirm-socket']."
"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
".$text['label-message']."
$msg
\n"; echo "
\n"; return; } //add the style echo "\n"; //show the results echo "
\n"; echo "
\n"; echo "\n"; echo "
\n"; echo " \n"; echo " \n"; if (permission_exists('call_active_hangup')) { echo " \n"; } if (permission_exists('call_active_profile')) { echo " \n"; } echo " \n"; if ($show == 'all') { echo " \n"; } echo " \n"; echo " \n"; echo " \n"; if (permission_exists('call_active_application')) { echo " \n"; } if (permission_exists('call_active_codec')) { echo " \n"; } if (permission_exists('call_active_secure')) { echo " \n"; } if (permission_exists('call_active_eavesdrop') || permission_exists('call_active_hangup')) { echo " \n"; } echo " \n"; if (is_array($rows)) { $x = 0; foreach ($rows as $row) { //set the php variables foreach ($row as $key => $value) { $$key = $value; } //get the sip profile $name_array = explode("/", $name); $sip_profile = $name_array[1]; $sip_uri = $name_array[2]; //get the number //$temp_array = explode("@", $sip_uri); //$tmp_number = $temp_array[0]; //$tmp_number = str_replace("sip:", "", $tmp_number); //remove the '+' because it breaks the call recording $cid_num = str_replace("+", "", $cid_num); //replace gateway uuid with name if (is_array($gateways) && sizeof($gateways) > 0) { foreach ($gateways as $gateway_uuid => $gateway_name) { $application_data = str_replace($gateway_uuid, $gateway_name, $application_data); } } //calculate elapsed seconds $elapsed_seconds = time() - $created_epoch; //convert seconds to hours, minutes, and seconds $hours = floor($elapsed_seconds / 3600); $minutes = floor(($elapsed_seconds % 3600) / 60); $seconds = $elapsed_seconds % 60; //format the elapsed time as HH:MM:SS $elapsed_time = sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds); //reduce too long app data if(strlen($application_data) > 80) { $application_data = substr($application_data, 0, 80) . '...'; } //send the html echo " \n"; if (permission_exists('call_active_hangup')) { echo " \n"; } if (permission_exists('call_active_profile')) { echo " \n"; } //echo " \n"; echo " \n"; if ($show == 'all') { echo " \n"; } //echo " \n"; echo " \n"; echo " \n"; echo " \n"; if (permission_exists('call_active_application')) { echo " \n"; } if (permission_exists('call_active_codec')) { echo " \n"; } if (permission_exists('call_active_secure')) { echo " \n"; } if (permission_exists('call_active_eavesdrop') || permission_exists('call_active_hangup')) { echo " \n"; } echo " \n"; //unset the domain name unset($domain_name); //increment counter $x++; } } echo "
\n"; echo " \n"; echo " ".$text['label-profile']."".$text['label-duration']."".$text['label-domain']."".$text['label-cid-name']."".$text['label-cid-number']."".$text['label-destination']."".$text['label-app']."".$text['label-codec']."".$text['label-secure']." 
\n"; echo " \n"; echo " \n"; echo " ".escape($sip_profile)." ".escape($created)." ".escape($elapsed_time)."".escape($domain_name)." ".escape($tmp_number)." ".escape($cid_name)." ".escape($cid_num)." ".escape($dest)." ".(!empty($application) ? escape($application).":".escape($application_data) : null)." ".escape($read_codec).":".escape($read_rate)." / ".escape($write_codec).":".escape($write_rate)." ".escape($secure)." \n"; //eavesdrop if (permission_exists('call_active_eavesdrop') && $callstate == 'ACTIVE' && !empty($user['extensions']) && !in_array($cid_num, $user['extensions'])) { echo button::create(['type'=>'button','label'=>$text['label-eavesdrop'],'icon'=>'headphones','collapse'=>'hide-lg-dn','onclick'=>"if (confirm('".$text['confirm-eavesdrop']."')) { eavesdrop_call('".escape($cid_num)."','".escape($uuid)."'); } else { this.blur(); return false; }",'onmouseover'=>'refresh_stop()','onmouseout'=>'refresh_start()']); } //hangup if (permission_exists('call_active_hangup')) { echo button::create(['type'=>'button','label'=>$text['label-hangup'],'icon'=>'phone-slash','collapse'=>'hide-lg-dn','onclick'=>"if (confirm('".$text['confirm-hangup']."')) { list_self_check('checkbox_".$x."'); list_action_set('hangup'); list_form_submit('form_list'); } else { this.blur(); return false; }",'onmouseover'=>'refresh_stop()','onmouseout'=>'refresh_start()']); } echo "
\n"; echo "
\n"; echo "\n"; echo "
\n"; ?>