Merge branch 'master' into destinations_use_javascript_for_javascript

This commit is contained in:
FusionPBX 2025-03-13 00:45:18 -06:00 committed by GitHub
commit 490e7cc3c5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
272 changed files with 2942 additions and 2082 deletions

View File

@ -211,8 +211,12 @@
if (!empty($access_controls) && count($access_controls) > 0) { if (!empty($access_controls) && count($access_controls) > 0) {
$x = 0; $x = 0;
foreach ($access_controls as $row) { foreach ($access_controls as $row) {
$list_row_url = '';
if (permission_exists('access_control_edit')) { if (permission_exists('access_control_edit')) {
$list_row_url = "access_control_edit.php?id=".urlencode($row['access_control_uuid']); $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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('access_control_add') || permission_exists('access_control_edit') || permission_exists('access_control_delete')) { 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"; require_once "resources/footer.php";
?> ?>

View File

@ -2,11 +2,7 @@
/** /**
* access controls class * access controls class
*
* @method null download
*/ */
if (!class_exists('access_controls')) {
class access_controls { class access_controls {
/** /**
@ -264,6 +260,3 @@ if (!class_exists('access_controls')) {
} }
} }
} }
}
?>

View File

@ -27,7 +27,6 @@
/** /**
* Define the operator_panel class * Define the operator_panel class
*/ */
if (!class_exists('basic_operator_panel')) {
class basic_operator_panel { class basic_operator_panel {
/** /**
@ -245,6 +244,3 @@ if (!class_exists('basic_operator_panel')) {
return $result; return $result;
} }
} }
}
?>

View File

@ -353,7 +353,7 @@ if (is_array($activity)) {
} }
else { else {
//unregistered extension //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"; $css_class = "ur_ext";
} }
else { else {
@ -551,7 +551,7 @@ if (is_array($activity)) {
if (in_array($extension, $_SESSION['user']['extensions'])) { if (in_array($extension, $_SESSION['user']['extensions'])) {
$user_extensions[] = $block; $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; $grouped_extensions[$ext['call_group']][] = $block;
} else { } else {
$other_extensions[] = $block; $other_extensions[] = $block;

View File

@ -47,7 +47,7 @@
$show = $_GET["show"] ?? ''; $show = $_GET["show"] ?? '';
//set from session variables //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 //get the http post data
if (!empty($_POST['bridges'])) { if (!empty($_POST['bridges'])) {
@ -126,7 +126,7 @@
$offset = $rows_per_page * $page; $offset = $rows_per_page * $page;
//get the list //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 .= "from v_bridges as b, v_domains as d ";
$sql .= "where b.domain_uuid = d.domain_uuid "; $sql .= "where b.domain_uuid = d.domain_uuid ";
if (!empty($show) && $show == "all" && permission_exists('bridge_all')) { 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_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 th_order_by('bridge_enabled', $text['label-bridge_enabled'], $order_by, $order, null, "class='center'");
echo " <th class='hide-sm-dn'>".$text['label-bridge_description']."</th>\n"; echo " <th class='hide-sm-dn'>".$text['label-bridge_description']."</th>\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 " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -234,8 +234,12 @@
if (!empty($bridges)) { if (!empty($bridges)) {
$x = 0; $x = 0;
foreach ($bridges as $row) { foreach ($bridges as $row) {
$list_row_url = '';
if (permission_exists('bridge_edit')) { if (permission_exists('bridge_edit')) {
$list_row_url = "bridge_edit.php?id=".urlencode($row['bridge_uuid']); $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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('bridge_add') || permission_exists('bridge_edit') || permission_exists('bridge_delete')) { if (permission_exists('bridge_add') || permission_exists('bridge_edit') || permission_exists('bridge_delete')) {
@ -266,7 +270,7 @@
} }
echo " </td>\n"; echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['bridge_description'])."</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['bridge_description'])."</td>\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 " <td class='action-button'>\n"; echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";

View File

@ -25,7 +25,6 @@
*/ */
//define the bridges class //define the bridges class
if (!class_exists('bridges')) {
class bridges { class bridges {
/** /**
@ -255,6 +254,3 @@ if (!class_exists('bridges')) {
} }
} }
}
?>

View File

@ -46,7 +46,7 @@
$show = $_GET["show"] ?? ''; $show = $_GET["show"] ?? '';
//set from session variables //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 //get posted data
if (!empty($_POST['call_blocks'])) { 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('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 th_order_by('insert_date', $text['label-date-added'], $order_by, $order, null, "class='shrink no-wrap'");
echo "<th class='hide-md-dn pct-20'>".$text['label-description']."</th>\n"; echo "<th class='hide-md-dn pct-20'>".$text['label-description']."</th>\n";
if (permission_exists('call_block_edit') && $list_row_edit_button == 'true') { if (permission_exists('call_block_edit') && $list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -309,8 +309,12 @@
if (!empty($result)) { if (!empty($result)) {
$x = 0; $x = 0;
foreach ($result as $row) { foreach ($result as $row) {
$list_row_url = '';
if (permission_exists('call_block_edit')) { if (permission_exists('call_block_edit')) {
$list_row_url = "call_block_edit.php?id=".urlencode($row['call_block_uuid']); $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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('call_block_add') || permission_exists('call_block_edit') || permission_exists('call_block_delete')) { if (permission_exists('call_block_add') || permission_exists('call_block_edit') || permission_exists('call_block_delete')) {
@ -381,7 +385,7 @@
echo " </td>\n"; echo " </td>\n";
echo " <td class='no-wrap'>".$row['date_formatted']." <span class='hide-sm-dn'>".$row['time_formatted']."</span></td>\n"; echo " <td class='no-wrap'>".$row['date_formatted']." <span class='hide-sm-dn'>".$row['time_formatted']."</span></td>\n";
echo " <td class='description overflow hide-md-dn'>".escape($row['call_block_description'])."</td>\n"; echo " <td class='description overflow hide-md-dn'>".escape($row['call_block_description'])."</td>\n";
if (permission_exists('call_block_edit') && $list_row_edit_button == 'true') { if (permission_exists('call_block_edit') && $list_row_edit_button) {
echo " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -405,3 +409,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -17,7 +17,7 @@
The Initial Developer of the Original Code is The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com> Mark J Crane <markjcrane@fusionpbx.com>
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. the Initial Developer. All Rights Reserved.
Contributor(s): Contributor(s):
@ -557,7 +557,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
} }
echo "<tr>\n"; echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n"; echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-enabled']."\n"; echo " ".$text['label-enabled']."\n";
echo "</td>\n"; echo "</td>\n";
echo "<td class='vtable' align='left'>\n"; echo "<td class='vtable' align='left'>\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 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 "<div class='card'>\n";
foreach (['inbound','outbound'] as $direction) { foreach (['inbound','outbound'] as $direction) {
echo "<table class='list' id='list_".$direction."' ".($direction == 'outbound' ? "style='display: none;'" : null).">\n"; echo "<table class='list' id='list_".$direction."' ".($direction == 'outbound' ? "style='display: none;'" : null).">\n";
echo "<tr class='list-header'>\n"; echo "<tr class='list-header'>\n";
@ -754,6 +756,8 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
echo "</table>\n"; echo "</table>\n";
} }
echo "</div>\n";
echo "<br />\n"; echo "<br />\n";
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n"; echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>\n"; echo "</form>\n";

View File

@ -2,10 +2,7 @@
/** /**
* call block class * call block class
*
* @method null download
*/ */
if (!class_exists('call_block')) {
class call_block { class call_block {
/** /**
@ -459,6 +456,3 @@ if (!class_exists('call_block')) {
} //method } //method
} //class } //class
}
?>

View File

@ -47,7 +47,7 @@
$show = $_GET["show"] ?? ''; $show = $_GET["show"] ?? '';
//set from session variables //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 //get posted data
if (!empty($_POST['call_broadcasts'])) { 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_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_start_time', $text['label-start_time'], $order_by, $order);
echo th_order_by('broadcast_description', $text['label-description'], $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 " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -227,8 +227,12 @@
if (!empty($result)) { if (!empty($result)) {
$x = 0; $x = 0;
foreach($result as $row) { foreach($result as $row) {
$list_row_url = '';
if (permission_exists('call_broadcast_edit')) { if (permission_exists('call_broadcast_edit')) {
$list_row_url = "call_broadcast_edit.php?id=".urlencode($row['call_broadcast_uuid']); $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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('call_broadcast_add') || permission_exists('call_broadcast_delete')) { if (permission_exists('call_broadcast_add') || permission_exists('call_broadcast_delete')) {
@ -262,7 +266,7 @@
} }
echo " <td>".escape($broadcast_start_time ?? '')."</td>\n"; echo " <td>".escape($broadcast_start_time ?? '')."</td>\n";
echo " <td class='description overflow hide-xs'>".escape($row['broadcast_description'])."</td>\n"; echo " <td class='description overflow hide-xs'>".escape($row['broadcast_description'])."</td>\n";
if (permission_exists('call_broadcast_edit') && $list_row_edit_button == 'true') { if (permission_exists('call_broadcast_edit') && $list_row_edit_button) {
echo " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -286,3 +290,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -27,10 +27,7 @@
/** /**
* call broadcast class * call broadcast class
*
* @method null download
*/ */
if (!class_exists('call_broadcast')) {
class call_broadcast { class call_broadcast {
/** /**
@ -177,6 +174,3 @@ if (!class_exists('call_broadcast')) {
} }
} }
}
?>

View File

@ -128,6 +128,9 @@
$x = 0; $x = 0;
foreach($call_center_queues as $row) { 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'])); $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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
echo " <td><a href='".$list_row_url."'>".escape($row['queue_name'])."</a></td>\n"; echo " <td><a href='".$list_row_url."'>".escape($row['queue_name'])."</a></td>\n";
echo " <td>".escape($row['queue_extension'])."</td>\n"; echo " <td>".escape($row['queue_extension'])."</td>\n";
@ -159,3 +162,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -43,7 +43,7 @@
$text = $language->get(); $text = $language->get();
//set from session variables //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 //get posted data
if (!empty($_POST['call_center_agents'])) { 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_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_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); //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 " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -214,8 +214,12 @@
if (!empty($result)) { if (!empty($result)) {
$x = 0; $x = 0;
foreach($result as $row) { foreach($result as $row) {
$list_row_url = '';
if (permission_exists('call_center_agent_edit')) { if (permission_exists('call_center_agent_edit')) {
$list_row_url = "call_center_agent_edit.php?id=".urlencode($row['call_center_agent_uuid']); $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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('call_center_agent_delete')) { if (permission_exists('call_center_agent_delete')) {
@ -266,7 +270,7 @@
//echo " <td>".$row[agent_wrap_up_time]."</td>\n"; //echo " <td>".$row[agent_wrap_up_time]."</td>\n";
//echo " <td>".$row[agent_reject_delay_time]."</td>\n"; //echo " <td>".$row[agent_reject_delay_time]."</td>\n";
//echo " <td>".$row[agent_busy_delay_time]."</td>\n"; //echo " <td>".$row[agent_busy_delay_time]."</td>\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 " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -290,3 +294,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -46,7 +46,7 @@
$show = $_GET["show"] ?? ''; $show = $_GET["show"] ?? '';
//set from session variables //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 //get posted data
if (!empty($_POST['call_center_queues']) && is_array($_POST['call_center_queues'])) { 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_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_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'"); 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 " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -227,8 +227,12 @@
if (!empty($result)) { if (!empty($result)) {
$x = 0; $x = 0;
foreach($result as $row) { foreach($result as $row) {
$list_row_url = '';
if (permission_exists('call_center_queue_edit')) { if (permission_exists('call_center_queue_edit')) {
$list_row_url = "call_center_queue_edit.php?id=".urlencode($row['call_center_queue_uuid']); $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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('call_center_queue_add') || permission_exists('call_center_queue_delete')) { if (permission_exists('call_center_queue_add') || permission_exists('call_center_queue_delete')) {
@ -269,7 +273,7 @@
//echo " <td>".escape($row[queue_abandoned_resume_allowed])."&nbsp;</td>\n"; //echo " <td>".escape($row[queue_abandoned_resume_allowed])."&nbsp;</td>\n";
//echo " <td>".escape($row[queue_tier_rule_wait_multiply_level])."&nbsp;</td>\n"; //echo " <td>".escape($row[queue_tier_rule_wait_multiply_level])."&nbsp;</td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['queue_description'])."</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['queue_description'])."</td>\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 " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -293,3 +297,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -26,11 +26,8 @@
/** /**
* cache class provides an abstracted cache * cache class provides an abstracted cache
*
* @method string dialplan - builds the dialplan for call center
*/ */
//define the call center class //define the call center class
if (!class_exists('call_center')) {
class call_center { class call_center {
/** /**
* define the variables * define the variables
@ -611,7 +608,6 @@
} //method } //method
} //class } //class
}
/* /*
$o = new call_center; $o = new call_center;
@ -625,5 +621,3 @@ $c->destination_number = "";
$c->queue_cc_exit_keys = ""; $c->queue_cc_exit_keys = "";
$c->dialplan(); $c->dialplan();
*/ */
?>

View File

@ -27,8 +27,7 @@
//includes files //includes files
require_once dirname(__DIR__, 2) . "/resources/require.php"; require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php"; require_once "resources/check_auth.php";
require_once "resources/classes/waveform.php";
use maximal\audio\Waveform; use maximal\audio\Waveform;
//check permisions //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::$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::$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::$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::$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 = 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::$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; $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 $wf = $waveform->getWaveform($temp_filename, 1600, $height ?? 180); // input: png filename returns boolean true/false, or 'base64' returns base64 string
} }

View File

@ -46,7 +46,7 @@
$show = $_GET["show"] ?? ''; $show = $_GET["show"] ?? '';
//set from session variables //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 //get search
$search = $_REQUEST['search'] ?? null; $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_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'"); 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 " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -243,8 +243,12 @@
if (!empty($call_flows)) { if (!empty($call_flows)) {
$x = 0; $x = 0;
foreach ($call_flows as $row) { foreach ($call_flows as $row) {
$list_row_url = '';
if (permission_exists('call_flow_edit')) { if (permission_exists('call_flow_edit')) {
$list_row_url = "call_flow_edit.php?id=".urlencode($row['call_flow_uuid']); $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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('call_flow_add') || permission_exists('call_flow_edit') || permission_exists('call_flow_delete')) { 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_enabled']);
} }
echo " <td class='description overflow hide-sm-dn'>".escape($row['call_flow_description'])."&nbsp;</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['call_flow_description'])."&nbsp;</td>\n";
if (permission_exists('call_flow_edit') && $list_row_edit_button == 'true') { if (permission_exists('call_flow_edit') && $list_row_edit_button) {
echo " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -311,3 +315,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -25,7 +25,6 @@
*/ */
//define the call_flows class //define the call_flows class
if (!class_exists('call_flows')) {
class call_flows { class call_flows {
/** /**
@ -410,6 +409,3 @@ if (!class_exists('call_flows')) {
} //method } //method
} //class } //class
}
?>

View File

@ -27,7 +27,6 @@
//includes files //includes files
require_once dirname(__DIR__, 2) . "/resources/require.php"; require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php"; require_once "resources/check_auth.php";
require_once "resources/classes/waveform.php";
use maximal\audio\Waveform; 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::$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::$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::$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::$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 = 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::$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; $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 $wf = $waveform->getWaveform($temp_filename, 1600, $height ?? 180); // input: png filename returns boolean true/false, or 'base64' returns base64 string
} }

View File

@ -241,7 +241,7 @@
} }
} }
if ($show !== 'all' && permission_exists('call_forward_all')) { 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 "<form id='form_search' class='inline' method='get'>\n"; echo "<form id='form_search' class='inline' method='get'>\n";
if ($show == 'all' && permission_exists('call_forward_all')) { if ($show == 'all' && permission_exists('call_forward_all')) {
@ -296,8 +296,8 @@
echo " <th>" . $text['label-dnd'] . "</th>\n"; echo " <th>" . $text['label-dnd'] . "</th>\n";
} }
echo " <th class='" . ($is_included ? 'hide-md-dn' : 'hide-sm-dn') . "'>" . $text['label-description'] . "</th>\n"; echo " <th class='" . ($is_included ? 'hide-md-dn' : 'hide-sm-dn') . "'>" . $text['label-description'] . "</th>\n";
$list_row_edit_button = $_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);
if ( $list_row_edit_button === 'true') { if ($list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -306,6 +306,9 @@
$x = 0; $x = 0;
foreach ($extensions as $row) { foreach ($extensions as $row) {
$list_row_url = PROJECT_PATH . "/app/call_forward/call_forward_edit.php?id=" . $row['extension_uuid'] . "&return_url=" . urlencode($_SERVER['REQUEST_URI']); $list_row_url = PROJECT_PATH . "/app/call_forward/call_forward_edit.php?id=" . $row['extension_uuid'] . "&return_url=" . urlencode($_SERVER['REQUEST_URI']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
echo "<tr class='list-row' href='" . $list_row_url . "'>\n"; echo "<tr class='list-row' href='" . $list_row_url . "'>\n";
if (!$is_included && $extensions) { if (!$is_included && $extensions) {
echo " <td class='checkbox'>\n"; echo " <td class='checkbox'>\n";
@ -399,7 +402,7 @@
echo " </td>\n"; echo " </td>\n";
} }
echo " <td class='description overflow " . ($is_included ? 'hide-md-dn' : 'hide-sm-dn') . "'>" . escape($row['description']) . "&nbsp;</td>\n"; echo " <td class='description overflow " . ($is_included ? 'hide-md-dn' : 'hide-sm-dn') . "'>" . escape($row['description']) . "&nbsp;</td>\n";
if ($list_row_edit_button === 'true') { if ($list_row_edit_button) {
echo " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type' => 'button', 'title' => $text['button-edit'], 'icon' => $_SESSION['theme']['button_icon_edit'], 'link' => $list_row_url]); echo button::create(['type' => 'button', 'title' => $text['button-edit'], 'icon' => $_SESSION['theme']['button_icon_edit'], 'link' => $list_row_url]);
echo " </td>\n"; echo " </td>\n";

View File

@ -341,7 +341,7 @@
*/ */
//send feature event notify to the phone //send feature event notify to the phone
if (!empty($_SESSION['device']['feature_sync']['boolean']) && $_SESSION['device']['feature_sync']['boolean'] == "true") { if (filter_var($_SESSION['device']['feature_sync']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
$ring_count = ceil($call_timeout / 6); $ring_count = ceil($call_timeout / 6);
$feature_event_notify = new feature_event_notify; $feature_event_notify = new feature_event_notify;
$feature_event_notify->domain_name = $_SESSION['domain_name']; $feature_event_notify->domain_name = $_SESSION['domain_name'];
@ -358,7 +358,7 @@
else { else {
$feature_event_notify->forward_all_destination = $forward_all_destination; $feature_event_notify->forward_all_destination = $forward_all_destination;
} }
if ($forward_busy_destination == "") { if ($forward_busy_destination == "") {
$feature_event_notify->forward_busy_destination = "0"; $feature_event_notify->forward_busy_destination = "0";
} }
@ -421,7 +421,6 @@
//synchronize configuration //synchronize configuration
if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) { if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) {
require_once "app/extensions/resources/classes/extension.php";
$ext = new extension; $ext = new extension;
$ext->xml(); $ext->xml();
unset($ext); unset($ext);
@ -504,7 +503,7 @@
} }
//prepare the autocomplete //prepare the autocomplete
if(!empty($_SESSION['follow_me']['follow_me_autocomplete']['boolean']) && $_SESSION['follow_me']['follow_me_autocomplete']['boolean'] == 'true') { if(filter_var($_SESSION['follow_me']['follow_me_autocomplete']['boolean'] ?? false, FILTER_VALIDATE_BOOLEAN)) {
echo "<link rel=\"stylesheet\" href=\"".PROJECT_PATH."/resources/jquery/jquery-ui.min.css\" />\n"; echo "<link rel=\"stylesheet\" href=\"".PROJECT_PATH."/resources/jquery/jquery-ui.min.css\" />\n";
echo "<script src=\"".PROJECT_PATH."/resources/jquery/jquery-ui.min.js\"></script>\n"; echo "<script src=\"".PROJECT_PATH."/resources/jquery/jquery-ui.min.js\"></script>\n";
echo "<script type=\"text/javascript\">\n"; echo "<script type=\"text/javascript\">\n";

View File

@ -227,7 +227,7 @@
$p->delete('extension_edit', 'temp'); $p->delete('extension_edit', 'temp');
//send feature event notify to the phone //send feature event notify to the phone
if (!empty($_SESSION['device']['feature_sync']['boolean']) && $_SESSION['device']['feature_sync']['boolean'] == "true") { if (filter_var($_SESSION['device']['feature_sync']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
foreach ($extensions as $uuid => $extension) { foreach ($extensions as $uuid => $extension) {
$feature_event_notify = new feature_event_notify; $feature_event_notify = new feature_event_notify;
$feature_event_notify->domain_name = $_SESSION['domain_name']; $feature_event_notify->domain_name = $_SESSION['domain_name'];
@ -248,7 +248,6 @@
//synchronize configuration //synchronize configuration
if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) { if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) {
require_once "app/extensions/resources/classes/extension.php";
$ext = new extension; $ext = new extension;
$ext->xml(); $ext->xml();
unset($ext); unset($ext);

View File

@ -240,7 +240,7 @@
$p->delete('extension_edit', 'temp'); $p->delete('extension_edit', 'temp');
//send feature event notify to the phone //send feature event notify to the phone
if (!empty($_SESSION['device']['feature_sync']['boolean']) && $_SESSION['device']['feature_sync']['boolean'] == "true") { if (filter_var($_SESSION['device']['feature_sync']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
foreach ($extensions as $uuid => $extension) { foreach ($extensions as $uuid => $extension) {
$feature_event_notify = new feature_event_notify; $feature_event_notify = new feature_event_notify;
$feature_event_notify->domain_name = $_SESSION['domain_name']; $feature_event_notify->domain_name = $_SESSION['domain_name'];
@ -261,7 +261,6 @@
//synchronize configuration //synchronize configuration
if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) { if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) {
require_once "app/extensions/resources/classes/extension.php";
$ext = new extension; $ext = new extension;
$ext->xml(); $ext->xml();
unset($ext); unset($ext);

View File

@ -405,7 +405,7 @@
$p->delete('follow_me_edit', 'temp'); $p->delete('follow_me_edit', 'temp');
//send feature event notify to the phone //send feature event notify to the phone
if (!empty($_SESSION['device']['feature_sync']['boolean']) && $_SESSION['device']['feature_sync']['boolean'] == "true") { if (filter_var($_SESSION['device']['feature_sync']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
foreach ($extensions as $uuid => $extension) { foreach ($extensions as $uuid => $extension) {
$feature_event_notify = new feature_event_notify; $feature_event_notify = new feature_event_notify;
$feature_event_notify->domain_name = $_SESSION['domain_name']; $feature_event_notify->domain_name = $_SESSION['domain_name'];
@ -426,7 +426,6 @@
//synchronize configuration //synchronize configuration
if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) { if (!empty($_SESSION['switch']['extensions']['dir']) && is_readable($_SESSION['switch']['extensions']['dir'])) {
require_once "app/extensions/resources/classes/extension.php";
$ext = new extension; $ext = new extension;
$ext->xml(); $ext->xml();
unset($ext); unset($ext);

View File

@ -26,10 +26,7 @@
/** /**
* call_recordings class * call_recordings class
*
* @method null download
*/ */
if (!class_exists('call_recordings')) {
class call_recordings { class call_recordings {
/** /**
@ -525,6 +522,3 @@ if (!class_exists('call_recordings')) {
} }
} //class } //class
}
?>

View File

@ -27,7 +27,6 @@
//includes files //includes files
require_once dirname(__DIR__, 2) . "/resources/require.php"; require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php"; require_once "resources/check_auth.php";
require_once "resources/classes/waveform.php";
use maximal\audio\Waveform; use maximal\audio\Waveform;
@ -84,8 +83,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::$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::$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::$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::$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 = 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::$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; $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 $wf = $waveform->getWaveform($temp_filename, 1600, $height ?? 180); // input: png filename returns boolean true/false, or 'base64' returns base64 string
} }

View File

@ -56,5 +56,16 @@
$y++; $y++;
$apps[$x]['permissions'][$y]['name'] = "call_active_all"; $apps[$x]['permissions'][$y]['name'] = "call_active_all";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin"; $apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_active_profile";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_active_application";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_active_codec";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "call_active_secure";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
?> ?>

View File

@ -198,19 +198,25 @@
echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='if (this.checked) { refresh_stop(); } else { refresh_start(); } list_all_toggle();' ".(empty($rows) ? "style='visibility: hidden;'" : null).">\n"; echo " <input type='checkbox' id='checkbox_all' name='checkbox_all' onclick='if (this.checked) { refresh_stop(); } else { refresh_start(); } list_all_toggle();' ".(empty($rows) ? "style='visibility: hidden;'" : null).">\n";
echo " </th>\n"; echo " </th>\n";
} }
echo " <th class='hide-small'>".$text['label-profile']."</th>\n"; if (permission_exists('call_active_profile')) {
//echo" <th>".$text['label-created']."</th>\n"; echo " <th class='hide-small'>".$text['label-profile']."</th>\n";
}
echo " <th>".$text['label-duration']."</th>\n"; echo " <th>".$text['label-duration']."</th>\n";
if ($show == 'all') { if ($show == 'all') {
echo " <th>".$text['label-domain']."</th>\n"; echo " <th>".$text['label-domain']."</th>\n";
} }
//echo " <th>".$text['label-number']."</th>\n";
echo " <th class='hide-small'>".$text['label-cid-name']."</th>\n"; echo " <th class='hide-small'>".$text['label-cid-name']."</th>\n";
echo " <th>".$text['label-cid-number']."</th>\n"; echo " <th>".$text['label-cid-number']."</th>\n";
echo " <th>".$text['label-destination']."</th>\n"; echo " <th>".$text['label-destination']."</th>\n";
echo " <th class='hide-small hide-medium'>".$text['label-app']."</th>\n"; if (permission_exists('call_active_application')) {
echo " <th class='hide-small hide-medium'>".$text['label-codec']."</th>\n"; echo " <th class='hide-small hide-medium'>".$text['label-app']."</th>\n";
echo " <th class='hide-small hide-medium'>".$text['label-secure']."</th>\n"; }
if (permission_exists('call_active_codec')) {
echo " <th class='hide-small hide-medium'>".$text['label-codec']."</th>\n";
}
if (permission_exists('call_active_secure')) {
echo " <th class='hide-small hide-medium'>".$text['label-secure']."</th>\n";
}
if (permission_exists('call_active_eavesdrop') || permission_exists('call_active_hangup')) { if (permission_exists('call_active_eavesdrop') || permission_exists('call_active_hangup')) {
echo " <th>&nbsp;</th>\n"; echo " <th>&nbsp;</th>\n";
} }
@ -269,7 +275,9 @@
echo " <input type='hidden' name='calls[$x][uuid]' value='".escape($uuid)."' />\n"; echo " <input type='hidden' name='calls[$x][uuid]' value='".escape($uuid)."' />\n";
echo " </td>\n"; echo " </td>\n";
} }
echo " <td class='hide-small'>".escape($sip_profile)."&nbsp;</td>\n"; if (permission_exists('call_active_profile')) {
echo " <td class='hide-small'>".escape($sip_profile)."&nbsp;</td>\n";
}
//echo " <td>".escape($created)."&nbsp;</td>\n"; //echo " <td>".escape($created)."&nbsp;</td>\n";
echo " <td>".escape($elapsed_time)."</td>\n"; echo " <td>".escape($elapsed_time)."</td>\n";
if ($show == 'all') { if ($show == 'all') {
@ -279,9 +287,15 @@
echo " <td class='hide-small'>".escape($cid_name)."&nbsp;</td>\n"; echo " <td class='hide-small'>".escape($cid_name)."&nbsp;</td>\n";
echo " <td>".escape($cid_num)."&nbsp;</td>\n"; echo " <td>".escape($cid_num)."&nbsp;</td>\n";
echo " <td>".escape($dest)."&nbsp;</td>\n"; echo " <td>".escape($dest)."&nbsp;</td>\n";
echo " <td class='hide-small hide-medium' style='max-width: 200px; word-wrap: break-word;'>".(!empty($application) ? escape($application).":".escape($application_data) : null)."&nbsp;</td>\n"; if (permission_exists('call_active_application')) {
echo " <td class='hide-small hide-medium'>".escape($read_codec).":".escape($read_rate)." / ".escape($write_codec).":".escape($write_rate)."&nbsp;</td>\n"; echo " <td class='hide-small hide-medium' style='max-width: 200px; word-wrap: break-word;'>".(!empty($application) ? escape($application).":".escape($application_data) : null)."&nbsp;</td>\n";
echo " <td class='hide-small hide-medium'>".escape($secure)."&nbsp;</td>\n"; }
if (permission_exists('call_active_codec')) {
echo " <td class='hide-small hide-medium'>".escape($read_codec).":".escape($read_rate)." / ".escape($write_codec).":".escape($write_rate)."&nbsp;</td>\n";
}
if (permission_exists('call_active_secure')) {
echo " <td class='hide-small hide-medium'>".escape($secure)."&nbsp;</td>\n";
}
if (permission_exists('call_active_eavesdrop') || permission_exists('call_active_hangup')) { if (permission_exists('call_active_eavesdrop') || permission_exists('call_active_hangup')) {
echo " <td class='button right' style='padding-right: 0;'>\n"; echo " <td class='button right' style='padding-right: 0;'>\n";
//eavesdrop //eavesdrop

View File

@ -49,7 +49,7 @@
$show = $_GET["show"] ?? ''; $show = $_GET["show"] ?? '';
//set from session variables //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 //get posted data
if (!empty($_POST['conference_centers'])) { if (!empty($_POST['conference_centers'])) {
@ -221,7 +221,7 @@
echo th_order_by('conference_center_pin_length', $text['label-conference_center_pin_length'], $order_by, $order, null, "class='center shrink'"); echo th_order_by('conference_center_pin_length', $text['label-conference_center_pin_length'], $order_by, $order, null, "class='center shrink'");
echo th_order_by('conference_center_enabled', $text['label-conference_center_enabled'], $order_by, $order, null, "class='center'"); echo th_order_by('conference_center_enabled', $text['label-conference_center_enabled'], $order_by, $order, null, "class='center'");
echo th_order_by('conference_center_description', $text['label-conference_center_description'], $order_by, $order, null, "class='hide-sm-dn'"); echo th_order_by('conference_center_description', $text['label-conference_center_description'], $order_by, $order, null, "class='hide-sm-dn'");
if (permission_exists('conference_center_edit') && $list_row_edit_button == 'true') { if (permission_exists('conference_center_edit') && $list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -229,8 +229,12 @@
if (!empty($conference_centers)) { if (!empty($conference_centers)) {
$x = 0; $x = 0;
foreach ($conference_centers as $row) { foreach ($conference_centers as $row) {
$list_row_url = '';
if (permission_exists('conference_center_edit')) { if (permission_exists('conference_center_edit')) {
$list_row_url = "conference_center_edit.php?id=".$row['conference_center_uuid']; $list_row_url = "conference_center_edit.php?id=".$row['conference_center_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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('conference_center_edit') || permission_exists('conference_center_delete')) { if (permission_exists('conference_center_edit') || permission_exists('conference_center_delete')) {
@ -262,7 +266,7 @@
} }
echo " </td>\n"; echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['conference_center_description'])."&nbsp;</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['conference_center_description'])."&nbsp;</td>\n";
if (permission_exists('conference_center_edit') && $list_row_edit_button == 'true') { if (permission_exists('conference_center_edit') && $list_row_edit_button) {
echo " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -285,3 +289,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -49,7 +49,7 @@
$search = $_GET["search"] ?? null; $search = $_GET["search"] ?? null;
//set from session variables //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 //get the http post data
if (!empty($_POST['conference_rooms'])) { if (!empty($_POST['conference_rooms'])) {
@ -300,7 +300,7 @@
echo th_order_by('enabled', $text['label-enabled'], $order_by, $order, null, "class='center'"); echo th_order_by('enabled', $text['label-enabled'], $order_by, $order, null, "class='center'");
} }
echo th_order_by('description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'"); echo th_order_by('description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'");
if (permission_exists('conference_room_edit') && $list_row_edit_button == 'true') { if (permission_exists('conference_room_edit') && $list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -319,8 +319,12 @@
$participant_pin = substr($participant_pin, 0, 3) ."-". substr($participant_pin, 3, 3) ."-". substr($participant_pin, -3)."\n"; $participant_pin = substr($participant_pin, 0, 3) ."-". substr($participant_pin, 3, 3) ."-". substr($participant_pin, -3)."\n";
} }
$list_row_url = '';
if (permission_exists('conference_room_edit')) { if (permission_exists('conference_room_edit')) {
$list_row_url = "conference_room_edit.php?id=".urlencode($row['conference_room_uuid']); $list_row_url = "conference_room_edit.php?id=".urlencode($row['conference_room_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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('conference_room_add') || permission_exists('conference_room_edit') || permission_exists('conference_room_delete')) { if (permission_exists('conference_room_add') || permission_exists('conference_room_edit') || permission_exists('conference_room_delete')) {
@ -486,7 +490,7 @@
} }
echo " <td class='description overflow hide-sm-dn'>".escape($row['description'])."</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['description'])."</td>\n";
if (permission_exists('conference_room_edit') && $list_row_edit_button == 'true') { if (permission_exists('conference_room_edit') && $list_row_edit_button) {
echo " <td class='action-button'>\n"; echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -508,3 +512,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -45,7 +45,7 @@
$text = $language->get(); $text = $language->get();
//set from session variables //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);
//set variables from the http values //set variables from the http values
$order_by = $_GET["order_by"] ?? '' ? $_GET["order_by"] : 'start_epoch'; $order_by = $_GET["order_by"] ?? '' ? $_GET["order_by"] : 'start_epoch';
@ -152,7 +152,7 @@
echo "<th>".$text['label-time']."</th>\n"; echo "<th>".$text['label-time']."</th>\n";
echo th_order_by('start_epoch', $text['label-start'], $order_by, $order); echo th_order_by('start_epoch', $text['label-start'], $order_by, $order);
echo th_order_by('end_epoch', $text['label-end'], $order_by, $order); echo th_order_by('end_epoch', $text['label-end'], $order_by, $order);
if (permission_exists('conference_session_details') && $list_row_edit_button == 'true') { if (permission_exists('conference_session_details') && $list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -191,7 +191,7 @@
echo " <td>".$time_difference."&nbsp;</td>\n"; echo " <td>".$time_difference."&nbsp;</td>\n";
echo " <td>".$start_date."&nbsp;</td>\n"; echo " <td>".$start_date."&nbsp;</td>\n";
echo " <td>".$end_date."&nbsp;</td>\n"; echo " <td>".$end_date."&nbsp;</td>\n";
if (permission_exists('conference_session_details') && $list_row_edit_button == 'true') { if (permission_exists('conference_session_details') && $list_row_edit_button) {
echo " <td class='action-button'>\n"; echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";

View File

@ -46,7 +46,7 @@
$text = $language->get(); $text = $language->get();
//set from session variables //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 //get the http post data
if (!empty($_POST['conference_sessions'])) { if (!empty($_POST['conference_sessions'])) {
@ -172,7 +172,7 @@
echo th_order_by('profile', $text['label-profile'], $order_by, $order); echo th_order_by('profile', $text['label-profile'], $order_by, $order);
//echo th_order_by('recording', $text['label-recording'], $order_by, $order); //echo th_order_by('recording', $text['label-recording'], $order_by, $order);
echo "<th>".$text['label-tools']."</th>\n"; echo "<th>".$text['label-tools']."</th>\n";
if ($list_row_edit_button == 'true') { if ($list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -232,7 +232,7 @@
echo "</table>\n"; echo "</table>\n";
} }
echo " </td>\n"; echo " </td>\n";
if ($list_row_edit_button == 'true') { if ($list_row_edit_button) {
echo " <td class='action-button'>\n"; echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";

View File

@ -26,7 +26,6 @@ Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
*/ */
//define the conference centers class //define the conference centers class
if (!class_exists('conference_centers')) {
class conference_centers { class conference_centers {
/** /**
@ -800,7 +799,7 @@ if (!class_exists('conference_centers')) {
} //class } //class
}
//example conference center //example conference center
/* /*
@ -814,5 +813,3 @@ if (!class_exists('conference_centers')) {
$result = $conference_center->rooms(); $result = $conference_center->rooms();
print_r($result); print_r($result);
*/ */
?>

View File

@ -27,7 +27,6 @@
//includes files //includes files
require_once dirname(__DIR__, 2) . "/resources/require.php"; require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php"; require_once "resources/check_auth.php";
require_once "resources/classes/waveform.php";
use maximal\audio\Waveform; 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::$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::$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::$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::$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 = 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::$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; $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 $wf = $waveform->getWaveform($temp_filename, 1600, $height ?? 180); // input: png filename returns boolean true/false, or 'base64' returns base64 string
} }

View File

@ -43,7 +43,7 @@
$text = $language->get(); $text = $language->get();
//set from session variables //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 //get the http post data
if (!empty($_POST['conference_control_details'])) { if (!empty($_POST['conference_control_details'])) {
@ -163,7 +163,7 @@
echo th_order_by('control_action', $text['label-control_action'], $order_by, $order, null, null, $param); echo th_order_by('control_action', $text['label-control_action'], $order_by, $order, null, null, $param);
echo th_order_by('control_data', $text['label-control_data'], $order_by, $order, null, "class='pct-50 hide-xs'", $param); echo th_order_by('control_data', $text['label-control_data'], $order_by, $order, null, "class='pct-50 hide-xs'", $param);
echo th_order_by('control_enabled', $text['label-control_enabled'], $order_by, $order, null, "class='center'", $param); echo th_order_by('control_enabled', $text['label-control_enabled'], $order_by, $order, null, "class='center'", $param);
if (permission_exists('conference_control_detail_edit') && $list_row_edit_button == 'true') { if (permission_exists('conference_control_detail_edit') && $list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -200,7 +200,7 @@
echo $text['label-'.$row['control_enabled']]; echo $text['label-'.$row['control_enabled']];
} }
echo " </td>\n"; echo " </td>\n";
if (permission_exists('conference_control_detail_edit') && $list_row_edit_button == 'true') { if (permission_exists('conference_control_detail_edit') && $list_row_edit_button) {
echo " <td class='action-button'>\n"; echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";

View File

@ -43,7 +43,7 @@
$text = $language->get(); $text = $language->get();
//set from session variables //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 //get the http post data
if (!empty($_POST['conference_controls'])) { if (!empty($_POST['conference_controls'])) {
@ -179,7 +179,7 @@
echo th_order_by('control_name', $text['label-control_name'], $order_by, $order); echo th_order_by('control_name', $text['label-control_name'], $order_by, $order);
echo th_order_by('control_enabled', $text['label-control_enabled'], $order_by, $order, null, "class='center shrink'"); echo th_order_by('control_enabled', $text['label-control_enabled'], $order_by, $order, null, "class='center shrink'");
echo " <th class='hide-sm-dn'>".$text['label-control_description']."</th>\n"; echo " <th class='hide-sm-dn'>".$text['label-control_description']."</th>\n";
if (permission_exists('conference_control_edit') && $list_row_edit_button == 'true') { if (permission_exists('conference_control_edit') && $list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -215,7 +215,7 @@
} }
echo " </td>\n"; echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['control_description'])."</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['control_description'])."</td>\n";
if (permission_exists('conference_control_edit') && $list_row_edit_button == 'true') { if (permission_exists('conference_control_edit') && $list_row_edit_button) {
echo " <td class='action-button'>\n"; echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";

View File

@ -26,12 +26,7 @@
/** /**
* conference_controls class * conference_controls class
*
* @method null delete
* @method null toggle
* @method null copy
*/ */
if (!class_exists('conference_controls')) {
class conference_controls { class conference_controls {
/** /**
@ -426,6 +421,3 @@ if (!class_exists('conference_controls')) {
} }
} }
}
?>

View File

@ -43,7 +43,7 @@
$text = $language->get(); $text = $language->get();
//set from session variables //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 //get the http post data
if (!empty($_POST['conference_profile_params'])) { if (!empty($_POST['conference_profile_params'])) {
@ -152,7 +152,7 @@
echo th_order_by('profile_param_value', $text['label-profile_param_value'], $order_by, $order, null, "class='pct-40'", $param); echo th_order_by('profile_param_value', $text['label-profile_param_value'], $order_by, $order, null, "class='pct-40'", $param);
echo th_order_by('profile_param_enabled', $text['label-profile_param_enabled'], $order_by, $order, null, "class='center'", $param); echo th_order_by('profile_param_enabled', $text['label-profile_param_enabled'], $order_by, $order, null, "class='center'", $param);
echo th_order_by('profile_param_description', $text['label-profile_param_description'], $order_by, $order, null, "class='hide-sm-dn'", $param); echo th_order_by('profile_param_description', $text['label-profile_param_description'], $order_by, $order, null, "class='hide-sm-dn'", $param);
if (permission_exists('conference_profile_param_edit') && $list_row_edit_button == 'true') { if (permission_exists('conference_profile_param_edit') && $list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -189,7 +189,7 @@
} }
echo " </td>\n"; echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['profile_param_description'])."&nbsp;</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['profile_param_description'])."&nbsp;</td>\n";
if (permission_exists('conference_profile_param_edit') && $list_row_edit_button == 'true') { if (permission_exists('conference_profile_param_edit') && $list_row_edit_button) {
echo " <td class='action-button'>\n"; echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";

View File

@ -45,7 +45,7 @@
$search = $_GET["search"] ?? ''; $search = $_GET["search"] ?? '';
//set from session variables //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 //get the http post data
if (!empty($_POST['conference_profiles'])) { if (!empty($_POST['conference_profiles'])) {
@ -175,7 +175,7 @@
echo th_order_by('profile_name', $text['label-profile_name'], $order_by, $order); echo th_order_by('profile_name', $text['label-profile_name'], $order_by, $order);
echo th_order_by('profile_enabled', $text['label-profile_enabled'], $order_by, $order, null, "class='center'"); echo th_order_by('profile_enabled', $text['label-profile_enabled'], $order_by, $order, null, "class='center'");
echo " <th class='hide-sm-dn'>".$text['label-profile_description']."</th>\n"; echo " <th class='hide-sm-dn'>".$text['label-profile_description']."</th>\n";
if (permission_exists('conference_profile_edit') && $list_row_edit_button == 'true') { if (permission_exists('conference_profile_edit') && $list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -211,7 +211,7 @@
} }
echo " </td>\n"; echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['profile_description'])."</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['profile_description'])."</td>\n";
if (permission_exists('conference_profile_edit') && $list_row_edit_button == 'true') { if (permission_exists('conference_profile_edit') && $list_row_edit_button) {
echo " <td class='action-button'>\n"; echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";

View File

@ -26,12 +26,7 @@
/** /**
* conference_profiles class * conference_profiles class
*
* @method null delete
* @method null toggle
* @method null copy
*/ */
if (!class_exists('conference_profiles')) {
class conference_profiles { class conference_profiles {
/** /**
@ -432,6 +427,3 @@ if (!class_exists('conference_profiles')) {
} }
} }
}
?>

View File

@ -46,7 +46,7 @@
$show = $_GET["show"] ?? ''; $show = $_GET["show"] ?? '';
//set from session variables //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 //get posted data
if (!empty($_POST['conferences'])) { if (!empty($_POST['conferences'])) {
@ -223,7 +223,7 @@
echo "<th style='text-align: center;'>".$text['label-tools']."</th>\n"; echo "<th style='text-align: center;'>".$text['label-tools']."</th>\n";
echo th_order_by('conference_enabled', $text['table-enabled'], $order_by, $order, null, "class='center'"); echo th_order_by('conference_enabled', $text['table-enabled'], $order_by, $order, null, "class='center'");
echo th_order_by('conference_description', $text['table-description'], $order_by, $order, null, "class='hide-sm-dn'"); echo th_order_by('conference_description', $text['table-description'], $order_by, $order, null, "class='hide-sm-dn'");
if (permission_exists('conference_edit') && $list_row_edit_button == 'true') { if (permission_exists('conference_edit') && $list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -231,8 +231,12 @@
if (!empty($conferences)) { if (!empty($conferences)) {
$x = 0; $x = 0;
foreach($conferences as $row) { foreach($conferences as $row) {
$list_row_url = '';
if (permission_exists('conference_edit')) { if (permission_exists('conference_edit')) {
$list_row_url = "conference_edit.php?id=".urlencode($row['conference_uuid']); $list_row_url = "conference_edit.php?id=".urlencode($row['conference_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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('conference_add') || permission_exists('conference_edit') || permission_exists('conference_delete')) { if (permission_exists('conference_add') || permission_exists('conference_edit') || permission_exists('conference_delete')) {
@ -277,7 +281,7 @@
echo $text['label-'.$row['conference_enabled']]; echo $text['label-'.$row['conference_enabled']];
} }
echo " <td class='description overflow hide-sm-dn'>".escape($row['conference_description'])."&nbsp;</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['conference_description'])."&nbsp;</td>\n";
if (permission_exists('conference_edit') && $list_row_edit_button == 'true') { if (permission_exists('conference_edit') && $list_row_edit_button) {
echo " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -301,3 +305,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -25,7 +25,6 @@
*/ */
//define the conferences class //define the conferences class
if (!class_exists('conferences')) {
class conferences { class conferences {
/** /**
@ -374,6 +373,3 @@ if (!class_exists('conferences')) {
} }
} }
}
?>

View File

@ -144,7 +144,7 @@
echo " <td>".escape($conference_extension)."</td>\n"; echo " <td>".escape($conference_extension)."</td>\n";
echo " <td>".escape($participant_pin)."</td>\n"; echo " <td>".escape($participant_pin)."</td>\n";
echo " <td class='center'>".escape($member_count)."</td>\n"; echo " <td class='center'>".escape($member_count)."</td>\n";
if (permission_exists('conference_interactive_view') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (permission_exists('conference_interactive_view') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";

View File

@ -51,7 +51,7 @@
$order = $_GET["order"] ?? ''; $order = $_GET["order"] ?? '';
//set from session variables //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);
$button_icon_view = !empty($_SESSION['theme']['button_icon_view']) ? $_SESSION['theme']['button_icon_view'] : ''; $button_icon_view = !empty($_SESSION['theme']['button_icon_view']) ? $_SESSION['theme']['button_icon_view'] : '';
//add the user filter and search term //add the user filter and search term
@ -187,7 +187,7 @@
echo th_order_by('transaction_address', $text['label-transaction_address'], $order_by, $order); echo th_order_by('transaction_address', $text['label-transaction_address'], $order_by, $order);
echo th_order_by('transaction_type', $text['label-transaction_type'], $order_by, $order); echo th_order_by('transaction_type', $text['label-transaction_type'], $order_by, $order);
echo th_order_by('transaction_date', $text['label-transaction_date'], $order_by, $order); echo th_order_by('transaction_date', $text['label-transaction_date'], $order_by, $order);
if (permission_exists('database_transaction_edit') && !empty($list_row_edit_button) && $list_row_edit_button == 'true') { if (permission_exists('database_transaction_edit') && $list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -195,8 +195,12 @@
$x = 0; $x = 0;
foreach($transactions as $row) { foreach($transactions as $row) {
if (empty($row['domain_name'])) { $row['domain_name'] = $text['label-global']; } if (empty($row['domain_name'])) { $row['domain_name'] = $text['label-global']; }
$list_row_url = '';
if (permission_exists('database_transaction_edit')) { if (permission_exists('database_transaction_edit')) {
$list_row_url = "database_transaction_edit.php?id=".urlencode($row['database_transaction_uuid']).(!empty($page) ? "&page=".urlencode($page) : null).(!empty($search) ? "&search=".urlencode($search) : null); $list_row_url = "database_transaction_edit.php?id=".urlencode($row['database_transaction_uuid']).(!empty($page) ? "&page=".urlencode($page) : null).(!empty($search) ? "&search=".urlencode($search) : null);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
} }
echo "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
echo " <td>".escape($row['domain_name'])."&nbsp;</td>\n"; echo " <td>".escape($row['domain_name'])."&nbsp;</td>\n";
@ -206,7 +210,7 @@
echo " <td>".escape($row['transaction_address'])."&nbsp;</td>\n"; echo " <td>".escape($row['transaction_address'])."&nbsp;</td>\n";
echo " <td>".escape($row['transaction_type'])."&nbsp;</td>\n"; echo " <td>".escape($row['transaction_type'])."&nbsp;</td>\n";
echo " <td>".escape($row['transaction_date'])."&nbsp;</td>\n"; echo " <td>".escape($row['transaction_date'])."&nbsp;</td>\n";
if (permission_exists('database_transaction_edit') && !empty($list_row_edit_button) && $list_row_edit_button == 'true') { if (permission_exists('database_transaction_edit') && $list_row_edit_button) {
echo " <td class='action-button'>\n"; echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -225,3 +229,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -17,7 +17,7 @@
The Initial Developer of the Original Code is The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com> Mark J Crane <markjcrane@fusionpbx.com>
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. the Initial Developer. All Rights Reserved.
Contributor(s): Contributor(s):
@ -1964,7 +1964,6 @@
echo " ".$text['label-destination_hold_music']."\n"; echo " ".$text['label-destination_hold_music']."\n";
echo "</td>\n"; echo "</td>\n";
echo "<td width=\"70%\" class='vtable' align='left'>\n"; echo "<td width=\"70%\" class='vtable' align='left'>\n";
require_once "app/music_on_hold/resources/classes/switch_music_on_hold.php";
$music_on_hold = new switch_music_on_hold; $music_on_hold = new switch_music_on_hold;
echo $music_on_hold->select('destination_hold_music', $destination_hold_music, null); echo $music_on_hold->select('destination_hold_music', $destination_hold_music, null);
echo " <br />\n"; echo " <br />\n";
@ -2097,7 +2096,7 @@
//enabled //enabled
echo "<tr>\n"; echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n"; echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-destination_enabled']."\n"; echo " ".$text['label-destination_enabled']."\n";
echo "</td>\n"; echo "</td>\n";
echo "<td class='vtable' align='left'>\n"; echo "<td class='vtable' align='left'>\n";

View File

@ -334,7 +334,7 @@
$array["dialplans"][$row_id]["dialplan_xml"] .= "</extension>\n"; $array["dialplans"][$row_id]["dialplan_xml"] .= "</extension>\n";
//dialplan details //dialplan details
if ($_SESSION['destinations']['dialplan_details']['boolean'] == "true") { if (filter_var($_SESSION['destinations']['dialplan_details']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
//check the destination number //check the destination number
$array["dialplans"][$row_id]["dialplan_details"][$y]["domain_uuid"] = $domain_uuid; $array["dialplans"][$row_id]["dialplan_details"][$y]["domain_uuid"] = $domain_uuid;

View File

@ -141,7 +141,7 @@
$order = $_GET["order"] ?? ''; $order = $_GET["order"] ?? '';
//set from session variables //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);
//prepare to page the results //prepare to page the results
$sql = "select count(*) from v_destinations "; $sql = "select count(*) from v_destinations ";
@ -365,7 +365,7 @@
} }
echo th_order_by('destination_enabled', $text['label-destination_enabled'], $order_by, $order, $param); echo th_order_by('destination_enabled', $text['label-destination_enabled'], $order_by, $order, $param);
echo th_order_by('destination_description', $text['label-destination_description'], $order_by, $order, $param, "class='hide-sm-dn'"); echo th_order_by('destination_description', $text['label-destination_description'], $order_by, $order, $param, "class='hide-sm-dn'");
if (permission_exists('destination_edit') && $list_row_edit_button == 'true') { if (permission_exists('destination_edit') && $list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -375,8 +375,12 @@
foreach ($destinations as $row) { foreach ($destinations as $row) {
//create the row link //create the row link
$list_row_url = '';
if (permission_exists('destination_edit')) { if (permission_exists('destination_edit')) {
$list_row_url = "destination_edit.php?id=".urlencode($row['destination_uuid']); $list_row_url = "destination_edit.php?id=".urlencode($row['destination_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
} }
//show the data //show the data
@ -430,9 +434,9 @@
} }
echo " <td>".escape($text['label-'.$row['destination_enabled']])."&nbsp;</td>\n"; echo " <td>".escape($text['label-'.$row['destination_enabled']])."&nbsp;</td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['destination_description'])."&nbsp;</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['destination_description'])."&nbsp;</td>\n";
if (permission_exists('destination_edit') && $list_row_edit_button == 'true') { if (permission_exists('destination_edit') && $list_row_edit_button) {
echo " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$list_row_edit_button,'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -459,3 +463,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -26,9 +26,6 @@
/** /**
* destinations * destinations
*
* @method get_array get the destinations
* @method select build the html select
*/ */
class destinations { class destinations {
@ -446,10 +443,24 @@
$destination_id = str_replace("[", "_", $destination_id); $destination_id = str_replace("[", "_", $destination_id);
//$destination_id = preg_replace('/[^a-zA-Z_,.]/', '', $destination_name); //$destination_id = preg_replace('/[^a-zA-Z_,.]/', '', $destination_name);
//include the javascript contents in the reponse //send request for destinations
$response .= "<script type='text/javascript'>\n"; echo "<script type=\"text/javascript\">\n";
$response .= file_get_contents(dirname(__DIR__) . '/javascript/destinations.js'); echo " function get_destinations(id, destination_type, action, search) {\n";
$response .= "</script>\n"; echo " var xhttp = new XMLHttpRequest();\n";
echo " xhttp.onreadystatechange = function() {\n";
echo " if (this.readyState == 4 && this.status == 200) {\n";
echo " document.getElementById(id).innerHTML = this.responseText;\n";
echo " }\n";
echo " };\n";
echo " if (action) {\n";
echo " xhttp.open(\"GET\", \"/app/destinations/resources/destinations.php?destination_type=\"+destination_type+\"&action=\"+action, true);\n";
echo " }\n";
echo " else {\n";
echo " xhttp.open(\"GET\", \"/app/destinations/resources/destinations.php?destination_type=\"+destination_type, true);\n";
echo " }\n";
echo " xhttp.send();\n";
echo " }\n";
echo "</script>\n";
//get the destinations //get the destinations
$destinations = $this->get($destination_type); $destinations = $this->get($destination_type);
@ -1280,6 +1291,7 @@
} //method } //method
} //class } //class
/* /*
$obj = new destinations; $obj = new destinations;
//$destinations = $obj->destinations; //$destinations = $obj->destinations;

View File

@ -17,7 +17,7 @@
The Initial Developer of the Original Code is The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com> Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2023 Portions created by the Initial Developer are Copyright (C) 2008-2025
the Initial Developer. All Rights Reserved. the Initial Developer. All Rights Reserved.
Contributor(s): Contributor(s):
@ -252,6 +252,7 @@
$x = 0; $x = 0;
foreach ($available_columns as $table_name => $columns) { foreach ($available_columns as $table_name => $columns) {
$table_name_label = ucwords(str_replace(['-','_',],' ', $table_name)); $table_name_label = ucwords(str_replace(['-','_',],' ', $table_name));
echo "<div class='card'>\n";
echo "<div class='category'>\n"; echo "<div class='category'>\n";
echo "<b>".$table_name_label."</b>\n"; echo "<b>".$table_name_label."</b>\n";
echo "<br>\n"; echo "<br>\n";
@ -284,6 +285,7 @@
echo "</table>\n"; echo "</table>\n";
echo "<br>\n"; echo "<br>\n";
echo "</div>\n"; echo "</div>\n";
echo "</div>\n";
} }
} }

View File

@ -17,7 +17,7 @@
The Initial Developer of the Original Code is The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com> Mark J Crane <markjcrane@fusionpbx.com>
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. the Initial Developer. All Rights Reserved.
*/ */
@ -1101,7 +1101,7 @@
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n"; echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n"; echo "<tr>\n";
echo "<td class='vncell' width='30%' valign='top' align='left' nowrap='nowrap'>\n"; echo "<td class='vncellreq' width='30%' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-device_address']."\n"; echo " ".$text['label-device_address']."\n";
echo "</td>\n"; echo "</td>\n";
echo "<td class='vtable' width='70%' align='left'>\n"; echo "<td class='vtable' width='70%' align='left'>\n";
@ -1992,7 +1992,7 @@
if (permission_exists('device_enable')) { if (permission_exists('device_enable')) {
echo "<tr>\n"; echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n"; echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-device_enabled']."\n"; echo " ".$text['label-device_enabled']."\n";
echo "</td>\n"; echo "</td>\n";
echo "<td class='vtable' align='left'>\n"; echo "<td class='vtable' align='left'>\n";

View File

@ -229,7 +229,7 @@
echo th_order_by('device_profile_name', $text['label-device_profile_name'], $order_by, $order); echo th_order_by('device_profile_name', $text['label-device_profile_name'], $order_by, $order);
echo th_order_by('device_profile_enabled', $text['label-device_profile_enabled'], $order_by, $order, null, "class='center'"); echo th_order_by('device_profile_enabled', $text['label-device_profile_enabled'], $order_by, $order, null, "class='center'");
echo th_order_by('device_profile_description', $text['label-device_profile_description'], $order_by, $order, null, "class='hide-xs'"); echo th_order_by('device_profile_description', $text['label-device_profile_description'], $order_by, $order, null, "class='hide-xs'");
if (permission_exists('device_profile_edit') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (permission_exists('device_profile_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -237,8 +237,12 @@
if (is_array($device_profiles) && @sizeof($device_profiles) != 0) { if (is_array($device_profiles) && @sizeof($device_profiles) != 0) {
$x = 0; $x = 0;
foreach($device_profiles as $row) { foreach($device_profiles as $row) {
$list_row_url = '';
if (permission_exists('device_profile_edit')) { if (permission_exists('device_profile_edit')) {
$list_row_url = "device_profile_edit.php?id=".urlencode($row['device_profile_uuid']); $list_row_url = "device_profile_edit.php?id=".urlencode($row['device_profile_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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('device_profile_add') || permission_exists('device_profile_edit') || permission_exists('device_profile_delete')) { if (permission_exists('device_profile_add') || permission_exists('device_profile_edit') || permission_exists('device_profile_delete')) {
@ -274,7 +278,7 @@
} }
echo " </td>\n"; echo " </td>\n";
echo " <td class='description overflow hide-xs'>".escape($row['device_profile_description'])."&nbsp;</td>\n"; echo " <td class='description overflow hide-xs'>".escape($row['device_profile_description'])."&nbsp;</td>\n";
if (permission_exists('device_profile_edit') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (permission_exists('device_profile_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -298,3 +302,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -176,7 +176,7 @@
echo "<th class='hide-sm-dn'>".$text['label-groups']."</th>\n"; echo "<th class='hide-sm-dn'>".$text['label-groups']."</th>\n";
echo th_order_by('enabled', $text['label-enabled'], $order_by, $order, null, "class='center'"); echo th_order_by('enabled', $text['label-enabled'], $order_by, $order, null, "class='center'");
echo th_order_by('description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'"); echo th_order_by('description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'");
if (permission_exists('device_vendor_function_edit') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (permission_exists('device_vendor_function_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -211,8 +211,12 @@
unset ($vendor_function_groups); unset ($vendor_function_groups);
//show the row of data //show the row of data
$list_row_url = '';
if (permission_exists('device_vendor_function_edit')) { if (permission_exists('device_vendor_function_edit')) {
$list_row_url = "device_vendor_function_edit.php?device_vendor_uuid=".urlencode($row['device_vendor_uuid'])."&id=".urlencode($row['device_vendor_function_uuid']); $list_row_url = "device_vendor_function_edit.php?device_vendor_uuid=".urlencode($row['device_vendor_uuid'])."&id=".urlencode($row['device_vendor_function_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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('device_vendor_function_add') || permission_exists('device_vendor_function_edit') || permission_exists('device_vendor_function_delete')) { if (permission_exists('device_vendor_function_add') || permission_exists('device_vendor_function_edit') || permission_exists('device_vendor_function_delete')) {
@ -252,7 +256,7 @@
} }
echo " </td>\n"; echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['description'])."</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['description'])."</td>\n";
if (permission_exists('device_vendor_function_edit') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (permission_exists('device_vendor_function_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>\n"; echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -289,3 +293,4 @@
echo "</script>\n"; echo "</script>\n";
?> ?>

View File

@ -170,7 +170,7 @@
echo th_order_by('name', $text['label-name'], $order_by, $order); echo th_order_by('name', $text['label-name'], $order_by, $order);
echo th_order_by('enabled', $text['label-enabled'], $order_by, $order, null, "class='center'"); echo th_order_by('enabled', $text['label-enabled'], $order_by, $order, null, "class='center'");
echo th_order_by('description', $text['label-description'], $order_by, $order, null, "class='hide-xs'"); echo th_order_by('description', $text['label-description'], $order_by, $order, null, "class='hide-xs'");
if (permission_exists('device_vendor_edit') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (permission_exists('device_vendor_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -178,8 +178,12 @@
if (is_array($result) && @sizeof($result) != 0) { if (is_array($result) && @sizeof($result) != 0) {
$x = 0; $x = 0;
foreach($result as $row) { foreach($result as $row) {
$list_row_url = '';
if (permission_exists('device_vendor_edit')) { if (permission_exists('device_vendor_edit')) {
$list_row_url = "device_vendor_edit.php?id=".urlencode($row['device_vendor_uuid']); $list_row_url = "device_vendor_edit.php?id=".urlencode($row['device_vendor_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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('device_vendor_edit') || permission_exists('device_vendor_delete')) { if (permission_exists('device_vendor_edit') || permission_exists('device_vendor_delete')) {
@ -198,7 +202,7 @@
echo $text['label-'.$row['enabled']]; echo $text['label-'.$row['enabled']];
} }
echo " <td class='description overflow hide-xs'>".escape($row['description'])."&nbsp;</td>\n"; echo " <td class='description overflow hide-xs'>".escape($row['description'])."&nbsp;</td>\n";
if (permission_exists('device_vendor_edit') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (permission_exists('device_vendor_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -222,3 +226,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -397,8 +397,12 @@
} }
} }
$list_row_url = '';
if (permission_exists('device_edit')) { if (permission_exists('device_edit')) {
$list_row_url = "device_edit.php?id=".urlencode($row['device_uuid']); $list_row_url = "device_edit.php?id=".urlencode($row['device_uuid']);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
} }
$device_provisioned_method = ''; $device_provisioned_method = '';
@ -473,3 +477,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -1382,7 +1382,7 @@
//save the array //save the array
$this->database->app_name = $this->app_name; $this->database->app_name = $this->app_name;
$this->databasee->app_uuid = $this->app_uuid; $this->database->app_uuid = $this->app_uuid;
$this->database->save($array); $this->database->save($array);
unset($array); unset($array);

View File

@ -17,7 +17,7 @@
The Initial Developer of the Original Code is The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com> Mark J Crane <markjcrane@fusionpbx.com>
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. the Initial Developer. All Rights Reserved.
Contributor(s): Contributor(s):
@ -318,7 +318,7 @@
$tmp_prefix == $dialplan_expression $tmp_prefix == $dialplan_expression
? $outbound_prefix = "" ? $outbound_prefix = ""
: $outbound_prefix = $tmp_prefix; : $outbound_prefix = $tmp_prefix;
if ($gateway_type == "gateway") { if ($gateway_type == "gateway") {
$dialplan_name = $gateway_name.".".$abbrv; $dialplan_name = $gateway_name.".".$abbrv;
if ($abbrv == "988") { if ($abbrv == "988") {
@ -863,7 +863,7 @@
} }
else { else {
$sql .= "and domain_uuid = :domain_uuid "; $sql .= "and domain_uuid = :domain_uuid ";
} }
$parameters['domain_uuid'] = $domain_uuid; $parameters['domain_uuid'] = $domain_uuid;
$database = new database; $database = new database;
@ -939,6 +939,7 @@ function type_onchange(dialplan_detail_type) {
echo $text['description-outbound-routes']."\n"; echo $text['description-outbound-routes']."\n";
echo "<br /><br />\n"; echo "<br /><br />\n";
echo "<div class='card'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n"; echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n"; echo "<tr>\n";
echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap>\n"; echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap>\n";
@ -1346,17 +1347,18 @@ function type_onchange(dialplan_detail_type) {
echo "</td>\n"; echo "</td>\n";
echo "</tr>\n"; echo "</tr>\n";
echo "</table>"; echo "</table>\n";
echo "<br><br>"; echo "</div>\n";
echo "<br><br>\n";
if (!empty($action) && $action == "update") { if (!empty($action) && $action == "update") {
echo "<input type='hidden' name='dialplan_uuid' value='".escape($dialplan_uuid)."'>\n"; echo "<input type='hidden' name='dialplan_uuid' value='".escape($dialplan_uuid)."'>\n";
} }
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n"; echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
echo "</form>"; echo "</form>\n";
//show the footer //show the footer
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -181,9 +181,9 @@
// load editor preferences/defaults // load editor preferences/defaults
$setting_size = !empty($_SESSION["editor"]["font_size"]["text"]) ? $_SESSION["editor"]["font_size"]["text"] : '12px'; $setting_size = !empty($_SESSION["editor"]["font_size"]["text"]) ? $_SESSION["editor"]["font_size"]["text"] : '12px';
$setting_theme = !empty($_SESSION["editor"]["theme"]["text"]) ? $_SESSION["editor"]["theme"]["text"] : 'cobalt'; $setting_theme = !empty($_SESSION["editor"]["theme"]["text"]) ? $_SESSION["editor"]["theme"]["text"] : 'cobalt';
$setting_invisibles = isset($_SESSION["editor"]["invisibles"]["boolean"]) && $_SESSION["editor"]["invisibles"]["boolean"] != '' ? $_SESSION["editor"]["invisibles"]["boolean"] : 'false'; $setting_invisibles = isset($_SESSION['editor']['invisibles']['text']) ? $_SESSION['editor']['invisibles']["text"] : 'false';
$setting_indenting = isset($_SESSION["editor"]["indent_guides"]["boolean"]) && $_SESSION["editor"]["indent_guides"]["boolean"] != '' ? $_SESSION["editor"]["indent_guides"]["boolean"] : 'false'; $setting_indenting = isset($_SESSION['editor']['indent_guides']['text']) ? $_SESSION['editor']['indent_guides']["text"]: 'false';
$setting_numbering = isset($_SESSION["editor"]["line_numbers"]["boolean"]) && $_SESSION["editor"]["line_numbers"]["boolean"] != '' ? $_SESSION["editor"]["line_numbers"]["boolean"] : 'true'; $setting_numbering = isset($_SESSION['editor']['line_numbers']['text']) ? $_SESSION['editor']['line_numbers']["text"] : 'true';
//create token //create token
$object = new token; $object = new token;

View File

@ -134,15 +134,15 @@
$show = !empty($_GET["show"]) ? $_GET["show"] : ''; $show = !empty($_GET["show"]) ? $_GET["show"] : '';
//set from session variables //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);
$button_icon_add = !empty($_SESSION['theme']['button_icon_add']) ? $_SESSION['theme']['button_icon_add'] : ''; $button_icon_add = $_SESSION['theme']['button_icon_add'] ?? '';
$button_icon_copy = !empty($_SESSION['theme']['button_icon_copy']) ? $_SESSION['theme']['button_icon_copy'] : ''; $button_icon_copy = $_SESSION['theme']['button_icon_copy'] ?? '';
$button_icon_toggle = !empty($_SESSION['theme']['button_icon_toggle']) ? $_SESSION['theme']['button_icon_toggle'] : ''; $button_icon_toggle = $_SESSION['theme']['button_icon_toggle'] ?? '';
$button_icon_all = !empty($_SESSION['theme']['button_icon_all']) ? $_SESSION['theme']['button_icon_all'] : ''; $button_icon_all = $_SESSION['theme']['button_icon_all'] ?? '';
$button_icon_delete = !empty($_SESSION['theme']['button_icon_delete']) ? $_SESSION['theme']['button_icon_delete'] : ''; $button_icon_delete = $_SESSION['theme']['button_icon_delete'] ?? '';
$button_icon_search = !empty($_SESSION['theme']['button_icon_search']) ? $_SESSION['theme']['button_icon_search'] : ''; $button_icon_search = $_SESSION['theme']['button_icon_search'] ?? '';
$button_icon_edit = !empty($_SESSION['theme']['button_icon_edit']) ? $_SESSION['theme']['button_icon_edit'] : ''; $button_icon_edit = $_SESSION['theme']['button_icon_edit'] ?? '';
$button_icon_reset = !empty($_SESSION['theme']['button_icon_reset']) ? $_SESSION['theme']['button_icon_reset'] : ''; $button_icon_reset = $_SESSION['theme']['button_icon_reset'] ?? '';
//get the number of rows in the dialplan //get the number of rows in the dialplan
$sql = "select count(*) from v_dialplans "; $sql = "select count(*) from v_dialplans ";
@ -541,7 +541,7 @@
($app_uuid == "8c914ec3-9fc0-8ab5-4cda-6c9288bdc9a3" && permission_exists('outbound_route_edit')) || ($app_uuid == "8c914ec3-9fc0-8ab5-4cda-6c9288bdc9a3" && permission_exists('outbound_route_edit')) ||
($app_uuid == "16589224-c876-aeb3-f59f-523a1c0801f7" && permission_exists('fifo_edit')) || ($app_uuid == "16589224-c876-aeb3-f59f-523a1c0801f7" && permission_exists('fifo_edit')) ||
($app_uuid == "4b821450-926b-175a-af93-a03c441818b1" && permission_exists('time_condition_edit')) || ($app_uuid == "4b821450-926b-175a-af93-a03c441818b1" && permission_exists('time_condition_edit')) ||
permission_exists('dialplan_edit')) && $list_row_edit_button == 'true' permission_exists('dialplan_edit')) && $list_row_edit_button
) { ) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
@ -551,9 +551,13 @@
$x = 0; $x = 0;
foreach ($dialplans as $row) { foreach ($dialplans as $row) {
$list_row_url = '';
if ($row['app_uuid'] == "4b821450-926b-175a-af93-a03c441818b1") { if ($row['app_uuid'] == "4b821450-926b-175a-af93-a03c441818b1") {
if (permission_exists('time_condition_edit') || permission_exists('dialplan_edit')) { if (permission_exists('time_condition_edit') || permission_exists('dialplan_edit')) {
$list_row_url = PROJECT_PATH."/app/time_conditions/time_condition_edit.php?id=".urlencode($row['dialplan_uuid']).(is_uuid($app_uuid) ? "&app_uuid=".urlencode($app_uuid) : null); $list_row_url = PROJECT_PATH."/app/time_conditions/time_condition_edit.php?id=".urlencode($row['dialplan_uuid']).(is_uuid($app_uuid) ? "&app_uuid=".urlencode($app_uuid) : null);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
} }
} }
else if ( else if (
@ -563,6 +567,9 @@
permission_exists('dialplan_edit') permission_exists('dialplan_edit')
) { ) {
$list_row_url = "dialplan_edit.php?id=".urlencode($row['dialplan_uuid']).(is_uuid($app_uuid) ? "&app_uuid=".urlencode($app_uuid) : null); $list_row_url = "dialplan_edit.php?id=".urlencode($row['dialplan_uuid']).(is_uuid($app_uuid) ? "&app_uuid=".urlencode($app_uuid) : null);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
} }
else { else {
unset($list_row_url); unset($list_row_url);
@ -618,7 +625,7 @@
} }
echo " </td>\n"; echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['dialplan_description'])."&nbsp;</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['dialplan_description'])."&nbsp;</td>\n";
if ($list_row_edit_button == 'true' && ( if ($list_row_edit_button && (
(!is_uuid($app_uuid) && permission_exists('dialplan_edit')) || (!is_uuid($app_uuid) && permission_exists('dialplan_edit')) ||
($row['app_uuid'] == "c03b422e-13a8-bd1b-e42b-b6b9b4d27ce4" && permission_exists('inbound_route_edit')) || ($row['app_uuid'] == "c03b422e-13a8-bd1b-e42b-b6b9b4d27ce4" && permission_exists('inbound_route_edit')) ||
($row['app_uuid'] == "8c914ec3-9fc0-8ab5-4cda-6c9288bdc9a3" && permission_exists('outbound_route_edit')) || ($row['app_uuid'] == "8c914ec3-9fc0-8ab5-4cda-6c9288bdc9a3" && permission_exists('outbound_route_edit')) ||
@ -648,3 +655,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -25,7 +25,6 @@
*/ */
//define the dialplan class //define the dialplan class
if (!class_exists('dialplan')) {
class dialplan { class dialplan {
//variables //variables
@ -1580,6 +1579,3 @@
} //class } //class
}
?>

View File

@ -329,7 +329,7 @@
echo th_order_by('email_retry_count', $text['label-email_retry_count'], $order_by, $order); echo th_order_by('email_retry_count', $text['label-email_retry_count'], $order_by, $order);
//echo th_order_by('email_action_before', $text['label-email_action_before'], $order_by, $order); //echo th_order_by('email_action_before', $text['label-email_action_before'], $order_by, $order);
echo "<th class='hide-md-dn'>".$text['label-email_action_after']."</th>\n"; echo "<th class='hide-md-dn'>".$text['label-email_action_after']."</th>\n";
if (permission_exists('email_queue_edit') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (permission_exists('email_queue_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -337,8 +337,12 @@
if (is_array($email_queue) && @sizeof($email_queue) != 0) { if (is_array($email_queue) && @sizeof($email_queue) != 0) {
$x = 0; $x = 0;
foreach ($email_queue as $row) { foreach ($email_queue as $row) {
$list_row_url = '';
if (permission_exists('email_queue_edit')) { if (permission_exists('email_queue_edit')) {
$list_row_url = "email_queue_edit.php?id=".urlencode($row['email_queue_uuid']); $list_row_url = "email_queue_edit.php?id=".urlencode($row['email_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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('email_queue_add') || permission_exists('email_queue_edit') || permission_exists('email_queue_delete')) { if (permission_exists('email_queue_add') || permission_exists('email_queue_edit') || permission_exists('email_queue_delete')) {
@ -369,7 +373,7 @@
echo " <td>".escape($row['email_retry_count'])."</td>\n"; echo " <td>".escape($row['email_retry_count'])."</td>\n";
//echo " <td>".escape($row['email_action_before'])."</td>\n"; //echo " <td>".escape($row['email_action_before'])."</td>\n";
echo " <td class='hide-md-dn'>".escape($row['email_action_after'])."</td>\n"; echo " <td class='hide-md-dn'>".escape($row['email_action_after'])."</td>\n";
if (permission_exists('email_queue_edit') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (permission_exists('email_queue_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>\n"; echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";

View File

@ -236,9 +236,9 @@
//load editor preferences/defaults //load editor preferences/defaults
$setting_size = !empty($_SESSION["editor"]["font_size"]["text"]) ? $_SESSION["editor"]["font_size"]["text"] : '12px'; $setting_size = !empty($_SESSION["editor"]["font_size"]["text"]) ? $_SESSION["editor"]["font_size"]["text"] : '12px';
$setting_theme = !empty($_SESSION["editor"]["theme"]["text"]) ? $_SESSION["editor"]["theme"]["text"] : 'cobalt'; $setting_theme = !empty($_SESSION["editor"]["theme"]["text"]) ? $_SESSION["editor"]["theme"]["text"] : 'cobalt';
$setting_invisibles = !empty($_SESSION["editor"]["invisibles"]["boolean"]) ? $_SESSION["editor"]["invisibles"]["boolean"] : 'false'; $setting_invisibles = isset($_SESSION['editor']['invisibles']['text']) ? $_SESSION['editor']['invisibles']["text"] : 'false';
$setting_indenting = !empty($_SESSION["editor"]["indent_guides"]["boolean"]) ? $_SESSION["editor"]["indent_guides"]["boolean"] : 'false'; $setting_indenting = isset($_SESSION['editor']['indent_guides']['text']) ? $_SESSION['editor']['indent_guides']["text"]: 'false';
$setting_numbering = !empty($_SESSION["editor"]["line_numbers"]["boolean"]) ? $_SESSION["editor"]["line_numbers"]["boolean"] : 'true'; $setting_numbering = isset($_SESSION['editor']['line_numbers']['text']) ? $_SESSION['editor']['line_numbers']["text"] : 'true';
//create token //create token
$object = new token; $object = new token;
@ -518,7 +518,7 @@
echo "</td>\n"; echo "</td>\n";
echo "</tr>\n"; echo "</tr>\n";
if ($_SESSION['email_queue']['save_response']['boolean'] == 'true') { if (filter_var($_SESSION['email_queue']['save_response']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo "<tr>\n"; echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n"; echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-email_response']."\n"; echo " ".$text['label-email_response']."\n";

View File

@ -2,12 +2,7 @@
/** /**
* email_queue class * email_queue class
*
* @method null delete
* @method null toggle
* @method null copy
*/ */
if (!class_exists('email_queue')) {
class email_queue { class email_queue {
/** /**
@ -225,6 +220,3 @@ if (!class_exists('email_queue')) {
} }
} }
}
?>

View File

@ -11,7 +11,6 @@
//includes files //includes files
require_once "resources/pdo.php"; require_once "resources/pdo.php";
include "resources/classes/permissions.php";
require $_SERVER['DOCUMENT_ROOT']."/app/email_queue/resources/functions/transcribe.php"; require $_SERVER['DOCUMENT_ROOT']."/app/email_queue/resources/functions/transcribe.php";
//increase limits //increase limits

View File

@ -10,7 +10,6 @@
} }
//include files //include files
include "resources/classes/permissions.php";
include_once "resources/phpmailer/class.phpmailer.php"; include_once "resources/phpmailer/class.phpmailer.php";
include_once "resources/phpmailer/class.smtp.php"; include_once "resources/phpmailer/class.smtp.php";
@ -298,7 +297,7 @@
//echo "Body: ".$email_body."\n"; //echo "Body: ".$email_body."\n";
//update the message transcription //update the message transcription
if (isset($voicemail_transcription_enabled) && $voicemail_transcription_enabled == 'true' && isset($transcribe_message)) { if (isset($voicemail_transcription_enabled) && $voicemail_transcription_enabled && isset($transcribe_message)) {
$sql = "update v_voicemail_messages "; $sql = "update v_voicemail_messages ";
$sql .= "set message_transcription = :message_transcription "; $sql .= "set message_transcription = :message_transcription ";
$sql .= "where voicemail_message_uuid = :voicemail_message_uuid; "; $sql .= "where voicemail_message_uuid = :voicemail_message_uuid; ";

View File

@ -9,9 +9,6 @@
exit; exit;
} }
//include files
include "resources/classes/permissions.php";
//increase limits //increase limits
set_time_limit(0); set_time_limit(0);
ini_set('max_execution_time', 0); ini_set('max_execution_time', 0);

View File

@ -162,4 +162,58 @@ $text['label-emergency_event']['zh-cn'] = "事件";
$text['label-emergency_event']['ja-jp'] = "イベント"; $text['label-emergency_event']['ja-jp'] = "イベント";
$text['label-emergency_event']['ko-kr'] = "이벤트"; $text['label-emergency_event']['ko-kr'] = "이벤트";
$text['label-emergency_call_status']['en-us'] = "Call Status";
$text['label-emergency_call_status']['en-gb'] = "Call Status";
$text['label-emergency_call_status']['ar-eg'] = "";
$text['label-emergency_call_status']['de-at'] = "";
$text['label-emergency_call_status']['de-ch'] = "";
$text['label-emergency_call_status']['de-de'] = "";
$text['label-emergency_call_status']['el-gr'] = "";
$text['label-emergency_call_status']['es-cl'] = "";
$text['label-emergency_call_status']['es-mx'] = "";
$text['label-emergency_call_status']['fr-ca'] = "";
$text['label-emergency_call_status']['fr-fr'] = "";
$text['label-emergency_call_status']['he-il'] = "";
$text['label-emergency_call_status']['it-it'] = "";
$text['label-emergency_call_status']['ka-ge'] = "";
$text['label-emergency_call_status']['nl-nl'] = "";
$text['label-emergency_call_status']['pl-pl'] = "";
$text['label-emergency_call_status']['pt-br'] = "";
$text['label-emergency_call_status']['pt-pt'] = "";
$text['label-emergency_call_status']['ro-ro'] = "";
$text['label-emergency_call_status']['ru-ru'] = "";
$text['label-emergency_call_status']['sv-se'] = "";
$text['label-emergency_call_status']['uk-ua'] = "";
$text['label-emergency_call_status']['tr-tr'] = "";
$text['label-emergency_call_status']['zh-cn'] = "";
$text['label-emergency_call_status']['ja-jp'] = "";
$text['label-emergency_call_status']['ko-kr'] = "";
$text['label-recording']['en-us'] = "Recording";
$text['label-recording']['en-gb'] = "Recording";
$text['label-recording']['ar-eg'] = "تسجيل";
$text['label-recording']['de-at'] = "Aufnahme";
$text['label-recording']['de-ch'] = "Aufnahme";
$text['label-recording']['de-de'] = "Aufnahme";
$text['label-recording']['el-gr'] = "Εγγραφή";
$text['label-recording']['es-cl'] = "Grabación";
$text['label-recording']['es-mx'] = "Grabación";
$text['label-recording']['fr-ca'] = "Enregistrement";
$text['label-recording']['fr-fr'] = "Enregistrement";
$text['label-recording']['he-il'] = "הקלטה";
$text['label-recording']['it-it'] = "Registrazione";
$text['label-recording']['ka-ge'] = "ჩანაწერი";
$text['label-recording']['nl-nl'] = "Opname";
$text['label-recording']['pl-pl'] = "Nagranie";
$text['label-recording']['pt-br'] = "Gravação";
$text['label-recording']['pt-pt'] = "Gravação";
$text['label-recording']['ro-ro'] = "Înregistrare";
$text['label-recording']['ru-ru'] = "Запись";
$text['label-recording']['sv-se'] = "Inspelning";
$text['label-recording']['uk-ua'] = "Запис";
$text['label-recording']['tr-tr'] = "Kayıt";
$text['label-recording']['zh-cn'] = "记录";
$text['label-recording']['ja-jp'] = "録音";
$text['label-recording']['ko-kr'] = "녹음";
?> ?>

View File

@ -0,0 +1,48 @@
<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2016-2020
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//includes files
require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php";
//check permisions
if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) {
//access granted
}
else {
echo "access denied";
exit;
}
//download
if (is_uuid($_GET['id'])) {
$obj = new call_recordings;
$obj->recording_uuid = $_GET['id'];
$obj->binary = isset($_GET['binary']) ? true : false;
$obj->download();
}
?>

View File

@ -30,6 +30,14 @@ $database = new database;
$database->app_name = 'emergency_logs'; $database->app_name = 'emergency_logs';
$database->app_uuid = 'de63b1ae-7750-11ee-b3a5-005056a27559'; $database->app_uuid = 'de63b1ae-7750-11ee-b3a5-005056a27559';
//set permissions for CDR details and call recordings
$permission = array();
$permission['xml_cdr_hangup_cause'] = permission_exists('xml_cdr_hangup_cause');
$permission['xml_cdr_status'] = permission_exists('xml_cdr_status');
$permission['xml_cdr_recording'] = permission_exists('xml_cdr_recording');
$permission['xml_cdr_recording_play'] = permission_exists('xml_cdr_recording_play');
$permission['xml_cdr_recording_download'] = permission_exists('xml_cdr_recording_download');
//process the http post data by action //process the http post data by action
if (!empty($action) && !empty($emergency_logs) && is_array($emergency_logs) && @sizeof($emergency_logs) != 0) { if (!empty($action) && !empty($emergency_logs) && is_array($emergency_logs) && @sizeof($emergency_logs) != 0) {
@ -115,31 +123,38 @@ else {
} }
//get the list //get the list
$sql = "select emergency_log_uuid, "; $sql = "select e.emergency_log_uuid, ";
$sql .= "domain_uuid, "; $sql .= "e.domain_uuid, ";
$sql .= "extension, "; $sql .= "e.extension, ";
$sql .= "event, "; $sql .= "e.event, ";
$sql .= "to_char(timezone(:time_zone, insert_date), 'DD Mon YYYY') as date_formatted, "; $sql .= "to_char(timezone(:time_zone, e.insert_date), 'DD Mon YYYY') as date_formatted, ";
$sql .= "to_char(timezone(:time_zone, insert_date), 'HH12:MI:SS am') as time_formatted, "; $sql .= "to_char(timezone(:time_zone, e.insert_date), 'HH12:MI:SS am') as time_formatted, ";
$sql .= "insert_date "; $sql .= "e.insert_date, ";
$sql .= "from v_emergency_logs "; $sql .= "c.status as status, ";
$sql .= "concat(c.record_path, '/', c.record_name) as recording, "; //temp
$sql .= "c.record_path as call_recording_path, ";
$sql .= "c.record_name as call_recording_name ";
$sql .= "from v_emergency_logs e ";
$sql .= "left join v_xml_cdr c ";
$sql .= "on e.emergency_log_uuid = c.xml_cdr_uuid ";
if ($show == 'all') { if ($show == 'all') {
$sql .= "where true "; $sql .= "where true ";
} }
else { else {
$sql .= "where domain_uuid = :domain_uuid "; $sql .= "where e.domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid']; $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
} }
if (!empty($search)) { if (!empty($search)) {
$sql .= "and ( "; $sql .= "and ( ";
$sql .= " lower(event) like :search "; $sql .= " lower(e.event) like :search ";
$sql .= ") "; $sql .= ") ";
$parameters['search'] = '%'.$search.'%'; $parameters['search'] = '%'.$search.'%';
} }
$sql .= "order by insert_date desc "; $sql .= "order by e.insert_date desc ";
$sql .= limit_offset($rows_per_page, $offset); $sql .= limit_offset($rows_per_page, $offset);
$parameters['time_zone'] = $time_zone; $parameters['time_zone'] = $time_zone;
$emergency_logs = $database->select($sql, $parameters ?? null, 'all'); $emergency_logs = $database->select($sql, $parameters ?? null, 'all');
unset($sql, $parameters); unset($sql, $parameters);
//create token //create token
@ -189,10 +204,16 @@ echo "<tr class='list-header'>\n";
if (!empty($show) && $show == 'all' && permission_exists('emergency_logs_view_all')) { if (!empty($show) && $show == 'all' && permission_exists('emergency_logs_view_all')) {
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order); echo th_order_by('domain_name', $text['label-domain'], $order_by, $order);
} }
echo "<th class='left'>".$text['label-emergency_time']."</th>\n";
echo "<th class='left'>".$text['label-emergency_date']."</th>\n"; echo "<th class='left'>".$text['label-emergency_date']."</th>\n";
echo "<th class='left'>".$text['label-emergency_time']."</th>\n";
echo "<th class='left'>".$text['label-emergency_extension']."</th>\n"; echo "<th class='left'>".$text['label-emergency_extension']."</th>\n";
echo "<th class='left'>".$text['label-emergency_event']."</th>\n"; echo "<th class='left'>".$text['label-emergency_event']."</th>\n";
if ($permission['xml_cdr_recording'] && ($permission['xml_cdr_recording_play'] || $permission['xml_cdr_recording_download'])) {
echo "<th class='center'>".$text['label-recording']."</th>\n";
}
if ($permission['xml_cdr_status'] || $permission['xml_cdr_hangup_cause']) {
echo "<th class='left'>".$text['label-emergency_call_status']."</th>\n";
}
echo "</tr>\n"; echo "</tr>\n";
if (!empty($emergency_logs) && is_array($emergency_logs) && @sizeof($emergency_logs) != 0) { if (!empty($emergency_logs) && is_array($emergency_logs) && @sizeof($emergency_logs) != 0) {
@ -202,10 +223,47 @@ if (!empty($emergency_logs) && is_array($emergency_logs) && @sizeof($emergency_l
if (!empty($_GET['show']) && $_GET['show'] == 'all' && permission_exists('emergency_logs_view_all')) { if (!empty($_GET['show']) && $_GET['show'] == 'all' && permission_exists('emergency_logs_view_all')) {
echo " <td>".escape($_SESSION['domains'][$row['domain_uuid']]['domain_name'])."</td>\n"; echo " <td>".escape($_SESSION['domains'][$row['domain_uuid']]['domain_name'])."</td>\n";
} }
echo " <td>".escape($row['time_formatted'])."</td>\n";
echo " <td>".escape($row['date_formatted'])."</td>\n"; echo " <td>".escape($row['date_formatted'])."</td>\n";
echo " <td>".escape($row['time_formatted'])."</td>\n";
echo " <td>".escape($row['extension'])."</td>\n"; echo " <td>".escape($row['extension'])."</td>\n";
echo " <td>".escape($row['event'])."</td>\n"; echo " <td>".escape($row['event'])."</td>\n";
if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) {
echo " <td class='middle button center no-link no-wrap'>";
if ($row['recording'] !== '/') {
if (permission_exists('call_recording_play')) {
$recording_file_ext = pathinfo($row['call_recording_name'], PATHINFO_EXTENSION);
switch ($recording_file_ext) {
case "wav" : $recording_type = "audio/wav"; break;
case "mp3" : $recording_type = "audio/mpeg"; break;
case "ogg" : $recording_type = "audio/ogg"; break;
}
echo "<audio id='recording_audio_".escape($row['emergency_log_uuid'])."' style='display: none;' preload='none' ontimeupdate=\"update_progress('".escape($row['emergency_log_uuid'])."')\" onended=\"recording_reset('".escape($row['emergency_log_uuid'])."');\" src='download.php?id=".urlencode($row['emergency_log_uuid'])."' type='".$recording_type."'></audio>";
echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$_SESSION['theme']['button_icon_play'],'id'=>'recording_button_'.escape($row['emergency_log_uuid']),'onclick'=>"recording_play('".escape($row['emergency_log_uuid'])."')"]);
}
if (permission_exists('call_recording_download')) {
echo button::create(['type'=>'button','title'=>$text['label-download'],'icon'=>$_SESSION['theme']['button_icon_download'],'link'=>'download.php?id='.urlencode($row['emergency_log_uuid']).'&binary']);
}
}
echo " </td>\n";
}
// debug: display file directory and filename of the call recording
/*
if ($permission['xml_cdr_recording'] && ($permission['xml_cdr_recording_play'] || $permission['xml_cdr_recording_download'])) {
if ($row['recording'] !== '/') {
echo "<td>" . escape($row['recording']) . "</td>\n";
}
}
*/
$domain_name = $_SESSION['domains'][$row['domain_uuid']]['domain_name'];
if ($permission['xml_cdr_status'] || $permission['xml_cdr_hangup_cause']) {
if (!empty($_GET['show']) && $_GET['show'] == 'all' && permission_exists('emergency_logs_view_all')) {
echo " <td>" . (isset($row['status']) && $row['status'] !== '' ? "<a href='https://{$domain_name}/app/xml_cdr/xml_cdr_details.php?id=".urlencode($row['emergency_log_uuid'])."&show=all' target='_blank'>".escape($row['status'])."</a>" : '&nbsp;') . "</td>\n";
}
else {
//echo " <td>" . (isset($row['status']) && $row['status'] !== '' ? escape($row['status']) : '') . "</td>\n";
echo " <td>" . (isset($row['status']) && $row['status'] !== '' ? "<a href='https://{$domain_name}/app/xml_cdr/xml_cdr_details.php?id=".urlencode($row['emergency_log_uuid'])."' target='_blank'>".escape($row['status'])."</a>" : '&nbsp;') . "</td>\n";
}
}
echo "</tr>\n"; echo "</tr>\n";
$x++; $x++;
} }

View File

@ -236,7 +236,7 @@
echo th_order_by('extension', $text['label-extension'], $order_by, $order); echo th_order_by('extension', $text['label-extension'], $order_by, $order);
echo "<th class='hide-md-dn'>".$text['label-user_agent']."</th>\n"; echo "<th class='hide-md-dn'>".$text['label-user_agent']."</th>\n";
echo th_order_by('log_status', $text['label-log_status'], $order_by, $order); echo th_order_by('log_status', $text['label-log_status'], $order_by, $order);
if (permission_exists('event_guard_log_edit') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (permission_exists('event_guard_log_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -244,8 +244,12 @@
if (is_array($event_guard_logs) && @sizeof($event_guard_logs) != 0) { if (is_array($event_guard_logs) && @sizeof($event_guard_logs) != 0) {
$x = 0; $x = 0;
foreach ($event_guard_logs as $row) { foreach ($event_guard_logs as $row) {
$list_row_url = '';
if (permission_exists('event_guard_log_edit')) { if (permission_exists('event_guard_log_edit')) {
$list_row_url = "event_guard_log_edit.php?id=".urlencode($row['event_guard_log_uuid']); $list_row_url = "event_guard_log_edit.php?id=".urlencode($row['event_guard_log_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 "<tr class='list-row'>\n"; echo "<tr class='list-row'>\n";
if (permission_exists('event_guard_log_add') || permission_exists('event_guard_log_edit') || permission_exists('event_guard_log_delete')) { if (permission_exists('event_guard_log_add') || permission_exists('event_guard_log_edit') || permission_exists('event_guard_log_delete')) {
@ -273,7 +277,7 @@
echo " <td>".escape($row['extension'])."</td>\n"; echo " <td>".escape($row['extension'])."</td>\n";
echo " <td class='hide-md-dn'>".escape($row['user_agent'])."</td>\n"; echo " <td class='hide-md-dn'>".escape($row['user_agent'])."</td>\n";
echo " <td>".escape($text['label-'.$row['log_status']])."</td>\n"; echo " <td>".escape($text['label-'.$row['log_status']])."</td>\n";
if (permission_exists('event_guard_log_edit') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (permission_exists('event_guard_log_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>\n"; echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";

View File

@ -26,12 +26,7 @@
/** /**
* event_guard_logs class * event_guard_logs class
*
* @method null delete
* @method null toggle
* @method null copy
*/ */
if (!class_exists('event_guard')) {
class event_guard { class event_guard {
/** /**
@ -303,6 +298,3 @@ if (!class_exists('event_guard')) {
} }
} }
}
?>

View File

@ -44,7 +44,7 @@
$id = ''; $id = '';
//set from session variables //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 //get the http post data
if (!empty($_POST['extension_settings'])) { if (!empty($_POST['extension_settings'])) {
@ -272,7 +272,7 @@
echo " <th class='center'>".$text['label-extension_setting_enabled']."</th>\n"; echo " <th class='center'>".$text['label-extension_setting_enabled']."</th>\n";
echo " <th class='hide-sm-dn'>".$text['label-extension_setting_description']."</th>\n"; echo " <th class='hide-sm-dn'>".$text['label-extension_setting_description']."</th>\n";
if (permission_exists('extension_setting_edit') && $list_row_edit_button == 'true') { if (permission_exists('extension_setting_edit') && $list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -305,7 +305,7 @@
} }
echo " </td>\n"; echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['extension_setting_description'])."</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['extension_setting_description'])."</td>\n";
if (permission_exists('extension_setting_edit') && $list_row_edit_button == 'true') { if (permission_exists('extension_setting_edit') && $list_row_edit_button) {
echo " <td class='action-button'>\n"; echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";

View File

@ -26,12 +26,7 @@
/** /**
* extension_settings class * extension_settings class
*
* @method null delete
* @method null toggle
* @method null copy
*/ */
if (!class_exists('extension_settings')) {
class extension_settings { class extension_settings {
/** /**
@ -272,6 +267,3 @@ if (!class_exists('extension_settings')) {
} }
} }
}
?>

View File

@ -2698,32 +2698,32 @@ $text['description-voicemail_password']['zh-cn'] = "在此处输入数字语音
$text['description-voicemail_password']['ja-jp'] = "ここに数値のボイスメール パスワードを入力します。"; $text['description-voicemail_password']['ja-jp'] = "ここに数値のボイスメール パスワードを入力します。";
$text['description-voicemail_password']['ko-kr'] = "여기에 숫자 음성사서함 암호를 입력합니다."; $text['description-voicemail_password']['ko-kr'] = "여기에 숫자 음성사서함 암호를 입력합니다.";
$text['description-voicemail_mail_to']['en-us'] = "Enter the email address to send voicemail to (optional)."; $text['description-voicemail_mail_to']['en-us'] = "Enter the email address to send voicemail to (optional). Multiple addresses may be separated by commas.";
$text['description-voicemail_mail_to']['en-gb'] = "Enter the email address to send voicemail to (optional)."; $text['description-voicemail_mail_to']['en-gb'] = "Enter the email address to send voicemail to (optional). Multiple addresses may be separated by commas.";
$text['description-voicemail_mail_to']['ar-eg'] = "أدخل العنوان الإلكتروني لإرسال البريد الصوتي إلى (اختياري)."; $text['description-voicemail_mail_to']['ar-eg'] = "أدخل عنوان البريد الإلكتروني لإرسال البريد الصوتي إليه (اختياري). يمكن فصل العناوين المتعددة بفواصل.";
$text['description-voicemail_mail_to']['de-at'] = "Geben Sie die Email Adresse an, an die Ihre Mailbox Nachricht gesendet werden soll (optional)."; $text['description-voicemail_mail_to']['de-at'] = "Geben Sie die E-Mail-Adresse ein, an die die Voicemail gesendet werden soll (optional). Mehrere Adressen können durch Kommas getrennt werden.";
$text['description-voicemail_mail_to']['de-ch'] = "Geben Sie die Email Adresse an, an die Ihre Mailbox Nachricht gesendet werden soll (optional)."; $text['description-voicemail_mail_to']['de-ch'] = "Geben Sie die E-Mail-Adresse ein, an die die Voicemail gesendet werden soll (optional). Mehrere Adressen können durch Kommas getrennt werden.";
$text['description-voicemail_mail_to']['de-de'] = "Geben Sie die Email Adresse an, an die Ihre Mailbox Nachricht gesendet werden soll (optional)."; $text['description-voicemail_mail_to']['de-de'] = "Geben Sie die E-Mail-Adresse ein, an die die Voicemail gesendet werden soll (optional). Mehrere Adressen können durch Kommas getrennt werden.";
$text['description-voicemail_mail_to']['el-gr'] = "Εισαγάγετε τη διεύθυνση email στην οποία θα στείλετε αυτόματο τηλεφωνητή (προαιρετικό)."; $text['description-voicemail_mail_to']['el-gr'] = "Εισαγάγετε τη διεύθυνση email για αποστολή του φωνητικού μηνύματος (προαιρετικό). Πολλαπλές διευθύνσεις μπορούν να διαχωριστούν με κόμματα.";
$text['description-voicemail_mail_to']['es-cl'] = "Ingrese una dirección de correo electrónico para enviar el correo de voz (opcional)."; $text['description-voicemail_mail_to']['es-cl'] = "Ingrese la dirección de correo electrónico para enviar el correo de voz (opcional). Se pueden separar múltiples direcciones con comas.";
$text['description-voicemail_mail_to']['es-mx'] = "Ingrese una dirección de correo electrónico para enviar el correo de voz (opcional)."; $text['description-voicemail_mail_to']['es-mx'] = "Ingrese la dirección de correo electrónico para enviar el correo de voz (opcional). Se pueden separar múltiples direcciones con comas.";
$text['description-voicemail_mail_to']['fr-ca'] = "Insérer le courriel où sera envoyé le message de notification (optionnel)."; $text['description-voicemail_mail_to']['fr-ca'] = "Entrez l'adresse e-mail à laquelle envoyer la messagerie vocale (facultatif). Plusieurs adresses peuvent être séparées par des virgules.";
$text['description-voicemail_mail_to']['fr-fr'] = "Insérer le courriel où sera envoyé le message de notification (optionnel)."; $text['description-voicemail_mail_to']['fr-fr'] = "Entrez l'adresse e-mail à laquelle envoyer la messagerie vocale (facultatif). Plusieurs adresses peuvent être séparées par des virgules.";
$text['description-voicemail_mail_to']['he-il'] = "היכנס לכתובת הדואר האלקטרוני כדי לשלוח הודעות קוליות (אופציונלי)."; $text['description-voicemail_mail_to']['he-il'] = "הזן את כתובת האימייל לשליחת הדואר הקולי (אופציונלי). ניתן להפריד בין כתובות מרובות באמצעות פסיקים.";
$text['description-voicemail_mail_to']['it-it'] = "Inserire l'indirizzo email a cui recapitare i messaggi vocali (opzionale)."; $text['description-voicemail_mail_to']['it-it'] = "Inserisci l'indirizzo email a cui inviare la segreteria telefonica (opzionale). Più indirizzi possono essere separati da virgole.";
$text['description-voicemail_mail_to']['ka-ge'] = "შეიყვანეთ ელფოსტის მისამართი, რომელზეც ხმოვანი ფოსტა გამოიგზავნება (არასავალდებულო)."; $text['description-voicemail_mail_to']['ka-ge'] = "შეიყვანეთ ელ.ფოსტის მისამართი, რომელზეც გაიგზავნება ხმოვანი ფოსტა (არასავალდებულო). შესაძლებელია მრავალი მისამართის მძიმით გამოყოფა.";
$text['description-voicemail_mail_to']['nl-nl'] = "Voer het E-mail adres om de voicemail naar te sturen (optioneel)."; $text['description-voicemail_mail_to']['nl-nl'] = "Voer het e-mailadres in om de voicemail naartoe te sturen (optioneel). Meerdere adressen kunnen worden gescheiden door komma's.";
$text['description-voicemail_mail_to']['pl-pl'] = "Dodaj adres email na który będą wysyłane pliki poczty głosowej"; $text['description-voicemail_mail_to']['pl-pl'] = "Wprowadź adres e-mail, na który ma zostać wysłana poczta głosowa (opcjonalnie). Wiele adresów można oddzielić przecinkami.";
$text['description-voicemail_mail_to']['pt-br'] = "Insira o endereço de email para enviar o correio de voz (opcional)."; $text['description-voicemail_mail_to']['pt-br'] = "Digite o endereço de e-mail para enviar o correio de voz (opcional). Vários endereços podem ser separados por vírgulas.";
$text['description-voicemail_mail_to']['pt-pt'] = "Introduza o endereço de email para enviar o correio de voz (opcional)."; $text['description-voicemail_mail_to']['pt-pt'] = "Digite o endereço de e-mail para enviar o correio de voz (opcional). Vários endereços podem ser separados por vírgulas.";
$text['description-voicemail_mail_to']['ro-ro'] = "Introduceți adresa de e-mail la care trimiteți mesajul vocal (opțional)."; $text['description-voicemail_mail_to']['ro-ro'] = "Introduceți adresa de e-mail la care se va trimite mesageria vocală (opțional). Mai multe adrese pot fi separate prin virgule.";
$text['description-voicemail_mail_to']['ru-ru'] = "Введите адрес электронной почты, чтобы отправить голосовую почту (опционально)."; $text['description-voicemail_mail_to']['ru-ru'] = "Введите адрес электронной почты для отправки голосовой почты (необязательно). Несколько адресов можно разделять запятыми.";
$text['description-voicemail_mail_to']['sv-se'] = "Ange E-post adressen för röstbrevlådan (valfritt)."; $text['description-voicemail_mail_to']['sv-se'] = "Ange e-postadressen som röstbrevet ska skickas till (valfritt). Flera adresser kan separeras med kommatecken.";
$text['description-voicemail_mail_to']['uk-ua'] = "Введіть адресу електронної пошти для відправки голосового повідомлення (за бажанням)."; $text['description-voicemail_mail_to']['uk-ua'] = "Введіть адресу електронної пошти для надсилання голосової пошти (необов’язково). Декілька адрес можна розділити комами.";
$text['description-voicemail_mail_to']['tr-tr'] = "Sesli mesajın gönderileceği e-posta adresini girin (isteğe bağlı)."; $text['description-voicemail_mail_to']['tr-tr'] = "Sesli mesajın gönderileceği e-posta adresini girin (isteğe bağlı). Birden fazla adres virgülle ayrılabilir.";
$text['description-voicemail_mail_to']['zh-cn'] = "输入要向其发送语音邮件的电子邮件地址(可选)。"; $text['description-voicemail_mail_to']['zh-cn'] = "输入要发送语音邮件的电子邮件地址(可选)。多个地址可用逗号分隔";
$text['description-voicemail_mail_to']['ja-jp'] = "ボイスメールの送信先の電子メール アドレスを入力します (オプション)"; $text['description-voicemail_mail_to']['ja-jp'] = "ボイスメールを送信するメールアドレスを入力してください(オプション)。複数のアドレスはコンマで区切ることができます";
$text['description-voicemail_mail_to']['ko-kr'] = "음성 메일을 보낼 이메일 주소를 입력합니다(선택 사항)."; $text['description-voicemail_mail_to']['ko-kr'] = "보이스메일을 보낼 이메일 주소를 입력하세요(선택 사항). 여러 개의 주소는 쉼표로 구분할 수 있습니다.";
$text['description-voicemail_local_after_email']['en-us'] = "Choose whether to keep the voicemail in the system after sending the email notification."; $text['description-voicemail_local_after_email']['en-us'] = "Choose whether to keep the voicemail in the system after sending the email notification.";
$text['description-voicemail_local_after_email']['en-gb'] = "Choose whether to keep the voicemail in the system after sending the email notification."; $text['description-voicemail_local_after_email']['en-gb'] = "Choose whether to keep the voicemail in the system after sending the email notification.";

View File

@ -186,7 +186,6 @@
//synchronize configuration //synchronize configuration
if (is_writable($_SESSION['switch']['extensions']['dir'])) { if (is_writable($_SESSION['switch']['extensions']['dir'])) {
require_once "app/extensions/resources/classes/extension.php";
$ext = new extension; $ext = new extension;
$ext->xml(); $ext->xml();
unset($ext); unset($ext);

View File

@ -850,7 +850,6 @@
//synchronize configuration //synchronize configuration
if (is_writable($switch_extensions)) { if (is_writable($switch_extensions)) {
require_once "app/extensions/resources/classes/extension.php";
$ext = new extension; $ext = new extension;
$ext->xml(); $ext->xml();
unset($ext); unset($ext);
@ -2037,7 +2036,6 @@
echo " ".$text['label-hold_music']."\n"; echo " ".$text['label-hold_music']."\n";
echo "</td>\n"; echo "</td>\n";
echo "<td width=\"70%\" class='vtable' align='left'>\n"; echo "<td width=\"70%\" class='vtable' align='left'>\n";
require_once "app/music_on_hold/resources/classes/switch_music_on_hold.php";
$options = ''; $options = '';
$moh = new switch_music_on_hold; $moh = new switch_music_on_hold;
echo $moh->select('hold_music', $hold_music ?? '', $options); echo $moh->select('hold_music', $hold_music ?? '', $options);

View File

@ -331,7 +331,7 @@
} }
echo th_order_by('enabled', $text['label-enabled'], $order_by, $order, null, "class='center'"); echo th_order_by('enabled', $text['label-enabled'], $order_by, $order, null, "class='center'");
echo th_order_by('description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'"); echo th_order_by('description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'");
if (permission_exists('extension_edit') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (permission_exists('extension_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -339,8 +339,12 @@
if (is_array($extensions) && @sizeof($extensions) != 0) { if (is_array($extensions) && @sizeof($extensions) != 0) {
$x = 0; $x = 0;
foreach($extensions as $row) { foreach($extensions as $row) {
$list_row_url = '';
if (permission_exists('extension_edit')) { if (permission_exists('extension_edit')) {
$list_row_url = "extension_edit.php?id=".urlencode($row['extension_uuid']).(is_numeric($page) ? '&page='.urlencode($page) : null); $list_row_url = "extension_edit.php?id=".urlencode($row['extension_uuid']).(is_numeric($page) ? '&page='.urlencode($page) : null);
if ($row['domain_uuid'] != $_SESSION['domain_uuid'] && permission_exists('domain_select')) {
$list_row_url .= '&domain_uuid='.urlencode($row['domain_uuid']).'&domain_change=true';
}
} }
echo "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('extension_enabled') || permission_exists('extension_delete')) { if (permission_exists('extension_enabled') || permission_exists('extension_delete')) {
@ -421,7 +425,7 @@
} }
echo " </td>\n"; echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['description'])."</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['description'])."</td>\n";
if (permission_exists('extension_edit') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (permission_exists('extension_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -447,3 +451,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -25,7 +25,6 @@
*/ */
//define the directory class //define the directory class
if (!class_exists('extension')) {
class extension { class extension {
/** /**
@ -795,6 +794,3 @@ if (!class_exists('extension')) {
} }
} }
}
?>

View File

@ -239,7 +239,7 @@
echo th_order_by('fax_email', $text['label-email'], $order_by, $order); echo th_order_by('fax_email', $text['label-email'], $order_by, $order);
echo " <th>".$text['label-tools']."</th>"; echo " <th>".$text['label-tools']."</th>";
echo th_order_by('fax_description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'"); echo th_order_by('fax_description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'");
if (permission_exists('fax_extension_edit') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (permission_exists('fax_extension_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -247,8 +247,12 @@
if (is_array($result) && @sizeof($result) != 0) { if (is_array($result) && @sizeof($result) != 0) {
$x = 0; $x = 0;
foreach ($result as $row) { foreach ($result as $row) {
$list_row_url = '';
if (permission_exists('fax_extension_edit')) { if (permission_exists('fax_extension_edit')) {
$list_row_url = "fax_edit.php?id=".urlencode($row['fax_uuid']); $list_row_url = "fax_edit.php?id=".urlencode($row['fax_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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('fax_extension_add') || permission_exists('fax_extension_delete')) { if (permission_exists('fax_extension_add') || permission_exists('fax_extension_delete')) {
@ -301,7 +305,7 @@
echo " </td>\n"; echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['fax_description'])."&nbsp;</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['fax_description'])."&nbsp;</td>\n";
if (permission_exists('fax_extension_edit') && !empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (permission_exists('fax_extension_edit') && filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -325,3 +329,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -29,7 +29,6 @@
require_once dirname(__DIR__, 2) . "/resources/require.php"; require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/functions/object_to_array.php"; require_once "resources/functions/object_to_array.php";
require_once "resources/functions/parse_message.php"; require_once "resources/functions/parse_message.php";
require_once "resources/classes/text.php";
//get accounts to monitor //get accounts to monitor
$sql = "select d.domain_name, f.* "; $sql = "select d.domain_name, f.* ";

View File

@ -179,7 +179,7 @@
//echo th_order_by('fax_retry_sleep', $text['label-fax_retry_sleep'], $order_by, $order); //echo th_order_by('fax_retry_sleep', $text['label-fax_retry_sleep'], $order_by, $order);
echo th_order_by('fax_uri', $text['label-fax_destination'], $order_by, $order, null, null, "&id=".$fax_uuid); echo th_order_by('fax_uri', $text['label-fax_destination'], $order_by, $order, null, null, "&id=".$fax_uuid);
//echo th_order_by('fax_epoch', $text['label-fax_epoch'], $order_by, $order); //echo th_order_by('fax_epoch', $text['label-fax_epoch'], $order_by, $order);
if (!empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -213,7 +213,7 @@
//echo " <td>".$row['fax_retry_sleep']."&nbsp;</td>\n"; //echo " <td>".$row['fax_retry_sleep']."&nbsp;</td>\n";
echo " <td>".basename($row['fax_uri'])."&nbsp;</td>\n"; echo " <td>".basename($row['fax_uri'])."&nbsp;</td>\n";
//echo " <td>".$row['fax_epoch']."&nbsp;</td>\n"; //echo " <td>".$row['fax_epoch']."&nbsp;</td>\n";
if (!empty($_SESSION['theme']['list_row_edit_button']['boolean']) && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { if (filter_var($_SESSION['theme']['list_row_edit_button']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
echo " <td class='action-button'>\n"; echo " <td class='action-button'>\n";
echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";

View File

@ -25,7 +25,6 @@
*/ */
//define the fax class //define the fax class
if (!class_exists('fax')) {
class fax { class fax {
/** /**
@ -725,7 +724,6 @@ if (!class_exists('fax')) {
} }
} //class } //class
}
/* /*
$o = new fax; $o = new fax;
@ -738,5 +736,3 @@ $c->destination_number = $fax_destination_number;
$c->fax_description = $fax_description; $c->fax_description = $fax_description;
$c->dialplan(); $c->dialplan();
*/ */
?>

View File

@ -332,8 +332,12 @@
if (!empty($fax_queue)) { if (!empty($fax_queue)) {
$x = 0; $x = 0;
foreach ($fax_queue as $row) { foreach ($fax_queue as $row) {
$list_row_url = '';
if ($permission['fax_queue_edit']) { if ($permission['fax_queue_edit']) {
$list_row_url = "fax_queue_edit.php?id=".urlencode($row['fax_queue_uuid']); $list_row_url = "fax_queue_edit.php?id=".urlencode($row['fax_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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if ($permission['fax_queue_add'] || $permission['fax_queue_edit'] || $permission['fax_queue_delete']) { if ($permission['fax_queue_add'] || $permission['fax_queue_edit'] || $permission['fax_queue_delete']) {

View File

@ -26,12 +26,7 @@
/** /**
* fax_queue class * fax_queue class
*
* @method null delete
* @method null toggle
* @method null copy
*/ */
if (!class_exists('fax_queue')) {
class fax_queue { class fax_queue {
/** /**
@ -274,6 +269,3 @@ if (!class_exists('fax_queue')) {
} }
} }
} }
}
?>

View File

@ -8,7 +8,6 @@
//includes files //includes files
require_once dirname(__DIR__, 4) . "/resources/require.php"; require_once dirname(__DIR__, 4) . "/resources/require.php";
require_once "resources/pdo.php"; require_once "resources/pdo.php";
include "resources/classes/permissions.php";
//increase limits //increase limits
set_time_limit(0); set_time_limit(0);

View File

@ -5,7 +5,7 @@
$apps[$x]['uuid'] = '16589224-c876-aeb3-f59f-523a1c0801f7'; $apps[$x]['uuid'] = '16589224-c876-aeb3-f59f-523a1c0801f7';
$apps[$x]['category'] = 'Switch'; $apps[$x]['category'] = 'Switch';
$apps[$x]['subcategory'] = ''; $apps[$x]['subcategory'] = '';
$apps[$x]['version'] = '2.0'; $apps[$x]['version'] = '2.1';
$apps[$x]['license'] = 'Mozilla Public License 1.1'; $apps[$x]['license'] = 'Mozilla Public License 1.1';
$apps[$x]['url'] = 'http://www.fusionpbx.com'; $apps[$x]['url'] = 'http://www.fusionpbx.com';
$apps[$x]['description']['en-us'] = "Queues are used to setup waiting lines for callers. Also known as FIFO Queues."; $apps[$x]['description']['en-us'] = "Queues are used to setup waiting lines for callers. Also known as FIFO Queues.";
@ -140,11 +140,31 @@
$apps[$x]['db'][$y]['fields'][$z]['search_by'] = ''; $apps[$x]['db'][$y]['fields'][$z]['search_by'] = '';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'A feature code for the agent to login or logout of the Queue.'; $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = 'A feature code for the agent to login or logout of the Queue.';
$z++; $z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "fifo_strategy";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['search'] = 'true';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Select the strategy.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'fifo_members'; $apps[$x]['db'][$y]['fields'][$z]['name'] = 'fifo_members';
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text'; $apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
$apps[$x]['db'][$y]['fields'][$z]['search_by'] = ''; $apps[$x]['db'][$y]['fields'][$z]['search_by'] = '';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = ''; $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = '';
$z++; $z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'fifo_timeout_seconds';
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
$apps[$x]['db'][$y]['fields'][$z]['search_by'] = '';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = '';
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'fifo_exit_key';
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'numeric';
$apps[$x]['db'][$y]['fields'][$z]['search_by'] = '';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = '';
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'fifo_exit_action';
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
$apps[$x]['db'][$y]['fields'][$z]['search_by'] = '';
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = '';
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'fifo_music'; $apps[$x]['db'][$y]['fields'][$z]['name'] = 'fifo_music';
$apps[$x]['db'][$y]['fields'][$z]['type'] = 'text'; $apps[$x]['db'][$y]['fields'][$z]['type'] = 'text';
$apps[$x]['db'][$y]['fields'][$z]['search_by'] = ''; $apps[$x]['db'][$y]['fields'][$z]['search_by'] = '';
@ -268,4 +288,4 @@
//cache details //cache details
$apps[$x]['cache']['key'] = "dialplan.\${domain_name}"; $apps[$x]['cache']['key'] = "dialplan.\${domain_name}";
?> ?>

View File

@ -324,6 +324,87 @@ $text['description-fifo_agent_queue']['zh-cn'] = "代理等待呼叫者或接听
$text['description-fifo_agent_queue']['ja-jp'] = "エージェントが発信者を待機したり、キューで待機中の通話に応答したりするためのキュー。"; $text['description-fifo_agent_queue']['ja-jp'] = "エージェントが発信者を待機したり、キューで待機中の通話に応答したりするためのキュー。";
$text['description-fifo_agent_queue']['ko-kr'] = "상담원이 발신자를 기다리거나 대기열에 대기 중인 전화를 받기 위한 대기열입니다."; $text['description-fifo_agent_queue']['ko-kr'] = "상담원이 발신자를 기다리거나 대기열에 대기 중인 전화를 받기 위한 대기열입니다.";
$text['label-strategy']['en-us'] = "Strategy";
$text['label-strategy']['en-gb'] = "Strategy";
$text['label-strategy']['ar-eg'] = "الاستراتيجية";
$text['label-strategy']['de-at'] = "Strategie";
$text['label-strategy']['de-ch'] = "Strategie";
$text['label-strategy']['de-de'] = "Strategie";
$text['label-strategy']['el-gr'] = "Στρατηγική";
$text['label-strategy']['es-cl'] = "Estrategia";
$text['label-strategy']['es-mx'] = "Estrategia";
$text['label-strategy']['fr-ca'] = "Stratégie";
$text['label-strategy']['fr-fr'] = "Stratégie";
$text['label-strategy']['he-il'] = "אסטרטגיה";
$text['label-strategy']['it-it'] = "Strategia";
$text['label-strategy']['ka-ge'] = "სტრატეგია";
$text['label-strategy']['nl-nl'] = "Strategie";
$text['label-strategy']['pl-pl'] = "Strategia";
$text['label-strategy']['pt-br'] = "Estratégia";
$text['label-strategy']['pt-pt'] = "Estratégia";
$text['label-strategy']['ro-ro'] = "Strategie";
$text['label-strategy']['ru-ru'] = "Стратегия";
$text['label-strategy']['sv-se'] = "Strategi";
$text['label-strategy']['uk-ua'] = "Стратегія";
$text['label-strategy']['tr-tr'] = "Strateji";
$text['label-strategy']['zh-cn'] = "战略";
$text['label-strategy']['ja-jp'] = "ストラテジー";
$text['label-strategy']['ko-kr'] = "전략";
$text['description-strategy']['en-us'] = "Select the ring strategy.";
$text['description-strategy']['en-gb'] = "Select the ring strategy.";
$text['description-strategy']['ar-eg'] = "اختيار استراتيجية الخاتم.";
$text['description-strategy']['de-at'] = "Wählen Sie eine Strategie.";
$text['description-strategy']['de-ch'] = "Wählen Sie eine Strategie.";
$text['description-strategy']['de-de'] = "Wählen Sie eine Strategie.";
$text['description-strategy']['el-gr'] = "Επιλέξτε τη στρατηγική του δακτυλίου.";
$text['description-strategy']['es-cl'] = "Ingrese la estrategia de llamado.";
$text['description-strategy']['es-mx'] = "Ingrese la estrategia de llamado.";
$text['description-strategy']['fr-ca'] = "Choisir la statégie de sonnerie.";
$text['description-strategy']['fr-fr'] = "Choisir la statégie de sonnerie.";
$text['description-strategy']['he-il'] = "בחר את אסטרטגיית החיוג";
$text['description-strategy']['it-it'] = "Selezionare la strategia di squillo.";
$text['description-strategy']['ka-ge'] = "აირჩიეთ ზარის სტრატეგია.";
$text['description-strategy']['nl-nl'] = "Kies de bel strategie.";
$text['description-strategy']['pl-pl'] = "Wybierz strategię";
$text['description-strategy']['pt-br'] = "Selecione a estraétia da fila";
$text['description-strategy']['pt-pt'] = "Escolha o tipo de estratégia de toque.";
$text['description-strategy']['ro-ro'] = "Selectați strategia de inel.";
$text['description-strategy']['ru-ru'] = "Выберите стратегию вызовов.";
$text['description-strategy']['sv-se'] = "Välj strategi för ringflöde.";
$text['description-strategy']['uk-ua'] = "Виберіть стратегію кільця.";
$text['description-strategy']['tr-tr'] = "Zil stratejisini seçin.";
$text['description-strategy']['zh-cn'] = "选择响铃策略。";
$text['description-strategy']['ja-jp'] = "リング戦略を選択します。";
$text['description-strategy']['ko-kr'] = "링 전략을 선택합니다.";
$text['message-strategy']['en-us'] = "Please provide: Strategy";
$text['message-strategy']['en-gb'] = "Please provide: Strategy";
$text['message-strategy']['ar-eg'] = "يرجى تقديم ما يلي: الاستراتيجية";
$text['message-strategy']['de-at'] = "Bitte geben Sie folgendes an: Strategie";
$text['message-strategy']['de-ch'] = "Bitte geben Sie folgendes an: Strategie";
$text['message-strategy']['de-de'] = "Bitte geben Sie folgendes an: Strategie";
$text['message-strategy']['el-gr'] = "Παρέχετε: Στρατηγική";
$text['message-strategy']['es-cl'] = "Por favor indique: Estrategia";
$text['message-strategy']['es-mx'] = "Por favor indique: Estrategia";
$text['message-strategy']['fr-ca'] = "Merci d'indiquer: Stratégie";
$text['message-strategy']['fr-fr'] = "Merci d'indiquer: Stratégie";
$text['message-strategy']['he-il'] = "נא לספק: אסטרטגיה";
$text['message-strategy']['it-it'] = "Prego fornire: Strategia";
$text['message-strategy']['ka-ge'] = "შეიყვანეთ: სტრატეგია";
$text['message-strategy']['nl-nl'] = "Geef aub.: Strategie";
$text['message-strategy']['pl-pl'] = "Wprowadź strategię";
$text['message-strategy']['pt-br'] = "Por favor indique: Estratégia";
$text['message-strategy']['pt-pt'] = "Por favor indique: Estratégia";
$text['message-strategy']['ro-ro'] = "Vă rugăm să furnizați: Strategie";
$text['message-strategy']['ru-ru'] = "Пожалуйста укажите: Стратегию";
$text['message-strategy']['sv-se'] = "Ange: Strategi";
$text['message-strategy']['uk-ua'] = "Будь ласка, заповніть: Стратегія";
$text['message-strategy']['tr-tr'] = "Lütfen sağlayın: Strateji";
$text['message-strategy']['zh-cn'] = "请提供:策略";
$text['message-strategy']['ja-jp'] = "提供してください: 戦略";
$text['message-strategy']['ko-kr'] = "제공하십시오: 전략";
$text['label-fifo_members']['en-us'] = "Agents"; $text['label-fifo_members']['en-us'] = "Agents";
$text['label-fifo_members']['en-gb'] = "Agents"; $text['label-fifo_members']['en-gb'] = "Agents";
$text['label-fifo_members']['ar-eg'] = "عملاء"; $text['label-fifo_members']['ar-eg'] = "عملاء";
@ -377,6 +458,7 @@ $text['description-fifo_members']['zh-cn'] = "代理是队列的成员。队列
$text['description-fifo_members']['ja-jp'] = "エージェントはキューのメンバーです。キュー内の通話は、対応可能なエージェントに分配されます。"; $text['description-fifo_members']['ja-jp'] = "エージェントはキューのメンバーです。キュー内の通話は、対応可能なエージェントに分配されます。";
$text['description-fifo_members']['ko-kr'] = "에이전트는 대기열의 멤버입니다. 대기열의 통화는 사용 가능한 에이전트에게 분배됩니다."; $text['description-fifo_members']['ko-kr'] = "에이전트는 대기열의 멤버입니다. 대기열의 통화는 사용 가능한 에이전트에게 분배됩니다.";
$text['label-fifo_music']['en-us'] = "Music"; $text['label-fifo_music']['en-us'] = "Music";
$text['label-fifo_music']['en-gb'] = "Music"; $text['label-fifo_music']['en-gb'] = "Music";
$text['label-fifo_music']['ar-eg'] = "موسيقى"; $text['label-fifo_music']['ar-eg'] = "موسيقى";
@ -431,6 +513,162 @@ $text['description-fifo_music']['zh-cn'] = "选择排队等候时可以听到的
$text['description-fifo_music']['ja-jp'] = "キューで待機中に聞く保留音を選択します。"; $text['description-fifo_music']['ja-jp'] = "キューで待機中に聞く保留音を選択します。";
$text['description-fifo_music']['ko-kr'] = "대기열에서 기다리는 동안 들을 수 있는 대기 음악을 선택하세요."; $text['description-fifo_music']['ko-kr'] = "대기열에서 기다리는 동안 들을 수 있는 대기 음악을 선택하세요.";
$text['label-fifo_timeout_seconds']['en-us'] = 'Timeout';
$text['label-fifo_timeout_seconds']['en-gb'] = 'Timeout';
$text['label-fifo_timeout_seconds']['ar-eg'] = '';
$text['label-fifo_timeout_seconds']['de-at'] = '';
$text['label-fifo_timeout_seconds']['de-ch'] = '';
$text['label-fifo_timeout_seconds']['de-de'] = '';
$text['label-fifo_timeout_seconds']['el-gr'] = '';
$text['label-fifo_timeout_seconds']['es-cl'] = '';
$text['label-fifo_timeout_seconds']['es-mx'] = '';
$text['label-fifo_timeout_seconds']['fr-ca'] = '';
$text['label-fifo_timeout_seconds']['fr-fr'] = '';
$text['label-fifo_timeout_seconds']['he-il'] = '';
$text['label-fifo_timeout_seconds']['it-it'] = '';
$text['label-fifo_timeout_seconds']['nl-nl'] = '';
$text['label-fifo_timeout_seconds']['pl-pl'] = '';
$text['label-fifo_timeout_seconds']['pt-br'] = '';
$text['label-fifo_timeout_seconds']['pt-pt'] = '';
$text['label-fifo_timeout_seconds']['ro-ro'] = '';
$text['label-fifo_timeout_seconds']['ru-ru'] = '';
$text['label-fifo_timeout_seconds']['sv-se'] = '';
$text['label-fifo_timeout_seconds']['uk-ua'] = '';
$text['label-fifo_timeout_seconds']['tr-tr'] = '';
$text['label-fifo_timeout_seconds']['zh-cn'] = '';
$text['label-fifo_timeout_seconds']['ja-jp'] = '';
$text['label-fifo_timeout_seconds']['ko-kr'] = '';
$text['description-fifo_timeout_seconds']['en-us'] = 'Enter the queue timeout seconds. 0 means no queue timeout.';
$text['description-fifo_timeout_seconds']['en-gb'] = 'Enter the queue timeout seconds. 0 means no queue timeout.';
$text['description-fifo_timeout_seconds']['ar-eg'] = '';
$text['description-fifo_timeout_seconds']['de-at'] = '';
$text['description-fifo_timeout_seconds']['de-ch'] = '';
$text['description-fifo_timeout_seconds']['de-de'] = '';
$text['description-fifo_timeout_seconds']['el-gr'] = '';
$text['description-fifo_timeout_seconds']['es-cl'] = '';
$text['description-fifo_timeout_seconds']['es-mx'] = '';
$text['description-fifo_timeout_seconds']['fr-ca'] = '';
$text['description-fifo_timeout_seconds']['fr-fr'] = '';
$text['description-fifo_timeout_seconds']['he-il'] = '';
$text['description-fifo_timeout_seconds']['it-it'] = '';
$text['description-fifo_timeout_seconds']['nl-nl'] = '';
$text['description-fifo_timeout_seconds']['pl-pl'] = '';
$text['description-fifo_timeout_seconds']['pt-br'] = '';
$text['description-fifo_timeout_seconds']['pt-pt'] = '';
$text['description-fifo_timeout_seconds']['ro-ro'] = '';
$text['description-fifo_timeout_seconds']['ru-ru'] = '';
$text['description-fifo_timeout_seconds']['sv-se'] = '';
$text['description-fifo_timeout_seconds']['uk-ua'] = '';
$text['description-fifo_timeout_seconds']['tr-tr'] = '';
$text['description-fifo_timeout_seconds']['zh-cn'] = '';
$text['description-fifo_timeout_seconds']['ja-jp'] = '';
$text['description-fifo_timeout_seconds']['ko-kr'] = '';
$text['label-fifo_exit_key']['en-us'] = 'Exit Key';
$text['label-fifo_exit_key']['en-gb'] = 'Exit Key';
$text['label-fifo_exit_key']['ar-eg'] = '';
$text['label-fifo_exit_key']['de-at'] = '';
$text['label-fifo_exit_key']['de-ch'] = '';
$text['label-fifo_exit_key']['de-de'] = '';
$text['label-fifo_exit_key']['el-gr'] = '';
$text['label-fifo_exit_key']['es-cl'] = '';
$text['label-fifo_exit_key']['es-mx'] = '';
$text['label-fifo_exit_key']['fr-ca'] = '';
$text['label-fifo_exit_key']['fr-fr'] = '';
$text['label-fifo_exit_key']['he-il'] = '';
$text['label-fifo_exit_key']['it-it'] = '';
$text['label-fifo_exit_key']['nl-nl'] = '';
$text['label-fifo_exit_key']['pl-pl'] = '';
$text['label-fifo_exit_key']['pt-br'] = '';
$text['label-fifo_exit_key']['pt-pt'] = '';
$text['label-fifo_exit_key']['ro-ro'] = '';
$text['label-fifo_exit_key']['ru-ru'] = '';
$text['label-fifo_exit_key']['sv-se'] = '';
$text['label-fifo_exit_key']['uk-ua'] = '';
$text['label-fifo_exit_key']['tr-tr'] = '';
$text['label-fifo_exit_key']['zh-cn'] = '';
$text['label-fifo_exit_key']['ja-jp'] = '';
$text['label-fifo_exit_key']['ko-kr'] = '';
$text['description-fifo_exit_key']['en-us'] = 'Enter the number to exit the queue.';
$text['description-fifo_exit_key']['en-gb'] = 'Enter the number to exit the queue.';
$text['description-fifo_exit_key']['ar-eg'] = '';
$text['description-fifo_exit_key']['de-at'] = '';
$text['description-fifo_exit_key']['de-ch'] = '';
$text['description-fifo_exit_key']['de-de'] = '';
$text['description-fifo_exit_key']['el-gr'] = '';
$text['description-fifo_exit_key']['es-cl'] = '';
$text['description-fifo_exit_key']['es-mx'] = '';
$text['description-fifo_exit_key']['fr-ca'] = '';
$text['description-fifo_exit_key']['fr-fr'] = '';
$text['description-fifo_exit_key']['he-il'] = '';
$text['description-fifo_exit_key']['it-it'] = '';
$text['description-fifo_exit_key']['nl-nl'] = '';
$text['description-fifo_exit_key']['pl-pl'] = '';
$text['description-fifo_exit_key']['pt-br'] = '';
$text['description-fifo_exit_key']['pt-pt'] = '';
$text['description-fifo_exit_key']['ro-ro'] = '';
$text['description-fifo_exit_key']['ru-ru'] = '';
$text['description-fifo_exit_key']['sv-se'] = '';
$text['description-fifo_exit_key']['uk-ua'] = '';
$text['description-fifo_exit_key']['tr-tr'] = '';
$text['description-fifo_exit_key']['zh-cn'] = '';
$text['description-fifo_exit_key']['ja-jp'] = '';
$text['description-fifo_exit_key']['ko-kr'] = '';
$text['label-fifo_exit_action']['en-us'] = 'Exit Action';
$text['label-fifo_exit_action']['en-gb'] = 'Exit Action';
$text['label-fifo_exit_action']['ar-eg'] = '';
$text['label-fifo_exit_action']['de-at'] = '';
$text['label-fifo_exit_action']['de-ch'] = '';
$text['label-fifo_exit_action']['de-de'] = '';
$text['label-fifo_exit_action']['el-gr'] = '';
$text['label-fifo_exit_action']['es-cl'] = '';
$text['label-fifo_exit_action']['es-mx'] = '';
$text['label-fifo_exit_action']['fr-ca'] = '';
$text['label-fifo_exit_action']['fr-fr'] = '';
$text['label-fifo_exit_action']['he-il'] = '';
$text['label-fifo_exit_action']['it-it'] = '';
$text['label-fifo_exit_action']['nl-nl'] = '';
$text['label-fifo_exit_action']['pl-pl'] = '';
$text['label-fifo_exit_action']['pt-br'] = '';
$text['label-fifo_exit_action']['pt-pt'] = '';
$text['label-fifo_exit_action']['ro-ro'] = '';
$text['label-fifo_exit_action']['ru-ru'] = '';
$text['label-fifo_exit_action']['sv-se'] = '';
$text['label-fifo_exit_action']['uk-ua'] = '';
$text['label-fifo_exit_action']['tr-tr'] = '';
$text['label-fifo_exit_action']['zh-cn'] = '';
$text['label-fifo_exit_action']['ja-jp'] = '';
$text['label-fifo_exit_action']['ko-kr'] = '';
$text['description-fifo_exit_action']['en-us'] = 'Select where to route the caller when exiting the queue.';
$text['description-fifo_exit_action']['en-gb'] = 'Select where to route the caller when exiting the queue.';
$text['description-fifo_exit_action']['ar-eg'] = '';
$text['description-fifo_exit_action']['de-at'] = '';
$text['description-fifo_exit_action']['de-ch'] = '';
$text['description-fifo_exit_action']['de-de'] = '';
$text['description-fifo_exit_action']['el-gr'] = '';
$text['description-fifo_exit_action']['es-cl'] = '';
$text['description-fifo_exit_action']['es-mx'] = '';
$text['description-fifo_exit_action']['fr-ca'] = '';
$text['description-fifo_exit_action']['fr-fr'] = '';
$text['description-fifo_exit_action']['he-il'] = '';
$text['description-fifo_exit_action']['it-it'] = '';
$text['description-fifo_exit_action']['nl-nl'] = '';
$text['description-fifo_exit_action']['pl-pl'] = '';
$text['description-fifo_exit_action']['pt-br'] = '';
$text['description-fifo_exit_action']['pt-pt'] = '';
$text['description-fifo_exit_action']['ro-ro'] = '';
$text['description-fifo_exit_action']['ru-ru'] = '';
$text['description-fifo_exit_action']['sv-se'] = '';
$text['description-fifo_exit_action']['uk-ua'] = '';
$text['description-fifo_exit_action']['tr-tr'] = '';
$text['description-fifo_exit_action']['zh-cn'] = '';
$text['description-fifo_exit_action']['ja-jp'] = '';
$text['description-fifo_exit_action']['ko-kr'] = '';
$text['label-fifo_order']['en-us'] = "Order"; $text['label-fifo_order']['en-us'] = "Order";
$text['label-fifo_order']['en-gb'] = "Order"; $text['label-fifo_order']['en-gb'] = "Order";
$text['label-fifo_order']['ar-eg'] = "طلب"; $text['label-fifo_order']['ar-eg'] = "طلب";
@ -755,6 +993,59 @@ $text['description-member_simultaneous']['zh-cn'] = "同时输入成员。";
$text['description-member_simultaneous']['ja-jp'] = "メンバー同時入力。"; $text['description-member_simultaneous']['ja-jp'] = "メンバー同時入力。";
$text['description-member_simultaneous']['ko-kr'] = "회원을 동시 입력하세요."; $text['description-member_simultaneous']['ko-kr'] = "회원을 동시 입력하세요.";
$text['option-longest_idle_agent']['en-us'] = "Longest Idle Agent";
$text['option-longest_idle_agent']['en-gb'] = "Longest Idle Agent";
$text['option-longest_idle_agent']['ar-eg'] = "أطول عامل خامل";
$text['option-longest_idle_agent']['de-at'] = "Agent mit der höchsten Wartezeit";
$text['option-longest_idle_agent']['de-ch'] = "Agent mit der höchsten Wartezeit";
$text['option-longest_idle_agent']['de-de'] = "Agent mit der höchsten Wartezeit";
$text['option-longest_idle_agent']['el-gr'] = "Ο μακρύτερος πράκτορας σε αδράνεια";
$text['option-longest_idle_agent']['es-cl'] = "Agente desocupado por más tiempo";
$text['option-longest_idle_agent']['es-mx'] = "Agente desocupado por más tiempo";
$text['option-longest_idle_agent']['fr-ca'] = "Agent inactif le plus longtemps";
$text['option-longest_idle_agent']['fr-fr'] = "Agent inactif le plus longtemps";
$text['option-longest_idle_agent']['he-il'] = "סוכן הסרק הארוך ביותר";
$text['option-longest_idle_agent']['it-it'] = "Da più tempo libero";
$text['option-longest_idle_agent']['ka-ge'] = "ოპერატორი, რომელიც ყველაზე დიდხანს იყო უქმად";
$text['option-longest_idle_agent']['nl-nl'] = "Langst wachtende agent";
$text['option-longest_idle_agent']['pl-pl'] = "Najdlużej bezczynny agent";
$text['option-longest_idle_agent']['pt-br'] = "Agente desocupado há mais tempo";
$text['option-longest_idle_agent']['pt-pt'] = "Agente desocupado há mais tempo";
$text['option-longest_idle_agent']['ro-ro'] = "Cel mai lung agent inactiv";
$text['option-longest_idle_agent']['ru-ru'] = "Максимально незанятый оператор";
$text['option-longest_idle_agent']['sv-se'] = "Agent Längst Ledig";
$text['option-longest_idle_agent']['uk-ua'] = "Найдовше бездіяльний агент";
$text['option-longest_idle_agent']['zh-cn'] = "最长空闲代理";
$text['option-longest_idle_agent']['ja-jp'] = "最長アイドル エージェント";
$text['option-longest_idle_agent']['ko-kr'] = "가장 긴 유휴 에이전트";
$text['option-simultaneous']['en-us'] = "Simultaneous";
$text['option-simultaneous']['en-gb'] = "Simultaneous";
$text['option-simultaneous']['ar-eg'] = "بسيطة";
$text['option-simultaneous']['de-at'] = "gleichzeitig";
$text['option-simultaneous']['de-ch'] = "gleichzeitig";
$text['option-simultaneous']['de-de'] = "gleichzeitig";
$text['option-simultaneous']['el-gr'] = "Ταυτόχρονος";
$text['option-simultaneous']['es-cl'] = "Simultaneos";
$text['option-simultaneous']['es-mx'] = "Simultaneos";
$text['option-simultaneous']['fr-ca'] = "Simultané";
$text['option-simultaneous']['fr-fr'] = "Simultané";
$text['option-simultaneous']['he-il'] = "באותו הזמן";
$text['option-simultaneous']['it-it'] = "Parallelo";
$text['option-simultaneous']['ka-ge'] = "ერთდროული";
$text['option-simultaneous']['nl-nl'] = "Gelijktijdig";
$text['option-simultaneous']['pl-pl'] = "Jednoczesne";
$text['option-simultaneous']['pt-br'] = "Simultâneo";
$text['option-simultaneous']['pt-pt'] = "Simultâneo";
$text['option-simultaneous']['ro-ro'] = "Simultan";
$text['option-simultaneous']['ru-ru'] = "Одновременное";
$text['option-simultaneous']['sv-se'] = "Samtidig";
$text['option-simultaneous']['uk-ua'] = "Симулятор";
$text['option-simultaneous']['tr-tr'] = "Eş zamanlı";
$text['option-simultaneous']['zh-cn'] = "同时";
$text['option-simultaneous']['ja-jp'] = "同時に";
$text['option-simultaneous']['ko-kr'] = "동시";
$text['label-member_wrap_up_time']['en-us'] = "Wrap Up Time"; $text['label-member_wrap_up_time']['en-us'] = "Wrap Up Time";
$text['label-member_wrap_up_time']['en-gb'] = "Wrap Up Time"; $text['label-member_wrap_up_time']['en-gb'] = "Wrap Up Time";
$text['label-member_wrap_up_time']['ar-eg'] = "وقت الختام"; $text['label-member_wrap_up_time']['ar-eg'] = "وقت الختام";
@ -836,4 +1127,4 @@ $text['label-member_enabled']['zh-cn'] = "已启用";
$text['label-member_enabled']['ja-jp'] = "有効"; $text['label-member_enabled']['ja-jp'] = "有効";
$text['label-member_enabled']['ko-kr'] = "활성화됨"; $text['label-member_enabled']['ko-kr'] = "활성화됨";
?> ?>

View File

@ -145,8 +145,8 @@
$sql .= "fifo_uuid, "; $sql .= "fifo_uuid, ";
$sql .= "fifo_name, "; $sql .= "fifo_name, ";
$sql .= "fifo_extension, "; $sql .= "fifo_extension, ";
$sql .= "fifo_agent_queue, ";
$sql .= "fifo_agent_status, "; $sql .= "fifo_agent_status, ";
$sql .= "fifo_agent_queue, ";
$sql .= "fifo_music, "; $sql .= "fifo_music, ";
$sql .= "u.domain_uuid, "; $sql .= "u.domain_uuid, ";
$sql .= "d.domain_name, "; $sql .= "d.domain_name, ";
@ -249,8 +249,8 @@
} }
echo th_order_by('fifo_name', $text['label-fifo_name'], $order_by, $order); echo th_order_by('fifo_name', $text['label-fifo_name'], $order_by, $order);
echo th_order_by('fifo_extension', $text['label-fifo_extension'], $order_by, $order); echo th_order_by('fifo_extension', $text['label-fifo_extension'], $order_by, $order);
echo th_order_by('fifo_agent_queue', $text['label-fifo_agent_queue'], $order_by, $order);
echo th_order_by('fifo_agent_status', $text['label-fifo_agent_status'], $order_by, $order); echo th_order_by('fifo_agent_status', $text['label-fifo_agent_status'], $order_by, $order);
echo th_order_by('fifo_agent_queue', $text['label-fifo_agent_queue'], $order_by, $order);
echo th_order_by('fifo_order', $text['label-fifo_order'], $order_by, $order); echo th_order_by('fifo_order', $text['label-fifo_order'], $order_by, $order);
echo th_order_by('fifo_enabled', $text['label-enabled'], $order_by, $order, null, "class='center'"); echo th_order_by('fifo_enabled', $text['label-enabled'], $order_by, $order, null, "class='center'");
echo " <th class='hide-sm-dn'>".$text['label-fifo_description']."</th>\n"; echo " <th class='hide-sm-dn'>".$text['label-fifo_description']."</th>\n";
@ -264,6 +264,9 @@
foreach ($fifo as $row) { foreach ($fifo as $row) {
if (permission_exists('fifo_edit')) { if (permission_exists('fifo_edit')) {
$list_row_url = "fifo_edit.php?id=".urlencode($row['fifo_uuid']); $list_row_url = "fifo_edit.php?id=".urlencode($row['fifo_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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('fifo_add') || permission_exists('fifo_edit') || permission_exists('fifo_delete')) { if (permission_exists('fifo_add') || permission_exists('fifo_edit') || permission_exists('fifo_delete')) {
@ -284,8 +287,8 @@
} }
echo " </td>\n"; echo " </td>\n";
echo " <td>".escape($row['fifo_extension'])."</td>\n"; echo " <td>".escape($row['fifo_extension'])."</td>\n";
echo " <td>".escape($row['fifo_agent_queue'])."</td>\n";
echo " <td>".escape($row['fifo_agent_status'])."</td>\n"; echo " <td>".escape($row['fifo_agent_status'])."</td>\n";
echo " <td>".escape($row['fifo_agent_queue'])."</td>\n";
echo " <td>".escape($row['fifo_order'])."</td>\n"; echo " <td>".escape($row['fifo_order'])."</td>\n";
if (permission_exists('fifo_edit')) { if (permission_exists('fifo_edit')) {
echo " <td class='no-link center'>\n"; echo " <td class='no-link center'>\n";
@ -319,4 +322,4 @@
//include the footer //include the footer
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -39,9 +39,15 @@
$language = new text; $language = new text;
$text = $language->get(); $text = $language->get();
//connect to the database
$database = database::new();
//add the settings object //add the settings object
$settings = new settings(["domain_uuid" => $_SESSION['domain_uuid'], "user_uuid" => $_SESSION['user_uuid']]); $settings = new settings(["domain_uuid" => $_SESSION['domain_uuid'], "user_uuid" => $_SESSION['user_uuid']]);
//setup the event socket connection
$event_socket = event_socket::create();
//set from session variables //set from session variables
$button_icon_back = $settings->get('theme', 'button_icon_back', ''); $button_icon_back = $settings->get('theme', 'button_icon_back', '');
$button_icon_copy = $settings->get('theme', 'button_icon_copy', ''); $button_icon_copy = $settings->get('theme', 'button_icon_copy', '');
@ -66,7 +72,11 @@
$fifo_extension = $_POST["fifo_extension"]; $fifo_extension = $_POST["fifo_extension"];
$fifo_agent_status = $_POST["fifo_agent_status"]; $fifo_agent_status = $_POST["fifo_agent_status"];
$fifo_agent_queue = $_POST["fifo_agent_queue"]; $fifo_agent_queue = $_POST["fifo_agent_queue"];
$fifo_strategy = $_POST["fifo_strategy"];
$fifo_members = $_POST["fifo_members"]; $fifo_members = $_POST["fifo_members"];
$fifo_timeout_seconds = $_POST["fifo_timeout_seconds"];
$fifo_exit_key = $_POST["fifo_exit_key"];
$fifo_exit_action = $_POST["fifo_exit_action"];
$fifo_music = $_POST["fifo_music"]; $fifo_music = $_POST["fifo_music"];
$domain_uuid = $_POST["domain_uuid"]; $domain_uuid = $_POST["domain_uuid"];
$fifo_order = $_POST["fifo_order"]; $fifo_order = $_POST["fifo_order"];
@ -104,20 +114,17 @@
switch ($_POST['action']) { switch ($_POST['action']) {
case 'copy': case 'copy':
if (permission_exists('fifo_add')) { if (permission_exists('fifo_add')) {
$obj = new database; $database->copy($array);
$obj->copy($array);
} }
break; break;
case 'delete': case 'delete':
if (permission_exists('fifo_delete')) { if (permission_exists('fifo_delete')) {
$obj = new database; $database->delete($array);
$obj->delete($array);
} }
break; break;
case 'toggle': case 'toggle':
if (permission_exists('fifo_update')) { if (permission_exists('fifo_update')) {
$obj = new database; $database->toggle($array);
$obj->toggle($array);
} }
break; break;
} }
@ -129,13 +136,38 @@
} }
} }
//validate the data
$fifo_extension = preg_replace('#[^a-zA-Z0-9.\-\*]#', '', $fifo_extension ?? '');
$fifo_order = preg_replace('#[^0-9]#', '', $fifo_order ?? '');
$fifo_exit_key = preg_replace('#[^0-9]#', '', $fifo_exit_key ?? '');
$fifo_timeout_seconds = preg_replace('#[^0-9]#', '', $fifo_timeout_seconds ?? '');
$fifo_agent_status = preg_replace('#[^a-zA-Z0-9.\-\*]#', '', $fifo_agent_status ?? '');
$fifo_agent_queue = preg_replace('#[^a-zA-Z0-9.\-\*]#', '', $fifo_agent_queue ?? '');
if (!empty($fifo_uuid) && !is_uuid($fifo_uuid)) { throw new Exception("invalid uuid"); }
if (!empty($dialplan_uuid) && !is_uuid($dialplan_uuid)) { throw new Exception("invalid uuid"); }
if (is_array($fifo_members)) {
$i = 0;
foreach ($fifo_members as $row) {
$fifo_members[$i]['member_contact'] = preg_replace('#[^a-zA-Z0-9/@.\-\*]#', '', $row["member_contact"] ?? '');
$fifo_members[$i]['member_call_timeout'] = preg_replace('#[^0-9]#', '', $row["member_call_timeout"] ?? '20');
$fifo_members[$i]['member_wrap_up_time'] = preg_replace('#[^0-9]#', '', $row["member_wrap_up_time"] ?? '10');
$fifo_members[$i]['member_enabled'] = $row["member_enabled"] ?? 'false';
$i++;
}
}
//check for all required data //check for all required data
$msg = ''; $msg = '';
if (strlen($fifo_name) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_name']."<br>\n"; } if (strlen($fifo_name) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_name']."<br>\n"; }
if (strlen($fifo_extension) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_extension']."<br>\n"; } if (strlen($fifo_extension) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_extension']."<br>\n"; }
//if (strlen($fifo_agent_status) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_agent_status']."<br>\n"; } //if (strlen($fifo_agent_status) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_agent_status']."<br>\n"; }
//if (strlen($fifo_agent_queue) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_agent_queue']."<br>\n"; } //if (strlen($fifo_agent_queue) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_agent_queue']."<br>\n"; }
if (strlen($fifo_strategy) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_strategy']."<br>\n"; }
//if (strlen($fifo_members) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_members']."<br>\n"; } //if (strlen($fifo_members) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_members']."<br>\n"; }
//if (strlen($fifo_timeout_seconds) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_timeout_seconds']."<br>\n"; }
//if (strlen($fifo_exit_key) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_exit_key']."<br>\n"; }
//if (strlen($fifo_exit_action) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_exit_action']."<br>\n"; }
//if (strlen($fifo_music) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_music']."<br>\n"; } //if (strlen($fifo_music) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_music']."<br>\n"; }
if (strlen($domain_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-domain_uuid']."<br>\n"; } if (strlen($domain_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-domain_uuid']."<br>\n"; }
if (strlen($fifo_order) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_order']."<br>\n"; } if (strlen($fifo_order) == 0) { $msg .= $text['message-required']." ".$text['label-fifo_order']."<br>\n"; }
@ -177,52 +209,115 @@
$array['fifo'][0]['fifo_extension'] = $fifo_extension; $array['fifo'][0]['fifo_extension'] = $fifo_extension;
$array['fifo'][0]['fifo_agent_status'] = $fifo_agent_status; $array['fifo'][0]['fifo_agent_status'] = $fifo_agent_status;
$array['fifo'][0]['fifo_agent_queue'] = $fifo_agent_queue; $array['fifo'][0]['fifo_agent_queue'] = $fifo_agent_queue;
$array['fifo'][0]['fifo_strategy'] = $fifo_strategy;
$array['fifo'][0]['fifo_timeout_seconds'] = $fifo_timeout_seconds;
$array['fifo'][0]['fifo_exit_key'] = $fifo_exit_key;
$array['fifo'][0]['fifo_exit_action'] = $fifo_exit_action;
$array['fifo'][0]['fifo_music'] = $fifo_music; $array['fifo'][0]['fifo_music'] = $fifo_music;
$array['fifo'][0]['fifo_order'] = $fifo_order; $array['fifo'][0]['fifo_order'] = $fifo_order;
$array['fifo'][0]['fifo_enabled'] = $fifo_enabled; $array['fifo'][0]['fifo_enabled'] = $fifo_enabled;
$array['fifo'][0]['fifo_description'] = $fifo_description; $array['fifo'][0]['fifo_description'] = $fifo_description;
$y = 0;
if (is_array($fifo_members)) { if (is_array($fifo_members)) {
$y = 0;
foreach ($fifo_members as $row) { foreach ($fifo_members as $row) {
if (!empty($row['member_contact']) && strlen($row['member_contact']) > 0) { if (!empty($row['member_contact']) && strlen($row['member_contact']) > 0) {
$array['fifo'][0]['fifo_members'][$y]['fifo_member_uuid'] = $row["fifo_member_uuid"]; $array['fifo'][0]['fifo_members'][$y]['fifo_member_uuid'] = $row["fifo_member_uuid"];
$array['fifo'][0]['fifo_members'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['fifo'][0]['fifo_members'][$y]['domain_uuid'] = $_SESSION['domain_uuid'];
$array['fifo'][0]['fifo_members'][$y]['member_contact'] = $row["member_contact"]; $array['fifo'][0]['fifo_members'][$y]['member_contact'] = $row["member_contact"];
$array['fifo'][0]['fifo_members'][$y]['member_call_timeout'] = $row["member_call_timeout"]; $array['fifo'][0]['fifo_members'][$y]['member_call_timeout'] = $row["member_call_timeout"] ?? '20';
//$array['fifo'][0]['fifo_members'][$y]['member_simultaneous'] = $row["member_simultaneous"]; //$array['fifo'][0]['fifo_members'][$y]['member_simultaneous'] = $row["member_simultaneous"];
$array['fifo'][0]['fifo_members'][$y]['member_wrap_up_time'] = $row["member_wrap_up_time"]; $array['fifo'][0]['fifo_members'][$y]['member_wrap_up_time'] = $row["member_wrap_up_time"] ?? '10';
$array['fifo'][0]['fifo_members'][$y]['member_enabled'] = $row["member_enabled"] ?? 'false'; $array['fifo'][0]['fifo_members'][$y]['member_enabled'] = $row["member_enabled"] ?? 'false';
$y++; $y++;
} }
} }
} }
//send commands for agent login or agent logout
if (is_array($fifo_members)) {
foreach ($fifo_members as $row) {
//empty row skip iteration
if (empty($row["member_contact"])) {
continue;
}
//build the command to add or remove the agent from the FIFO queue
if ($row["member_enabled"] == 'true') {
$command = "fifo_member add ".$fifo_extension."@".$_SESSION['domain_name']." {fifo_member_wait=nowait}".$row["member_contact"]." 5 ".$row['member_call_timeout']." ".$row['member_wrap_up_time'];
}
else {
$command = "fifo_member del ".$fifo_extension."@".$_SESSION['domain_name']." {fifo_member_wait=nowait}".$row["member_contact"];
}
if ($event_socket->is_connected()) {
$response = $event_socket->command('api '.$command);
}
}
}
//get the action destination number
if (!empty($fifo_exit_action)) {
$fifo_exit_destination = explode(':', $fifo_exit_action)[1];
$fifo_exit_destination = explode(' ', $fifo_exit_destination)[0];
}
//add the fifo dialplan //add the fifo dialplan
if (!empty($fifo_extension)) { if (!empty($fifo_extension)) {
//escape the * symbol //escape the * symbol
$fifo_agent_status_xml = str_replace("*", "\*", $fifo_agent_status); $fifo_agent_status_xml = str_replace("*", "\*", $fifo_agent_status);
$fifo_agent_queue_xml = str_replace("*", "\*", $fifo_agent_queue); $fifo_agent_queue_xml = str_replace("*", "\*", $fifo_agent_queue);
//prepare the fifo orbit extension
if (!empty($fifo_exit_destination) && $fifo_timeout_seconds == 0) {
$fifo_orbit_exten = $fifo_exit_destination;
}
else {
$fifo_orbit_exten = $fifo_exit_destination.":".$fifo_timeout_seconds;
}
//build the xml dialplan //build the xml dialplan
$dialplan_xml = "<extension name=\"".xml::sanitize($fifo_name)."\" continue=\"false\" uuid=\"".xml::sanitize($dialplan_uuid)."\">\n"; $dialplan_xml = "<extension name=\"".xml::sanitize($fifo_name)."\" continue=\"false\" uuid=\"".xml::sanitize($dialplan_uuid)."\">\n";
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".xml::sanitize($fifo_extension)."\$\" break=\"on-true\">\n"; $dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".xml::sanitize($fifo_extension)."\$\" break=\"on-true\">\n";
$dialplan_xml .= " <action application=\"set\" data=\"fifo_uuid=".$fifo_uuid."\" inline=\"true\"/>\n"; $dialplan_xml .= " <action application=\"set\" data=\"fifo_uuid=".xml::sanitize($fifo_uuid)."\" inline=\"true\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"fifo_music=".$fifo_music."\" inline=\"true\"/>\n"; $dialplan_xml .= " <action application=\"set\" data=\"fifo_music=".xml::sanitize($fifo_music)."\" inline=\"true\"/>\n";
if ($fifo_strategy == 'longest_idle_agent') {
$dialplan_xml .= " <action application=\"set\" data=\"fifo_strategy=waiting_longer\" inline=\"true\"/>\n";
}
if ($fifo_strategy == 'simultaneous') {
$dialplan_xml .= " <action application=\"set\" data=\"fifo_strategy=more_ppl\" inline=\"true\"/>\n";
}
/*
<action application="set" data="fifo_orbit_dialplan=XML"/>
<action application="set" data="fifo_orbit_context=default"/>
<action application="set" data="fifo_orbit_announce=digits/6.wav"/>
<action application="set" data="fifo_caller_exit_key=2"/>
<action application="set" data="fifo_caller_exit_to_orbit=true"/>
*/
if (!empty($fifo_exit_key)) {
$dialplan_xml .= " <action application=\"set\" data=\"fifo_caller_exit_key=".xml::sanitize($fifo_exit_key)."\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"fifo_orbit_dialplan=XML\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"fifo_orbit_context=".xml::sanitize($_SESSION['domain_name'])."\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"fifo_caller_exit_to_orbit=true\"/>\n";
}
if (!empty($fifo_orbit_exten)) {
$dialplan_xml .= " <action application=\"set\" data=\"fifo_orbit_exten=".xml::sanitize($fifo_orbit_exten)."\"/>\n";
}
$dialplan_xml .= " <action application=\"answer\" data=\"\"/>\n"; $dialplan_xml .= " <action application=\"answer\" data=\"\"/>\n";
$dialplan_xml .= " <action application=\"fifo\" data=\"$queue_name in\"/>\n"; $dialplan_xml .= " <action application=\"fifo\" data=\"".xml::sanitize($queue_name)." in\"/>\n";
$dialplan_xml .= " </condition>\n"; $dialplan_xml .= " </condition>\n";
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".$fifo_agent_status_xml."\$\" break=\"on-true\">\n"; $dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".xml::sanitize($fifo_agent_status_xml)."\$\" break=\"on-true\">\n";
$dialplan_xml .= " <action application=\"set\" data=\"fifo_uuid=".$fifo_uuid."\" inline=\"true\"/>\n"; $dialplan_xml .= " <action application=\"set\" data=\"fifo_uuid=".xml::sanitize($fifo_uuid)."\" inline=\"true\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"fifo_name=$queue_name\" inline=\"true\"/>\n"; $dialplan_xml .= " <action application=\"set\" data=\"fifo_name=".xml::sanitize($queue_name)."\" inline=\"true\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"user_name=\${caller_id_number}@\${domain_name}\" inline=\"true\"/>\n"; $dialplan_xml .= " <action application=\"set\" data=\"user_name=\${caller_id_number}@\${domain_name}\" inline=\"true\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"pin_number=\" inline=\"true\"/>\n"; $dialplan_xml .= " <action application=\"set\" data=\"pin_number=\" inline=\"true\"/>\n";
$dialplan_xml .= " <action application=\"lua\" data=\"app/fifo/resources/scripts/member.lua\"/>\n"; $dialplan_xml .= " <action application=\"lua\" data=\"app/fifo/resources/scripts/member.lua\"/>\n";
$dialplan_xml .= " </condition>\n"; $dialplan_xml .= " </condition>\n";
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".$fifo_agent_queue_xml."\$\" break=\"on-true\">\n"; $dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".xml::sanitize($fifo_agent_queue_xml)."\$\" break=\"on-true\">\n";
$dialplan_xml .= " <action application=\"set\" data=\"fifo_uuid=".$fifo_uuid."\" inline=\"true\"/>\n"; $dialplan_xml .= " <action application=\"set\" data=\"fifo_uuid=".xml::sanitize($fifo_uuid)."\" inline=\"true\"/>\n";
$dialplan_xml .= " <action application=\"set\" data=\"fifo_music=".$fifo_music."\" inline=\"true\"/>\n"; $dialplan_xml .= " <action application=\"set\" data=\"fifo_music=".xml::sanitize($fifo_music)."\" inline=\"true\"/>\n";
$dialplan_xml .= " <action application=\"answer\" data=\"\"/>\n"; $dialplan_xml .= " <action application=\"answer\" data=\"\"/>\n";
$dialplan_xml .= " <action application=\"fifo\" data=\"$queue_name out wait\"/>\n"; $dialplan_xml .= " <action application=\"fifo\" data=\"".xml::sanitize($queue_name)." out wait\"/>\n";
$dialplan_xml .= " </condition>\n"; $dialplan_xml .= " </condition>\n";
$dialplan_xml .= "</extension>\n"; $dialplan_xml .= "</extension>\n";
@ -247,7 +342,6 @@
$p->add("dialplan_edit", "temp"); $p->add("dialplan_edit", "temp");
//save the data //save the data
$database = new database;
$database->app_name = 'fifo'; $database->app_name = 'fifo';
$database->app_uuid = '16589224-c876-aeb3-f59f-523a1c0801f7'; $database->app_uuid = '16589224-c876-aeb3-f59f-523a1c0801f7';
$result = $database->save($array); $result = $database->save($array);
@ -296,6 +390,10 @@
$sql .= " fifo_extension, "; $sql .= " fifo_extension, ";
$sql .= " fifo_agent_status, "; $sql .= " fifo_agent_status, ";
$sql .= " fifo_agent_queue, "; $sql .= " fifo_agent_queue, ";
$sql .= " fifo_strategy, ";
$sql .= " fifo_timeout_seconds, ";
$sql .= " fifo_exit_key, ";
$sql .= " fifo_exit_action, ";
$sql .= " fifo_music, "; $sql .= " fifo_music, ";
$sql .= " domain_uuid, "; $sql .= " domain_uuid, ";
$sql .= " fifo_order, "; $sql .= " fifo_order, ";
@ -306,7 +404,6 @@
//$sql .= "and domain_uuid = :domain_uuid "; //$sql .= "and domain_uuid = :domain_uuid ";
//$parameters['domain_uuid'] = $_SESSION['domain_uuid']; //$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['fifo_uuid'] = $fifo_uuid; $parameters['fifo_uuid'] = $fifo_uuid;
$database = new database;
$row = $database->select($sql, $parameters, 'row'); $row = $database->select($sql, $parameters, 'row');
if (is_array($row) && @sizeof($row) != 0) { if (is_array($row) && @sizeof($row) != 0) {
$dialplan_uuid = $row["dialplan_uuid"]; $dialplan_uuid = $row["dialplan_uuid"];
@ -314,6 +411,10 @@
$fifo_extension = $row["fifo_extension"]; $fifo_extension = $row["fifo_extension"];
$fifo_agent_status = $row["fifo_agent_status"]; $fifo_agent_status = $row["fifo_agent_status"];
$fifo_agent_queue = $row["fifo_agent_queue"]; $fifo_agent_queue = $row["fifo_agent_queue"];
$fifo_strategy = $row["fifo_strategy"];
$fifo_timeout_seconds = $row["fifo_timeout_seconds"];
$fifo_exit_key = $row["fifo_exit_key"];
$fifo_exit_action = $row["fifo_exit_action"];
$fifo_music = $row["fifo_music"]; $fifo_music = $row["fifo_music"];
$domain_uuid = $row["domain_uuid"]; $domain_uuid = $row["domain_uuid"];
$fifo_order = $row["fifo_order"]; $fifo_order = $row["fifo_order"];
@ -339,7 +440,6 @@
//$sql .= "and domain_uuid = '".$domain_uuid."' "; //$sql .= "and domain_uuid = '".$domain_uuid."' ";
//$parameters['domain_uuid'] = $_SESSION['domain_uuid']; //$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['fifo_uuid'] = $fifo_uuid; $parameters['fifo_uuid'] = $fifo_uuid;
$database = new database;
$fifo_members = $database->select($sql, $parameters, 'all'); $fifo_members = $database->select($sql, $parameters, 'all');
unset ($sql, $parameters); unset ($sql, $parameters);
} }
@ -358,16 +458,28 @@
$fifo_member_uuid = uuid(); $fifo_member_uuid = uuid();
} }
//add an empty row //add an empty row to the members array
$x = isset($fifo_members) && is_array($fifo_members) ? sizeof($fifo_members) : 0; if (count($fifo_members) == 0) {
$fifo_members[$x]['domain_uuid'] = $_SESSION['domain_uuid']; $rows = $settings->get('fifo', 'option_add_rows', '5');
$fifo_members[$x]['fifo_uuid'] = $fifo_uuid; $id = 0;
$fifo_members[$x]['fifo_member_uuid'] = uuid(); $show_option_delete = false;
$fifo_members[$x]['member_contact'] = ''; }
$fifo_members[$x]['member_call_timeout'] = ''; if (count($fifo_members) > 0) {
//$fifo_members[$x]['member_simultaneous'] = ''; $rows = $settings->get('fifo', 'option_edit_rows', '1');
$fifo_members[$x]['member_wrap_up_time'] = ''; $id = count($fifo_members)+1;
$fifo_members[$x]['member_enabled'] = ''; $show_option_delete = true;
}
for ($x = 0; $x < $rows; $x++) {
$fifo_members[$id]['domain_uuid'] = $_SESSION['domain_uuid'];
$fifo_members[$id]['fifo_uuid'] = $fifo_uuid;
$fifo_members[$id]['fifo_member_uuid'] = uuid();
$fifo_members[$id]['member_contact'] = '';
$fifo_members[$id]['member_call_timeout'] = '';
//$fifo_members[$id]['member_simultaneous'] = '';
$fifo_members[$id]['member_wrap_up_time'] = '';
$fifo_members[$id]['member_enabled'] = '';
$id++;
}
//create token //create token
$object = new token; $object = new token;
@ -377,11 +489,14 @@
$destination = new destinations; $destination = new destinations;
//set the defaults //set the defaults
if (empty($fifo_timeout_seconds)) {
$fifo_timeout_seconds = 0;
}
if (empty($fifo_order)) { if (empty($fifo_order)) {
$fifo_order = 50; $fifo_order = 50;
} }
if (!isset($fifo_enabled)) { if (empty($fifo_enabled)) {
// $fifo_enabled = true; $fifo_enabled = true;
} }
//show the header //show the header
@ -422,7 +537,7 @@
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n"; echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n"; echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n"; echo "<td width='30%' class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-fifo_name']."\n"; echo " ".$text['label-fifo_name']."\n";
echo "</td>\n"; echo "</td>\n";
echo "<td class='vtable' style='position: relative;' align='left'>\n"; echo "<td class='vtable' style='position: relative;' align='left'>\n";
@ -465,6 +580,20 @@
echo "</td>\n"; echo "</td>\n";
echo "</tr>\n"; echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-strategy']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='fifo_strategy' onchange=\"getElementById('destination_delayorder').innerHTML = (this.selectedIndex == 1 || this.selectedIndex == 3) ? '".$text['label-destination_order']."' : '".$text['label-destination_delay']."';\">\n";
echo " <option value='longest_idle_agent' ".(($fifo_strategy == "'option-longest_idle_agent") ? "selected='selected'" : null).">".$text['option-longest_idle_agent']."</option>\n";
echo " <option value='simultaneous' ".(($fifo_strategy == "simultaneous") ? "selected='selected'" : null).">".$text['option-simultaneous']."</option>\n";
echo " </select>\n";
echo "<br />\n";
echo $text['description-strategy']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n"; echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n"; echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-fifo_members']."\n"; echo " ".$text['label-fifo_members']."\n";
@ -477,7 +606,7 @@
//echo " <th class='vtablereq'>".$text['label-member_simultaneous']."</th>\n"; //echo " <th class='vtablereq'>".$text['label-member_simultaneous']."</th>\n";
echo " <th class='vtablereq'>".$text['label-member_wrap_up_time']."</th>\n"; echo " <th class='vtablereq'>".$text['label-member_wrap_up_time']."</th>\n";
echo " <th class='vtablereq'>".$text['label-member_enabled']."</th>\n"; echo " <th class='vtablereq'>".$text['label-member_enabled']."</th>\n";
if (is_array($fifo_members) && @sizeof($fifo_members) > 1 && permission_exists('fifo_member_delete')) { if ($show_option_delete && is_array($fifo_members) && @sizeof($fifo_members) > 1 && permission_exists('fifo_member_delete')) {
echo " <td class='vtable edit_delete_checkbox_all' onmouseover=\"swap_display('delete_label_details', 'delete_toggle_details');\" onmouseout=\"swap_display('delete_label_details', 'delete_toggle_details');\">\n"; echo " <td class='vtable edit_delete_checkbox_all' onmouseover=\"swap_display('delete_label_details', 'delete_toggle_details');\" onmouseout=\"swap_display('delete_label_details', 'delete_toggle_details');\">\n";
echo " <span id='delete_label_details'>".$text['label-delete']."</span>\n"; echo " <span id='delete_label_details'>".$text['label-delete']."</span>\n";
echo " <span id='delete_toggle_details'><input type='checkbox' id='checkbox_all_details' name='checkbox_all' onclick=\"edit_all_toggle('details'); checkbox_on_change(this);\"></span>\n"; echo " <span id='delete_toggle_details'><input type='checkbox' id='checkbox_all_details' name='checkbox_all' onclick=\"edit_all_toggle('details'); checkbox_on_change(this);\"></span>\n";
@ -523,7 +652,7 @@
echo " </select>\n"; echo " </select>\n";
} }
echo " </td>\n"; echo " </td>\n";
if (is_array($fifo_members) && @sizeof($fifo_members) > 1 && permission_exists('fifo_member_delete')) { if ($show_option_delete && is_array($fifo_members) && @sizeof($fifo_members) > 1 && permission_exists('fifo_member_delete')) {
if (is_uuid($row['fifo_member_uuid'])) { if (is_uuid($row['fifo_member_uuid'])) {
echo " <td class='vtable' style='text-align: center; padding-bottom: 3px;'>\n"; echo " <td class='vtable' style='text-align: center; padding-bottom: 3px;'>\n";
echo " <input type='checkbox' name='fifo_members[".$x."][checked]' value='true' class='chk_delete checkbox_details' onclick=\"checkbox_on_change(this);\">\n"; echo " <input type='checkbox' name='fifo_members[".$x."][checked]' value='true' class='chk_delete checkbox_details' onclick=\"checkbox_on_change(this);\">\n";
@ -543,16 +672,47 @@
echo "</td>\n"; echo "</td>\n";
echo "</tr>\n"; echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-fifo_timeout_seconds']."\n";
echo "</td>\n";
echo "<td class='vtable' style='position: relative;' align='left'>\n";
echo " <input class='formfld' type='text' name='fifo_timeout_seconds' maxlength='255' value='".escape($fifo_timeout_seconds)."'>\n";
echo "<br />\n";
echo $text['description-fifo_timeout_seconds']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-fifo_exit_key']."\n";
echo "</td>\n";
echo "<td class='vtable' style='position: relative;' align='left'>\n";
echo " <input class='formfld' type='text' name='fifo_exit_key' maxlength='255' value='".escape($fifo_exit_key)."'>\n";
echo "<br />\n";
echo $text['description-fifo_exit_key']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-fifo_exit_action']."\n";
echo "</td>\n";
echo "<td class='vtable' style='position: relative;' align='left'>\n";
$destination = new destinations;
echo $destination->select('dialplan', 'fifo_exit_action', $fifo_exit_action);
echo "<br />\n";
echo $text['description-fifo_exit_action']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n"; echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n"; echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-fifo_music']."\n"; echo " ".$text['label-fifo_music']."\n";
echo "</td>\n"; echo "</td>\n";
echo "<td class='vtable' style='position: relative;' align='left'>\n"; echo "<td class='vtable' style='position: relative;' align='left'>\n";
//echo " <input class='formfld' type='text' name='fifo_music' maxlength='255' value='".escape($fifo_music)."'>\n";
$ringbacks = new ringbacks; $ringbacks = new ringbacks;
echo $ringbacks->select('fifo_music', $fifo_music ?? null); echo $ringbacks->select('fifo_music', $fifo_music ?? null);
echo "<br />\n"; echo "<br />\n";
echo $text['description-fifo_music']."\n"; echo $text['description-fifo_music']."\n";
echo "</td>\n"; echo "</td>\n";

View File

@ -2,12 +2,7 @@
/** /**
* fifo class * fifo class
*
* @method null delete
* @method null toggle
* @method null copy
*/ */
if (!class_exists('fifo')) {
class fifo { class fifo {
/** /**
@ -283,6 +278,3 @@ if (!class_exists('fifo')) {
} }
} }
}
?>

View File

@ -118,7 +118,7 @@
$show = !empty($_GET["show"]) ? $_GET["show"] : ''; $show = !empty($_GET["show"]) ? $_GET["show"] : '';
//set from session variables //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 total gateway count from the database //get total gateway count from the database
$sql = "select count(*) from v_gateways where true "; $sql = "select count(*) from v_gateways where true ";
@ -278,7 +278,7 @@
echo th_order_by('hostname', $text['label-hostname'], $order_by, $order, null, "class='hide-sm-dn'"); echo th_order_by('hostname', $text['label-hostname'], $order_by, $order, null, "class='hide-sm-dn'");
echo th_order_by('enabled', $text['label-enabled'], $order_by, $order, null, "class='center'"); echo th_order_by('enabled', $text['label-enabled'], $order_by, $order, null, "class='center'");
echo th_order_by('description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'"); echo th_order_by('description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'");
if (permission_exists('gateway_edit') && $list_row_edit_button == 'true') { if (permission_exists('gateway_edit') && $list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -286,8 +286,12 @@
if (!empty($gateways)) { if (!empty($gateways)) {
$x = 0; $x = 0;
foreach($gateways as $row) { foreach($gateways as $row) {
$list_row_url = '';
if (permission_exists('gateway_edit')) { if (permission_exists('gateway_edit')) {
$list_row_url = "gateway_edit.php?id=".urlencode($row['gateway_uuid']); $list_row_url = "gateway_edit.php?id=".urlencode($row['gateway_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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('gateway_add') || permission_exists('gateway_edit') || permission_exists('gateway_delete')) { if (permission_exists('gateway_add') || permission_exists('gateway_edit') || permission_exists('gateway_delete')) {
@ -367,9 +371,9 @@
} }
echo " </td>\n"; echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row["description"])."&nbsp;</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row["description"])."&nbsp;</td>\n";
if (permission_exists('gateway_edit') && $list_row_edit_button == 'true') { if (permission_exists('gateway_edit') && $list_row_edit_button) {
echo " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$list_row_edit_button,'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -391,3 +395,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -25,7 +25,6 @@
*/ */
//define the gateways class //define the gateways class
if (!class_exists('gateways')) {
class gateways { class gateways {
/** /**
@ -583,6 +582,3 @@ if (!class_exists('gateways')) {
} }
} }
}
?>

View File

@ -349,7 +349,7 @@
$dialplan_xml = "<extension name=\"".xml::sanitize($ivr_menu_name)."\" continue=\"false\" uuid=\"".xml::sanitize($dialplan_uuid)."\">\n"; $dialplan_xml = "<extension name=\"".xml::sanitize($ivr_menu_name)."\" continue=\"false\" uuid=\"".xml::sanitize($dialplan_uuid)."\">\n";
$dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".xml::sanitize($ivr_menu_extension)."\$\">\n"; $dialplan_xml .= " <condition field=\"destination_number\" expression=\"^".xml::sanitize($ivr_menu_extension)."\$\">\n";
$dialplan_xml .= " <action application=\"ring_ready\" data=\"\"/>\n"; $dialplan_xml .= " <action application=\"ring_ready\" data=\"\"/>\n";
if ($_SESSION['ivr_menu']['answer']['boolean'] == 'true') { if (filter_var($_SESSION['ivr_menu']['answer']['boolean'] ?? false, FILTER_VALIDATE_BOOL)) {
$dialplan_xml .= " <action application=\"answer\" data=\"\"/>\n"; $dialplan_xml .= " <action application=\"answer\" data=\"\"/>\n";
} }
$dialplan_xml .= " <action application=\"sleep\" data=\"1000\"/>\n"; $dialplan_xml .= " <action application=\"sleep\" data=\"1000\"/>\n";

View File

@ -94,7 +94,7 @@
$show = $_GET["show"] ?? ''; $show = $_GET["show"] ?? '';
//set from session variables //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);
//prepare to page the results //prepare to page the results
$sql = "select count(*) from v_ivr_menus "; $sql = "select count(*) from v_ivr_menus ";
@ -228,7 +228,7 @@
echo th_order_by('ivr_menu_extension', $text['label-extension'], $order_by, $order); echo th_order_by('ivr_menu_extension', $text['label-extension'], $order_by, $order);
echo th_order_by('ivr_menu_enabled', $text['label-enabled'], $order_by, $order, null, "class='center'"); echo th_order_by('ivr_menu_enabled', $text['label-enabled'], $order_by, $order, null, "class='center'");
echo th_order_by('ivr_menu_description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'"); echo th_order_by('ivr_menu_description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'");
if (permission_exists('ivr_menu_edit') && $list_row_edit_button == 'true') { if (permission_exists('ivr_menu_edit') && $list_row_edit_button) {
echo " <td class='action-button'>&nbsp;</td>\n"; echo " <td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -236,8 +236,12 @@
if (!empty($ivr_menus)) { if (!empty($ivr_menus)) {
$x = 0; $x = 0;
foreach($ivr_menus as $row) { foreach($ivr_menus as $row) {
$list_row_url = '';
if (permission_exists('ivr_menu_edit')) { if (permission_exists('ivr_menu_edit')) {
$list_row_url = "ivr_menu_edit.php?id=".urlencode($row['ivr_menu_uuid']); $list_row_url = "ivr_menu_edit.php?id=".urlencode($row['ivr_menu_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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('ivr_menu_add') || permission_exists('ivr_menu_edit') || permission_exists('ivr_menu_delete')) { if (permission_exists('ivr_menu_add') || permission_exists('ivr_menu_edit') || permission_exists('ivr_menu_delete')) {
@ -274,7 +278,7 @@
} }
echo " </td>\n"; echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row['ivr_menu_description'])."&nbsp;</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row['ivr_menu_description'])."&nbsp;</td>\n";
if (permission_exists('ivr_menu_edit') && $list_row_edit_button == 'true') { if (permission_exists('ivr_menu_edit') && $list_row_edit_button) {
echo " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -298,3 +302,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -25,7 +25,6 @@
*/ */
//define the ivr_menu class //define the ivr_menu class
if (!class_exists('ivr_menu')) {
class ivr_menu { class ivr_menu {
/** /**
@ -489,6 +488,3 @@ if (!class_exists('ivr_menu')) {
} }
} }
}
?>

View File

@ -27,7 +27,6 @@
//includes files //includes files
require_once dirname(__DIR__, 2) . "/resources/require.php"; require_once dirname(__DIR__, 2) . "/resources/require.php";
require_once "resources/check_auth.php"; require_once "resources/check_auth.php";
require_once "resources/classes/waveform.php";
use maximal\audio\Waveform; 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::$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::$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::$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::$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 = 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::$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; $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 $wf = $waveform->getWaveform($temp_filename, 1600, $height ?? 180); // input: png filename returns boolean true/false, or 'base64' returns base64 string
} }

View File

@ -205,6 +205,7 @@
echo " <div style='clear: both;'></div>\n"; echo " <div style='clear: both;'></div>\n";
echo "</div>\n"; echo "</div>\n";
echo "<div class='card'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n"; echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n"; echo "<tr>\n";
@ -297,6 +298,7 @@
echo "</tr>\n"; echo "</tr>\n";
echo "</table>"; echo "</table>";
echo "</div>";
echo "<br><br>"; echo "<br><br>";
if ($action == "update") { if ($action == "update") {

View File

@ -60,7 +60,7 @@
} }
//set from session variables //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);
//process the http post data by action //process the http post data by action
if ($action != '' && is_array($modules) && @sizeof($modules) != 0) { if ($action != '' && is_array($modules) && @sizeof($modules) != 0) {
@ -185,7 +185,7 @@
} }
echo "<th class='center'>".$text['label-enabled']."</th>\n"; echo "<th class='center'>".$text['label-enabled']."</th>\n";
echo "<th class='hide-sm-dn' style='min-width: 40%;'>".$text['label-description']."</th>\n"; echo "<th class='hide-sm-dn' style='min-width: 40%;'>".$text['label-description']."</th>\n";
if (permission_exists('module_edit') && $list_row_edit_button == 'true') { if (permission_exists('module_edit') && $list_row_edit_button) {
echo "<td class='action-button'>&nbsp;</td>\n"; echo "<td class='action-button'>&nbsp;</td>\n";
} }
echo "</tr>\n"; echo "</tr>\n";
@ -202,8 +202,12 @@
echo "</tr>\n"; echo "</tr>\n";
write_header($row["module_category"]); write_header($row["module_category"]);
} }
$list_row_url = '';
if (permission_exists('module_edit')) { if (permission_exists('module_edit')) {
$list_row_url = "module_edit.php?id=".urlencode($row['module_uuid']); $list_row_url = "module_edit.php?id=".urlencode($row['module_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 "<tr class='list-row' href='".$list_row_url."'>\n"; echo "<tr class='list-row' href='".$list_row_url."'>\n";
if (permission_exists('module_edit') || permission_exists('module_delete')) { if (permission_exists('module_edit') || permission_exists('module_delete')) {
@ -257,7 +261,7 @@
} }
echo " </td>\n"; echo " </td>\n";
echo " <td class='description overflow hide-sm-dn'>".escape($row["module_description"])."&nbsp;</td>\n"; echo " <td class='description overflow hide-sm-dn'>".escape($row["module_description"])."&nbsp;</td>\n";
if (permission_exists('module_edit') && $list_row_edit_button == 'true') { if (permission_exists('module_edit') && $list_row_edit_button) {
echo " <td class='action-button'>"; echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]);
echo " </td>\n"; echo " </td>\n";
@ -283,3 +287,4 @@
require_once "resources/footer.php"; require_once "resources/footer.php";
?> ?>

View File

@ -25,7 +25,6 @@
*/ */
//define the modules class //define the modules class
if (!class_exists('modules')) {
class modules { class modules {
/** /**
@ -1101,10 +1100,8 @@ if (!class_exists('modules')) {
} //class } //class
}
/* /*
require_once "resources/classes/modules.php";
$mod = new modules; $mod = new modules;
$mod->dir = $_SESSION['switch']['mod']['dir']; $mod->dir = $_SESSION['switch']['mod']['dir'];
echo $mod->dir."\n"; echo $mod->dir."\n";
@ -1138,5 +1135,3 @@ echo $mod->dir."\n";
//print_r($result); //print_r($result);
//echo "</pre>\n"; //echo "</pre>\n";
*/ */
?>

View File

@ -308,7 +308,6 @@
$cache = new cache; $cache = new cache;
$cache->delete("configuration:local_stream.conf"); $cache->delete("configuration:local_stream.conf");
//require_once "app/music_on_hold/resources/classes/switch_music_on_hold.php";
$music = new switch_music_on_hold; $music = new switch_music_on_hold;
$music->reload(); $music->reload();

View File

@ -27,7 +27,6 @@
*/ */
//define the switch_music_on_hold class //define the switch_music_on_hold class
if (!class_exists('switch_music_on_hold')) {
class switch_music_on_hold { class switch_music_on_hold {
/** /**
@ -85,7 +84,6 @@ if (!class_exists('switch_music_on_hold')) {
} }
//recordings //recordings
if (is_dir($_SERVER["PROJECT_ROOT"].'/app/recordings')) { if (is_dir($_SERVER["PROJECT_ROOT"].'/app/recordings')) {
require_once "app/recordings/resources/classes/switch_recordings.php";
$recordings_c = new switch_recordings; $recordings_c = new switch_recordings;
$recordings = $recordings_c->list_recordings(); $recordings = $recordings_c->list_recordings();
if (is_array($recordings) && sizeof($recordings) > 0) { if (is_array($recordings) && sizeof($recordings) > 0) {
@ -447,12 +445,9 @@ if (!class_exists('switch_music_on_hold')) {
} //method } //method
} //class } //class
}
//build and save the XML //build and save the XML
//require_once "app/music_on_hold/resources/classes/switch_music_on_hold.php";
//$moh = new switch_music_on_hold; //$moh = new switch_music_on_hold;
//$moh->xml(); //$moh->xml();
//$moh->save(); //$moh->save();
?>

Some files were not shown because too many files have changed in this diff Show More