diff --git a/app/access_controls/access_controls.php b/app/access_controls/access_controls.php index ac6f92a527..e049c83431 100644 --- a/app/access_controls/access_controls.php +++ b/app/access_controls/access_controls.php @@ -211,8 +211,12 @@ if (!empty($access_controls) && count($access_controls) > 0) { $x = 0; foreach ($access_controls as $row) { + $list_row_url = ''; if (permission_exists('access_control_edit')) { $list_row_url = "access_control_edit.php?id=".urlencode($row['access_control_uuid']); + if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) { + $list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true'; + } } echo "\n"; if (permission_exists('access_control_add') || permission_exists('access_control_edit') || permission_exists('access_control_delete')) { @@ -254,3 +258,4 @@ require_once "resources/footer.php"; ?> + diff --git a/app/access_controls/resources/classes/access_controls.php b/app/access_controls/resources/classes/access_controls.php index 4d8efd2add..25ca525c01 100644 --- a/app/access_controls/resources/classes/access_controls.php +++ b/app/access_controls/resources/classes/access_controls.php @@ -2,11 +2,7 @@ /** * access controls class - * - * @method null download */ -if (!class_exists('access_controls')) { - class access_controls { /** @@ -264,6 +260,3 @@ if (!class_exists('access_controls')) { } } } - -} -?> diff --git a/app/basic_operator_panel/resources/classes/basic_operator_panel.php b/app/basic_operator_panel/resources/classes/basic_operator_panel.php index 234726fb46..7d1ba52ce2 100644 --- a/app/basic_operator_panel/resources/classes/basic_operator_panel.php +++ b/app/basic_operator_panel/resources/classes/basic_operator_panel.php @@ -27,7 +27,6 @@ /** * Define the operator_panel class */ -if (!class_exists('basic_operator_panel')) { class basic_operator_panel { /** @@ -245,6 +244,3 @@ if (!class_exists('basic_operator_panel')) { return $result; } } -} - -?> diff --git a/app/basic_operator_panel/resources/content.php b/app/basic_operator_panel/resources/content.php index 341a59e444..db831c2a64 100644 --- a/app/basic_operator_panel/resources/content.php +++ b/app/basic_operator_panel/resources/content.php @@ -353,7 +353,7 @@ if (is_array($activity)) { } else { //unregistered extension - if (!empty($_SESSION['operator_panel']['show_unregistered']['boolean']) && $_SESSION['operator_panel']['show_unregistered']['boolean'] == 'true') { + if (filter_var($_SESSION['operator_panel']['show_unregistered']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) { $css_class = "ur_ext"; } else { @@ -551,7 +551,7 @@ if (is_array($activity)) { if (in_array($extension, $_SESSION['user']['extensions'])) { $user_extensions[] = $block; - } elseif (!empty($ext['call_group']) && filter_var($_SESSION['operator_panel']['group_extensions']['boolean'], FILTER_VALIDATE_BOOLEAN)) { + } elseif (!empty($ext['call_group']) && filter_var($_SESSION['operator_panel']['group_extensions']['boolean'] ?? false, FILTER_VALIDATE_BOOLEAN)) { $grouped_extensions[$ext['call_group']][] = $block; } else { $other_extensions[] = $block; diff --git a/app/bridges/bridges.php b/app/bridges/bridges.php index 39946553f0..0b263b3e60 100644 --- a/app/bridges/bridges.php +++ b/app/bridges/bridges.php @@ -47,7 +47,7 @@ $show = $_GET["show"] ?? ''; //set from session variables - $list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false'; + $list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL); //get the http post data if (!empty($_POST['bridges'])) { @@ -126,7 +126,7 @@ $offset = $rows_per_page * $page; //get the list - $sql = "select b.bridge_uuid, d.domain_name, b.bridge_name, b.bridge_destination, bridge_enabled, bridge_description "; + $sql = "select d.domain_uuid, b.bridge_uuid, d.domain_name, b.bridge_name, b.bridge_destination, bridge_enabled, bridge_description "; $sql .= "from v_bridges as b, v_domains as d "; $sql .= "where b.domain_uuid = d.domain_uuid "; if (!empty($show) && $show == "all" && permission_exists('bridge_all')) { @@ -226,7 +226,7 @@ echo th_order_by('bridge_destination', $text['label-bridge_destination'], $order_by, $order); echo th_order_by('bridge_enabled', $text['label-bridge_enabled'], $order_by, $order, null, "class='center'"); echo " ".$text['label-bridge_description']."\n"; - if (permission_exists('bridge_edit') && !empty($list_row_edit_button) && $list_row_edit_button == 'true') { + if (permission_exists('bridge_edit') && $list_row_edit_button) { echo "  \n"; } echo "\n"; @@ -234,8 +234,12 @@ if (!empty($bridges)) { $x = 0; foreach ($bridges as $row) { + $list_row_url = ''; if (permission_exists('bridge_edit')) { $list_row_url = "bridge_edit.php?id=".urlencode($row['bridge_uuid']); + if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) { + $list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true'; + } } echo "\n"; if (permission_exists('bridge_add') || permission_exists('bridge_edit') || permission_exists('bridge_delete')) { @@ -266,7 +270,7 @@ } echo " \n"; echo " ".escape($row['bridge_description'])."\n"; - if (permission_exists('bridge_edit') && !empty($list_row_edit_button) && $list_row_edit_button == 'true') { + if (permission_exists('bridge_edit') && $list_row_edit_button) { echo " \n"; echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo " \n"; diff --git a/app/bridges/resources/classes/bridges.php b/app/bridges/resources/classes/bridges.php index a4fba27236..c9c1170b85 100644 --- a/app/bridges/resources/classes/bridges.php +++ b/app/bridges/resources/classes/bridges.php @@ -25,7 +25,6 @@ */ //define the bridges class -if (!class_exists('bridges')) { class bridges { /** @@ -255,6 +254,3 @@ if (!class_exists('bridges')) { } } -} - -?> \ No newline at end of file diff --git a/app/call_block/call_block.php b/app/call_block/call_block.php index 83484517eb..3d6ae3c27e 100644 --- a/app/call_block/call_block.php +++ b/app/call_block/call_block.php @@ -46,7 +46,7 @@ $show = $_GET["show"] ?? ''; //set from session variables - $list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false'; + $list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL); //get posted data if (!empty($_POST['call_blocks'])) { @@ -301,7 +301,7 @@ echo th_order_by('call_block_enabled', $text['label-enabled'], $order_by, $order, null, "class='center'"); echo th_order_by('insert_date', $text['label-date-added'], $order_by, $order, null, "class='shrink no-wrap'"); echo "".$text['label-description']."\n"; - if (permission_exists('call_block_edit') && $list_row_edit_button == 'true') { + if (permission_exists('call_block_edit') && $list_row_edit_button) { echo "  \n"; } echo "\n"; @@ -309,8 +309,12 @@ if (!empty($result)) { $x = 0; foreach ($result as $row) { + $list_row_url = ''; if (permission_exists('call_block_edit')) { $list_row_url = "call_block_edit.php?id=".urlencode($row['call_block_uuid']); + if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) { + $list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true'; + } } echo "\n"; if (permission_exists('call_block_add') || permission_exists('call_block_edit') || permission_exists('call_block_delete')) { @@ -381,7 +385,7 @@ echo " \n"; echo " ".$row['date_formatted']." ".$row['time_formatted']."\n"; echo " ".escape($row['call_block_description'])."\n"; - if (permission_exists('call_block_edit') && $list_row_edit_button == 'true') { + if (permission_exists('call_block_edit') && $list_row_edit_button) { echo " "; echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo " \n"; @@ -405,3 +409,4 @@ require_once "resources/footer.php"; ?> + diff --git a/app/call_block/call_block_edit.php b/app/call_block/call_block_edit.php index 669a1f6c57..aae31bc257 100644 --- a/app/call_block/call_block_edit.php +++ b/app/call_block/call_block_edit.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-2024 + Portions created by the Initial Developer are Copyright (C) 2008-2025 the Initial Developer. All Rights Reserved. Contributor(s): @@ -557,7 +557,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr } echo "\n"; - echo "\n"; + echo "\n"; echo " ".$text['label-enabled']."\n"; echo "\n"; echo "\n"; @@ -674,6 +674,8 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr echo modal::create(['id'=>'modal-block','type'=>'general','message'=>$text['confirm-block'],'actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_block','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_form_submit('form_list');"])]); } + echo "
\n"; + foreach (['inbound','outbound'] as $direction) { echo "\n"; echo "\n"; @@ -754,6 +756,8 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr echo "
\n"; } + echo "
\n"; + echo "
\n"; echo "\n"; echo "\n"; diff --git a/app/call_block/resources/classes/call_block.php b/app/call_block/resources/classes/call_block.php index 1d1fc8ef2b..1faf6501dc 100644 --- a/app/call_block/resources/classes/call_block.php +++ b/app/call_block/resources/classes/call_block.php @@ -2,10 +2,7 @@ /** * call block class - * - * @method null download */ -if (!class_exists('call_block')) { class call_block { /** @@ -459,6 +456,3 @@ if (!class_exists('call_block')) { } //method } //class -} - -?> \ No newline at end of file diff --git a/app/call_block/resources/dashboard/config.php b/app/call_block/resources/dashboard/config.php index 96bd82114e..fa7d3b2657 100644 --- a/app/call_block/resources/dashboard/config.php +++ b/app/call_block/resources/dashboard/config.php @@ -45,4 +45,3 @@ $array['dashboard'][$x]['dashboard_groups'][$y]['group_name'] = 'user'; $y++; ?> - diff --git a/app/call_broadcast/call_broadcast.php b/app/call_broadcast/call_broadcast.php index 33ad94f238..aac61a9d67 100644 --- a/app/call_broadcast/call_broadcast.php +++ b/app/call_broadcast/call_broadcast.php @@ -47,7 +47,7 @@ $show = $_GET["show"] ?? ''; //set from session variables - $list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false'; + $list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL); //get posted data if (!empty($_POST['call_broadcasts'])) { @@ -219,7 +219,7 @@ echo th_order_by('broadcast_concurrent_limit', $text['label-concurrent-limit'], $order_by, $order); echo th_order_by('broadcast_start_time', $text['label-start_time'], $order_by, $order); echo th_order_by('broadcast_description', $text['label-description'], $order_by, $order); - if (permission_exists('call_broadcast_edit') && $list_row_edit_button == 'true') { + if (permission_exists('call_broadcast_edit') && $list_row_edit_button) { echo "  \n"; } echo "\n"; @@ -227,8 +227,12 @@ if (!empty($result)) { $x = 0; foreach($result as $row) { + $list_row_url = ''; if (permission_exists('call_broadcast_edit')) { $list_row_url = "call_broadcast_edit.php?id=".urlencode($row['call_broadcast_uuid']); + if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) { + $list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true'; + } } echo "\n"; if (permission_exists('call_broadcast_add') || permission_exists('call_broadcast_delete')) { @@ -262,7 +266,7 @@ } echo " ".escape($broadcast_start_time ?? '')."\n"; echo " ".escape($row['broadcast_description'])."\n"; - if (permission_exists('call_broadcast_edit') && $list_row_edit_button == 'true') { + if (permission_exists('call_broadcast_edit') && $list_row_edit_button) { echo " "; echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo " \n"; @@ -286,3 +290,4 @@ require_once "resources/footer.php"; ?> + diff --git a/app/call_broadcast/resources/classes/call_broadcast.php b/app/call_broadcast/resources/classes/call_broadcast.php index 4b3f45cc20..08c7011ddf 100644 --- a/app/call_broadcast/resources/classes/call_broadcast.php +++ b/app/call_broadcast/resources/classes/call_broadcast.php @@ -27,10 +27,7 @@ /** * call broadcast class - * - * @method null download */ -if (!class_exists('call_broadcast')) { class call_broadcast { /** @@ -177,6 +174,3 @@ if (!class_exists('call_broadcast')) { } } -} - -?> \ No newline at end of file diff --git a/app/call_center_active/call_center_queue.php b/app/call_center_active/call_center_queue.php index 3b10afdf77..427a8f1716 100644 --- a/app/call_center_active/call_center_queue.php +++ b/app/call_center_active/call_center_queue.php @@ -128,6 +128,9 @@ $x = 0; foreach($call_center_queues as $row) { $list_row_url = PROJECT_PATH."/app/call_center_active/call_center_active.php?queue_name=".escape($row['call_center_queue_uuid'])."&name=".urlencode(escape($row['queue_name'])); + if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) { + $list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true'; + } echo "\n"; echo " ".escape($row['queue_name'])."\n"; echo " ".escape($row['queue_extension'])."\n"; @@ -159,3 +162,4 @@ require_once "resources/footer.php"; ?> + diff --git a/app/call_centers/app_config.php b/app/call_centers/app_config.php index c4c9879568..f1a46d8a58 100644 --- a/app/call_centers/app_config.php +++ b/app/call_centers/app_config.php @@ -216,7 +216,7 @@ $apps[$x]['default_settings'][$y]['default_setting_category'] = "call_center"; $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "record_name"; $apps[$x]['default_settings'][$y]['default_setting_name'] = "text"; - $apps[$x]['default_settings'][$y]['default_setting_value'] = "\${sip_from_user}-\${sip_to_user}-\${strftime(%Y)}\${strftime(%b)}\${strftime(%d)}.\${record_ext}"; + $apps[$x]['default_settings'][$y]['default_setting_value'] = "\${sip_from_user}-\${sip_to_user}-\${strftime(%Y)}\${strftime(%b)}\${strftime(%d)}-\${uuid}.\${record_ext}"; $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false"; $apps[$x]['default_settings'][$y]['default_setting_description'] = "Custom name for call recording. Options: \${record_ext}, \${sip_from_user}, \${sip_to_user}, \${caller_id_number}, \${uuid}"; $y++; diff --git a/app/call_centers/call_center_agents.php b/app/call_centers/call_center_agents.php index 07951e8535..634b1468ac 100644 --- a/app/call_centers/call_center_agents.php +++ b/app/call_centers/call_center_agents.php @@ -43,7 +43,7 @@ $text = $language->get(); //set from session variables - $list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false'; + $list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL); //get posted data if (!empty($_POST['call_center_agents'])) { @@ -206,7 +206,7 @@ //echo th_order_by('agent_wrap_up_time', $text['label-wrap_up_time'], $order_by, $order); //echo th_order_by('agent_reject_delay_time', $text['label-reject_delay_time'], $order_by, $order); //echo th_order_by('agent_busy_delay_time', $text['label-busy_delay_time'], $order_by, $order); - if (permission_exists('call_center_agent_edit') && $list_row_edit_button == 'true') { + if (permission_exists('call_center_agent_edit') && $list_row_edit_button) { echo "  \n"; } echo "\n"; @@ -214,8 +214,12 @@ if (!empty($result)) { $x = 0; foreach($result as $row) { + $list_row_url = ''; if (permission_exists('call_center_agent_edit')) { $list_row_url = "call_center_agent_edit.php?id=".urlencode($row['call_center_agent_uuid']); + if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) { + $list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true'; + } } echo "\n"; if (permission_exists('call_center_agent_delete')) { @@ -266,7 +270,7 @@ //echo " ".$row[agent_wrap_up_time]."\n"; //echo " ".$row[agent_reject_delay_time]."\n"; //echo " ".$row[agent_busy_delay_time]."\n"; - if (permission_exists('call_center_agent_edit') && $list_row_edit_button == 'true') { + if (permission_exists('call_center_agent_edit') && $list_row_edit_button) { echo " "; echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo " \n"; @@ -290,3 +294,4 @@ require_once "resources/footer.php"; ?> + diff --git a/app/call_centers/call_center_queue_edit.php b/app/call_centers/call_center_queue_edit.php index 3db04a2404..0d02440c7c 100644 --- a/app/call_centers/call_center_queue_edit.php +++ b/app/call_centers/call_center_queue_edit.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-2024 + Portions created by the Initial Developer are Copyright (C) 2008-2025 the Initial Developer. All Rights Reserved. Contributor(s): @@ -42,6 +42,10 @@ $language = new text; $text = $language->get(); +//initialize database and settings + $database = database::new(); + $settings = new settings(['database' => $database, $_SESSION['domain_uuid'] ?? '', $_SESSION['user_uuid'] ?? '']); + //set the defaults $queue_name = ''; $queue_extension = ''; @@ -61,24 +65,24 @@ $action = "add"; } -//get the domain_uuid +//get the domain details $domain_uuid = $_SESSION['domain_uuid']; + $domain_name = $_SESSION['domain_name']; -//initialize the destinations object +//initialize the destination object $destination = new destinations; //get total call center queues count from the database, check limit, if defined if ($action == 'add') { - if (!empty($_SESSION['limit']['call_center_queues']['numeric'])) { + if (!empty($settings->get('limit','call_center_queues', ''))) { $sql = "select count(*) from v_call_center_queues "; $sql .= "where domain_uuid = :domain_uuid "; $parameters['domain_uuid'] = $domain_uuid; - $database = new database; $total_call_center_queues = $database->select($sql, $parameters, 'column'); unset($sql, $parameters); - if ($total_call_center_queues >= $_SESSION['limit']['call_center_queues']['numeric']) { - message::add($text['message-maximum_queues'].' '.$_SESSION['limit']['call_center_queues']['numeric'], 'negative'); + if ($total_call_center_queues >= $settings->get('limit','call_center_queues', 0)) { + message::add($text['message-maximum_queues'].' '.$settings->get('limit','call_center_queues', ''), 'negative'); header('Location: call_center_queues.php'); return; } @@ -124,7 +128,7 @@ $queue_context = $_POST["queue_context"]; } else if ($action == 'add') { - $queue_context = $_SESSION['domain_name']; + $queue_context = $domain_name; } //remove invalid characters @@ -149,7 +153,6 @@ $sql .= "and t.call_center_queue_uuid = q.call_center_queue_uuid; "; $parameters['domain_uuid'] = $domain_uuid; $parameters['call_center_tier_uuid'] = $call_center_tier_uuid; - $database = new database; $tiers = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); @@ -168,7 +171,7 @@ if ($esl->is_connected()) { //callcenter_config tier del [queue_name] [agent_name] if (is_numeric($queue_extension) && is_uuid($call_center_agent_uuid)) { - $cmd = "callcenter_config tier del ".$queue_extension."@".$_SESSION['domain_name']." ".$call_center_agent_uuid; + $cmd = "callcenter_config tier del ".$queue_extension."@".$domain_name." ".$call_center_agent_uuid; $response = event_socket::api($cmd); } } @@ -181,7 +184,6 @@ $p = permissions::new(); $p->add('call_center_tier_delete', 'temp'); - $database = new database; $database->app_name = 'call_centers'; $database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370'; $database->delete($array); @@ -205,7 +207,6 @@ $sql = "select * from v_call_center_queues "; $sql .= "where call_center_queue_uuid = :call_center_queue_uuid "; $parameters['call_center_queue_uuid'] = $call_center_queue_uuid; - $database = new database; $row = $database->select($sql, $parameters, 'row'); if (!empty($row)) { //if (!permission_exists('call_center_queue_domain')) { @@ -298,8 +299,8 @@ //add the recording path if needed if (!empty($queue_greeting)) { - if (file_exists($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$queue_greeting)) { - $queue_greeting_path = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/'.$queue_greeting; + if (file_exists($settings->get('switch','recordings', '').'/'.$domain_name.'/'.$queue_greeting)) { + $queue_greeting_path = $settings->get('switch','recordings', '').'/'.$domain_name.'/'.$queue_greeting; } else { $queue_greeting_path = trim($queue_greeting); @@ -371,8 +372,8 @@ //add definable export variables can be set in default settings $export_variables = 'call_center_queue_uuid,sip_h_Alert-Info'; - if (!empty($_SESSION['call_center']['export_vars'])) { - foreach ($_SESSION['call_center']['export_vars'] as $export_variable) { + if (!empty($settings->get('call_center','export_vars', []))) { + foreach ($settings->get('call_center','export_vars', []) as $export_variable) { $export_variables .= ','.$export_variable; } } @@ -413,7 +414,7 @@ if (!empty($queue_cc_exit_keys)) { $dialplan_xml .= " \n"; } - $dialplan_xml .= " \n"; + $dialplan_xml .= " \n"; if ($destination->valid($queue_timeout_app.':'.$queue_timeout_data)) { $dialplan_xml .= " \n"; } @@ -439,7 +440,6 @@ $p->add("dialplan_edit", "temp"); //save to the data - $database = new database; $database->app_name = 'call_centers'; $database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370'; $database->save($array); @@ -457,7 +457,7 @@ //clear the cache $cache = new cache; - $cache->delete("dialplan:".$_SESSION["domain_name"]); + $cache->delete("dialplan:".$domain_name); //clear the destinations session array if (isset($_SESSION['destinations']['array'])) { @@ -496,19 +496,19 @@ */ //add the agent if (is_numeric($queue_extension) && is_uuid($call_center_agent_uuid) && is_numeric($tier_level) && is_numeric($tier_position)) { - $cmd = "callcenter_config tier add ".$queue_extension."@".$_SESSION["domain_name"]." ".$call_center_agent_uuid." ".$tier_level." ".$tier_position; + $cmd = "callcenter_config tier add ".$queue_extension."@".$domain_name." ".$call_center_agent_uuid." ".$tier_level." ".$tier_position; $response = event_socket::api($cmd); } usleep(200); //agent set level if (is_numeric($queue_extension) && is_numeric($tier_level)) { - $cmd = "callcenter_config tier set level ".$queue_extension."@".$_SESSION["domain_name"]." ".$call_center_agent_uuid." ".$tier_level; + $cmd = "callcenter_config tier set level ".$queue_extension."@".$domain_name." ".$call_center_agent_uuid." ".$tier_level; $response = event_socket::api($cmd); } usleep(200); //agent set position if (is_numeric($queue_extension) && is_numeric($tier_position)) { - $cmd = "callcenter_config tier set position ".$queue_extension."@".$_SESSION["domain_name"]." ".$tier_position; + $cmd = "callcenter_config tier set position ".$queue_extension."@".$domain_name." ".$tier_position; $response = event_socket::api($cmd); } usleep(200); @@ -538,7 +538,6 @@ $sql .= "and call_center_queue_uuid = :call_center_queue_uuid "; $parameters['domain_uuid'] = $domain_uuid; $parameters['call_center_queue_uuid'] = $call_center_queue_uuid; - $database = new database; $call_center_queues = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); @@ -587,17 +586,16 @@ $sql .= "order by tier_level asc, tier_position asc, a.agent_name asc"; $parameters['domain_uuid'] = $domain_uuid; $parameters['call_center_queue_uuid'] = $call_center_queue_uuid ?? null; - $database = new database; $tiers = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); //add an empty row to the tiers array if (count($tiers) == 0) { - $rows = $_SESSION['call_center']['agent_add_rows']['numeric'] ?? null; + $rows = $settings->get('call_center','agent_add_rows', null); $id = 0; } if (count($tiers) > 0) { - $rows = $_SESSION['call_center']['agent_edit_rows']['numeric']; + $rows = $settings->get('call_center','agent_edit_rows', null); $id = count($tiers)+1; } for ($x = 0; $x < $rows; $x++) { @@ -615,7 +613,6 @@ $sql .= "where domain_uuid = :domain_uuid "; $sql .= "order by agent_name asc"; $parameters['domain_uuid'] = $domain_uuid; - $database = new database; $agents = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); @@ -624,6 +621,7 @@ $audio_files[0] = $sounds->get(); unset($sounds); +//get the list of sounds if (permission_exists('call_center_announce_sound')) { $sounds = new sounds; $sounds->sound_types = ['recordings']; @@ -646,7 +644,7 @@ if (empty($queue_tier_rule_no_agent_no_wait)) { $queue_tier_rule_no_agent_no_wait = "true"; } if (empty($queue_discard_abandoned_after)) { $queue_discard_abandoned_after = "900"; } if (empty($queue_abandoned_resume_allowed)) { $queue_abandoned_resume_allowed = "false"; } - if (empty($queue_context)) { $queue_context = $_SESSION['domain_name']; } + if (empty($queue_context)) { $queue_context = $domain_name; } //create token $object = new token; @@ -667,12 +665,8 @@ } //set the record_template - if (empty($_SESSION['call_center']['record_name']['text'])) { - $record_template = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/\${strftime(%Y)}/\${strftime(%b)}/\${strftime(%d)}/\${uuid}.\${record_ext}"; - } - else { - $record_template = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/".$_SESSION['call_center']['record_name']['text']; - } + $record_template = $settings->get('switch','recordings', '')."/".$domain_name."/archive/"; + $record_template .= $settings->get('call_center','record_name', "\${strftime(%Y)}/\${strftime(%b)}/\${strftime(%d)}/\${uuid}.\${record_ext}"); //show the content if (permission_exists('recording_play') || permission_exists('recording_download')) { @@ -757,7 +751,7 @@ } echo "\n"; echo "
\n"; - echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'call_center_queues.php']); + echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$settings->get('theme','button_icon_back', ''),'id'=>'btn_back','style'=>'margin-right: 15px;','link'=>'call_center_queues.php']); if ($action == "update") { if (permission_exists('call_center_wallboard')) { @@ -765,10 +759,10 @@ } //echo button::create(['type'=>'button','label'=>$text['button-stop'],'icon'=>$_SESSION['theme']['button_icon_stop'],'link'=>'cmd.php?cmd=unload&id='.urlencode($call_center_queue_uuid)]); //echo button::create(['type'=>'button','label'=>$text['button-start'],'icon'=>$_SESSION['theme']['button_icon_start'],'link'=>'cmd.php?cmd=load&id='.urlencode($call_center_queue_uuid)]); - echo button::create(['type'=>'button','label'=>$text['button-reload'],'icon'=>$_SESSION['theme']['button_icon_reload'],'link'=>'cmd.php?cmd=reload&id='.urlencode($call_center_queue_uuid)]); - echo button::create(['type'=>'button','label'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'style'=>'margin-right: 15px;','link'=>PROJECT_PATH.'/app/call_center_active/call_center_active.php?queue_name='.urlencode($call_center_queue_uuid)]); + echo button::create(['type'=>'button','label'=>$text['button-reload'],'icon'=>$settings->get('theme','button_icon_reload', ''),'link'=>'cmd.php?cmd=reload&id='.urlencode($call_center_queue_uuid)]); + echo button::create(['type'=>'button','label'=>$text['button-view'],'icon'=>$settings->get('theme','button_icon_view', ''),'style'=>'margin-right: 15px;','link'=>PROJECT_PATH.'/app/call_center_active/call_center_active.php?queue_name='.urlencode($call_center_queue_uuid)]); } - echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save']); + echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$settings->get('theme','button_icon_save', ''),'id'=>'btn_save']); echo "
\n"; echo "
\n"; echo "\n"; @@ -791,7 +785,7 @@ echo " ".$text['label-extension']."\n"; echo "\n"; echo "\n"; - echo " \n"; + echo " get('call_center','extension_range', '')."\">\n"; echo "
\n"; echo $text['description-extension']."\n"; echo "\n"; @@ -818,8 +812,8 @@ if ($key == 'recordings') { if ( !empty($instance_value) && - ($instance_value == $row["value"] || $instance_value == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.$row["value"]) && - file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.pathinfo($row["value"], PATHINFO_BASENAME)) + ($instance_value == $row["value"] || $instance_value == $settings->get('switch','recordings', '')."/".$domain_name.'/'.$row["value"]) && + file_exists($settings->get('switch','recordings', '')."/".$domain_name.'/'.pathinfo($row["value"], PATHINFO_BASENAME)) ) { $selected = "selected='selected'"; $playable = '../recordings/recordings.php?action=download&type=rec&filename='.pathinfo($row["value"], PATHINFO_BASENAME); @@ -862,7 +856,7 @@ case 'ogg' : $mime_type = 'audio/ogg'; break; } echo ""; - echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$_SESSION['theme']['button_icon_play'],'id'=>'recording_button_'.$instance_id,'style'=>'display: '.(!empty($mime_type) ? 'inline' : 'none'),'onclick'=>"recording_play('".$instance_id."', document.getElementById('".$instance_id."').value, document.getElementById('".$instance_id."').options[document.getElementById('".$instance_id."').selectedIndex].parentNode.getAttribute('data-type'))"]); + echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$settings->get('theme','button_icon_play', ''),'id'=>'recording_button_'.$instance_id,'style'=>'display: '.(!empty($mime_type) ? 'inline' : 'none'),'onclick'=>"recording_play('".$instance_id."', document.getElementById('".$instance_id."').value, document.getElementById('".$instance_id."').options[document.getElementById('".$instance_id."').selectedIndex].parentNode.getAttribute('data-type'))"]); unset($playable, $mime_type); } echo "
\n"; @@ -1318,8 +1312,8 @@ if ($key == 'recordings') { if ( !empty($instance_value) && - ($instance_value == $row["value"] || $instance_value == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.$row["value"]) && - file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'].'/'.pathinfo($row["value"], PATHINFO_BASENAME)) + ($instance_value == $row["value"] || $instance_value == $settings->get('switch','recordings', '')."/".$domain_name.'/'.$row["value"]) && + file_exists($settings->get('switch','recordings', '')."/".$domain_name.'/'.pathinfo($row["value"], PATHINFO_BASENAME)) ) { $selected = "selected='selected'"; $playable = '../recordings/recordings.php?action=download&type=rec&filename='.pathinfo($row["value"], PATHINFO_BASENAME); @@ -1362,7 +1356,7 @@ case 'ogg' : $mime_type = 'audio/ogg'; break; } echo ""; - echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$_SESSION['theme']['button_icon_play'],'id'=>'recording_button_'.$instance_id,'style'=>'display: '.(!empty($mime_type) ? 'inline' : 'none'),'onclick'=>"recording_play('".$instance_id."', document.getElementById('".$instance_id."').value, document.getElementById('".$instance_id."').options[document.getElementById('".$instance_id."').selectedIndex].parentNode.getAttribute('data-type'))"]); + echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$settings->get('theme','button_icon_play', ''),'id'=>'recording_button_'.$instance_id,'style'=>'display: '.(!empty($mime_type) ? 'inline' : 'none'),'onclick'=>"recording_play('".$instance_id."', document.getElementById('".$instance_id."').value, document.getElementById('".$instance_id."').options[document.getElementById('".$instance_id."').selectedIndex].parentNode.getAttribute('data-type'))"]); unset($playable, $mime_type); } echo "
\n"; diff --git a/app/call_centers/call_center_queues.php b/app/call_centers/call_center_queues.php index 76d4692f2b..50b9e93ee3 100644 --- a/app/call_centers/call_center_queues.php +++ b/app/call_centers/call_center_queues.php @@ -46,7 +46,7 @@ $show = $_GET["show"] ?? ''; //set from session variables - $list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false'; + $list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL); //get posted data if (!empty($_POST['call_center_queues']) && is_array($_POST['call_center_queues'])) { @@ -219,7 +219,7 @@ //echo th_order_by('queue_abandoned_resume_allowed', $text['label-abandoned_resume_allowed'], $order_by, $order); //echo th_order_by('queue_tier_rule_wait_multiply_level', $text['label-tier_rule_wait_multiply_level'], $order_by, $order); echo th_order_by('queue_description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'"); - if (permission_exists('call_center_queue_edit') && $list_row_edit_button == 'true') { + if (permission_exists('call_center_queue_edit') && $list_row_edit_button) { echo "  \n"; } echo "\n"; @@ -227,8 +227,12 @@ if (!empty($result)) { $x = 0; foreach($result as $row) { + $list_row_url = ''; if (permission_exists('call_center_queue_edit')) { $list_row_url = "call_center_queue_edit.php?id=".urlencode($row['call_center_queue_uuid']); + if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) { + $list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true'; + } } echo "\n"; if (permission_exists('call_center_queue_add') || permission_exists('call_center_queue_delete')) { @@ -269,7 +273,7 @@ //echo " ".escape($row[queue_abandoned_resume_allowed])." \n"; //echo " ".escape($row[queue_tier_rule_wait_multiply_level])." \n"; echo " ".escape($row['queue_description'])."\n"; - if (permission_exists('call_center_queue_edit') && $list_row_edit_button == 'true') { + if (permission_exists('call_center_queue_edit') && $list_row_edit_button) { echo " "; echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo " \n"; @@ -293,3 +297,4 @@ require_once "resources/footer.php"; ?> + diff --git a/app/call_centers/resources/classes/call_center.php b/app/call_centers/resources/classes/call_center.php index f84b6e1014..11ce9dc30e 100644 --- a/app/call_centers/resources/classes/call_center.php +++ b/app/call_centers/resources/classes/call_center.php @@ -26,11 +26,8 @@ /** * cache class provides an abstracted cache - * - * @method string dialplan - builds the dialplan for call center */ //define the call center class - if (!class_exists('call_center')) { class call_center { /** * define the variables @@ -611,7 +608,6 @@ } //method } //class - } /* $o = new call_center; @@ -625,5 +621,3 @@ $c->destination_number = ""; $c->queue_cc_exit_keys = ""; $c->dialplan(); */ - -?> diff --git a/app/call_centers/waveform.php b/app/call_centers/waveform.php index 3408037311..04f03fa01e 100644 --- a/app/call_centers/waveform.php +++ b/app/call_centers/waveform.php @@ -27,8 +27,7 @@ //includes files require_once dirname(__DIR__, 2) . "/resources/require.php"; require_once "resources/check_auth.php"; - require_once "resources/classes/waveform.php"; - + use maximal\audio\Waveform; //check permisions @@ -96,8 +95,8 @@ Waveform::$colorB = !empty($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) : [0,125,232,0.6]; // array rgba, right (b-leg) wave color Waveform::$backgroundColor = !empty($_SESSION['theme']['audio_player_waveform_color_background']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_background']['text']) : [0,0,0,0]; // array rgba, default: transparent Waveform::$axisColor = !empty($_SESSION['theme']['audio_player_waveform_color_axis']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_axis']['text']) : [0,0,0,0.3]; // array rgba - Waveform::$singlePhase = empty($_SESSION['theme']['audio_player_waveform_single_phase']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_phase']['boolean'] !== 'true' ? false : true; // positive phase only - left (a-leg) top, right (b-leg) bottom - Waveform::$singleAxis = empty($_SESSION['theme']['audio_player_waveform_single_axis']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_axis']['boolean'] !== 'false' ? true : false; // combine channels into single axis + Waveform::$singlePhase = filter_var($_SESSION['theme']['audio_player_waveform_single_phase']['boolean'] ?? false, FILTER_VALIDATE_BOOL) ? 'true': 'false'; // positive phase only - left (a-leg) top, right (b-leg) bottom + Waveform::$singleAxis = filter_var($_SESSION['theme']['audio_player_waveform_single_axis']['boolean'] ?? true, FILTER_VALIDATE_BOOL) ? 'true': 'false'; // combine channels into single axis $height = !empty($_SESSION['theme']['audio_player_waveform_height']['text']) && is_numeric(str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text'])) ? 2.2 * (int) str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text']) : null; $wf = $waveform->getWaveform($temp_filename, 1600, $height ?? 180); // input: png filename returns boolean true/false, or 'base64' returns base64 string } diff --git a/app/call_flows/call_flows.php b/app/call_flows/call_flows.php index 90083781d4..85d5182497 100644 --- a/app/call_flows/call_flows.php +++ b/app/call_flows/call_flows.php @@ -46,7 +46,7 @@ $show = $_GET["show"] ?? ''; //set from session variables - $list_row_edit_button = !empty($_SESSION['theme']['list_row_edit_button']['boolean']) ? $_SESSION['theme']['list_row_edit_button']['boolean'] : 'false'; + $list_row_edit_button = filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL); //get search $search = $_REQUEST['search'] ?? null; @@ -235,7 +235,7 @@ } echo th_order_by('call_flow_enabled', $text['label-enabled'], $order_by, $order, null, "class='center'"); echo th_order_by('call_flow_description', $text['label-call_flow_description'], $order_by, $order, null, "class='hide-sm-dn'"); - if (permission_exists('call_flow_edit') && $list_row_edit_button == 'true') { + if (permission_exists('call_flow_edit') && $list_row_edit_button) { echo "  \n"; } echo "\n"; @@ -243,8 +243,12 @@ if (!empty($call_flows)) { $x = 0; foreach ($call_flows as $row) { + $list_row_url = ''; if (permission_exists('call_flow_edit')) { $list_row_url = "call_flow_edit.php?id=".urlencode($row['call_flow_uuid']); + if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) { + $list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true'; + } } echo "\n"; if (permission_exists('call_flow_add') || permission_exists('call_flow_edit') || permission_exists('call_flow_delete')) { @@ -287,7 +291,7 @@ echo escape($row['call_flow_enabled']); } echo " ".escape($row['call_flow_description'])." \n"; - if (permission_exists('call_flow_edit') && $list_row_edit_button == 'true') { + if (permission_exists('call_flow_edit') && $list_row_edit_button) { echo " "; echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo " \n"; @@ -311,3 +315,4 @@ require_once "resources/footer.php"; ?> + diff --git a/app/call_flows/resources/classes/call_flows.php b/app/call_flows/resources/classes/call_flows.php index c9a54f66e2..83a2d4497b 100644 --- a/app/call_flows/resources/classes/call_flows.php +++ b/app/call_flows/resources/classes/call_flows.php @@ -25,7 +25,6 @@ */ //define the call_flows class -if (!class_exists('call_flows')) { class call_flows { /** @@ -410,6 +409,3 @@ if (!class_exists('call_flows')) { } //method } //class -} - -?> diff --git a/app/call_flows/waveform.php b/app/call_flows/waveform.php index 3408037311..8b760cd949 100644 --- a/app/call_flows/waveform.php +++ b/app/call_flows/waveform.php @@ -27,7 +27,6 @@ //includes files require_once dirname(__DIR__, 2) . "/resources/require.php"; require_once "resources/check_auth.php"; - require_once "resources/classes/waveform.php"; use maximal\audio\Waveform; @@ -96,8 +95,8 @@ Waveform::$colorB = !empty($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_b_leg']['text']) : [0,125,232,0.6]; // array rgba, right (b-leg) wave color Waveform::$backgroundColor = !empty($_SESSION['theme']['audio_player_waveform_color_background']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_background']['text']) : [0,0,0,0]; // array rgba, default: transparent Waveform::$axisColor = !empty($_SESSION['theme']['audio_player_waveform_color_axis']['text']) ? color_to_rgba_array($_SESSION['theme']['audio_player_waveform_color_axis']['text']) : [0,0,0,0.3]; // array rgba - Waveform::$singlePhase = empty($_SESSION['theme']['audio_player_waveform_single_phase']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_phase']['boolean'] !== 'true' ? false : true; // positive phase only - left (a-leg) top, right (b-leg) bottom - Waveform::$singleAxis = empty($_SESSION['theme']['audio_player_waveform_single_axis']['boolean']) || $_SESSION['theme']['audio_player_waveform_single_axis']['boolean'] !== 'false' ? true : false; // combine channels into single axis + Waveform::$singlePhase = filter_var($_SESSION['theme']['audio_player_waveform_single_phase']['boolean'] ?? false, FILTER_VALIDATE_BOOL) ? 'true': 'false'; // positive phase only - left (a-leg) top, right (b-leg) bottom + Waveform::$singleAxis = filter_var($_SESSION['theme']['audio_player_waveform_single_axis']['boolean'] ?? true, FILTER_VALIDATE_BOOL) ? 'true': 'false'; // combine channels into single axis $height = !empty($_SESSION['theme']['audio_player_waveform_height']['text']) && is_numeric(str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text'])) ? 2.2 * (int) str_replace('px','',$_SESSION['theme']['audio_player_waveform_height']['text']) : null; $wf = $waveform->getWaveform($temp_filename, 1600, $height ?? 180); // input: png filename returns boolean true/false, or 'base64' returns base64 string } diff --git a/app/call_forward/call_forward.php b/app/call_forward/call_forward.php index cdb478d034..e7de481ed3 100644 --- a/app/call_forward/call_forward.php +++ b/app/call_forward/call_forward.php @@ -241,7 +241,7 @@ } } if ($show !== 'all' && permission_exists('call_forward_all')) { - echo button::create(['type' => 'button', 'label' => $text['button-show_all'], 'icon' => $_SESSION['theme']['button_icon_all'], 'link' => '?show=all' . $param]); + echo button::create(['type' => 'button', 'label' => $text['button-show_all'], 'icon' => $_SESSION['theme']['button_icon_all'], 'link' => '?show=all' . (!empty($params) ? '&'.implode('&', $params) : null)]); } echo "