Merge branch 'master' of https://github.com/fusionpbx/fusionpbx
This commit is contained in:
@@ -1729,6 +1729,17 @@ $text['button-save']['ro'] = "Salvează";
|
||||
$text['button-save']['ar-eg'] = "حفظ";
|
||||
$text['button-save']['he'] = "שמור";
|
||||
|
||||
$text['button-export']['en-us'] = "Export";
|
||||
$text['button-export']['es-cl'] = "Exportación";
|
||||
$text['button-export']['pt-pt'] = "Exportação";
|
||||
$text['button-export']['fr-fr'] = "Exportation";
|
||||
$text['button-export']['pt-br'] = "Exportação ";
|
||||
$text['button-export']['pl'] = "Eksportuj";
|
||||
$text['button-export']['sv-se'] = "Export";
|
||||
$text['button-export']['uk'] = "";
|
||||
$text['button-export']['de-at'] = "Export";
|
||||
$text['button-export']['he'] = "יצוא";
|
||||
|
||||
$text['button-edit']['en-us'] = "Edit";
|
||||
$text['button-edit']['es-cl'] = "Editar";
|
||||
$text['button-edit']['pt-pt'] = "Editar";
|
||||
|
||||
@@ -0,0 +1,187 @@
|
||||
<?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) 2008-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
require_once "resources/paging.php";
|
||||
if (if_group("superadmin")) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
function array2csv(array &$array)
|
||||
{
|
||||
if (count($array) == 0) {
|
||||
return null;
|
||||
}
|
||||
ob_start();
|
||||
$df = fopen("php://output", 'w');
|
||||
fputcsv($df, array_keys(reset($array)));
|
||||
foreach ($array as $row) {
|
||||
fputcsv($df, $row);
|
||||
}
|
||||
fclose($df);
|
||||
return ob_get_clean();
|
||||
}
|
||||
|
||||
function download_send_headers($filename) {
|
||||
// disable caching
|
||||
$now = gmdate("D, d M Y H:i:s");
|
||||
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
|
||||
header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
|
||||
header("Last-Modified: {$now} GMT");
|
||||
|
||||
// force download
|
||||
header("Content-Type: application/force-download");
|
||||
header("Content-Type: application/octet-stream");
|
||||
header("Content-Type: application/download");
|
||||
|
||||
// disposition / encoding on response body
|
||||
header("Content-Disposition: attachment;filename={$filename}");
|
||||
header("Content-Transfer-Encoding: binary");
|
||||
}
|
||||
|
||||
if (isset($_REQUEST["column_group"])) {
|
||||
|
||||
$columns = implode(",",$_REQUEST["column_group"]);
|
||||
$sql = "select " . $columns . " from v_extensions ";
|
||||
$sql .= " where domain_uuid = '".$domain_uuid."' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$extensions = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
|
||||
unset ($sql, $prep_statement);
|
||||
// print_r($extensions);
|
||||
|
||||
download_send_headers("data_export_" . date("Y-m-d") . ".csv");
|
||||
echo array2csv($extensions);
|
||||
die();
|
||||
|
||||
}
|
||||
|
||||
$columns[] = 'extension_uuid';
|
||||
$columns[] = 'domain_uuid';
|
||||
$columns[] = 'extension';
|
||||
$columns[] = 'number_alias';
|
||||
$columns[] = 'password';
|
||||
$columns[] = 'accountcode';
|
||||
$columns[] = 'effective_caller_id_name';
|
||||
$columns[] = 'effective_caller_id_number';
|
||||
$columns[] = 'outbound_caller_id_name';
|
||||
$columns[] = 'outbound_caller_id_number';
|
||||
$columns[] = 'emergency_caller_id_name';
|
||||
$columns[] = 'emergency_caller_id_number';
|
||||
$columns[] = 'directory_full_name';
|
||||
$columns[] = 'directory_visible';
|
||||
$columns[] = 'directory_exten_visible';
|
||||
$columns[] = 'limit_max';
|
||||
$columns[] = 'limit_destination';
|
||||
$columns[] = 'missed_call_app';
|
||||
$columns[] = 'missed_call_data';
|
||||
$columns[] = 'user_context';
|
||||
$columns[] = 'toll_allow';
|
||||
$columns[] = 'call_timeout';
|
||||
$columns[] = 'call_group';
|
||||
$columns[] = 'call_screen_enabled';
|
||||
$columns[] = 'user_record';
|
||||
$columns[] = 'hold_music';
|
||||
$columns[] = 'auth_acl';
|
||||
$columns[] = 'cidr';
|
||||
$columns[] = 'sip_force_contact';
|
||||
$columns[] = 'nibble_account';
|
||||
$columns[] = 'sip_force_expires';
|
||||
$columns[] = 'mwi_account';
|
||||
$columns[] = 'sip_bypass_media';
|
||||
$columns[] = 'unique_id';
|
||||
$columns[] = 'dial_string';
|
||||
$columns[] = 'dial_user';
|
||||
$columns[] = 'dial_domain';
|
||||
$columns[] = 'do_not_disturb';
|
||||
$columns[] = 'forward_all_destination';
|
||||
$columns[] = 'forward_all_enabled';
|
||||
$columns[] = 'forward_busy_destination';
|
||||
$columns[] = 'forward_busy_enabled';
|
||||
$columns[] = 'forward_no_answer_destination';
|
||||
$columns[] = 'forward_no_answer_enabled';
|
||||
$columns[] = 'follow_me_uuid';
|
||||
$columns[] = 'enabled';
|
||||
$columns[] = 'description';
|
||||
$columns[] = 'forward_caller_id_uuid';
|
||||
$columns[] = 'absolute_codec_string';
|
||||
$columns[] = 'forward_user_not_registered_destination';
|
||||
$columns[] = 'forward_user_not_registered_enabled';
|
||||
|
||||
$c = 0;
|
||||
$row_style["0"] = "row_style0";
|
||||
$row_style["1"] = "row_style1";
|
||||
|
||||
//begin the page content
|
||||
require_once "resources/header.php";
|
||||
|
||||
echo "<form method='post' name='frm' action='' autocomplete='off'>\n";
|
||||
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<th><input type=\"checkbox\" id=\"selecctall\"/>";
|
||||
echo "</th>";
|
||||
echo "<th> Column Name";
|
||||
echo "</th>";
|
||||
echo "<th> Description";
|
||||
echo "</th>";
|
||||
echo "</tr>";
|
||||
echo "</tr>";
|
||||
foreach ($columns as $value) {
|
||||
echo "<tr>\n";
|
||||
echo " <td width = '20px' valign='top' class='".$row_style[$c]."'><input class=\"checkbox1\" type=\"checkbox\" name=\"column_group[]\" value=\"$value\"/>";
|
||||
echo "</td>";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'> $value";
|
||||
echo "</td>";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>";
|
||||
echo "</td>";
|
||||
echo "</tr>";
|
||||
if ($c==0) { $c=1; } else { $c=0; }
|
||||
}
|
||||
|
||||
echo " <tr>\n";
|
||||
echo " <td colspan='3' align='right'>\n";
|
||||
echo " <br>";
|
||||
echo " <input type='submit' class='btn' value='".$text['button-export']."'>\n";
|
||||
echo " </td>\n";
|
||||
echo " </tr>";
|
||||
|
||||
echo "</table>";
|
||||
echo "<br><br>";
|
||||
echo "</form>";
|
||||
|
||||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
?>
|
||||
@@ -123,6 +123,9 @@ require_once "resources/paging.php";
|
||||
echo " </td>\n";
|
||||
echo " <form method='get' action=''>\n";
|
||||
echo " <td width='30%' align='right'>\n";
|
||||
if (if_group("superadmin")) {
|
||||
echo " <input type='button' class='btn' value='".$text['button-export']."' onclick=\"window.location.href='extension_download.php'\">\n";
|
||||
}
|
||||
echo " <input type='text' class='txt' style='width: 150px' name='search' value='".$search."'>";
|
||||
echo " <input type='submit' class='btn' name='submit' value='".$text['button-search']."'>";
|
||||
echo " </td>\n";
|
||||
|
||||
@@ -146,6 +146,13 @@
|
||||
$apps[$x]['permissions'][$y]['name'] = 'fax_file_delete';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'admin';
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = 'fax_active_view';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'admin';
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = 'fax_active_all';
|
||||
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
|
||||
|
||||
//schema details
|
||||
$y = 0; //table array index
|
||||
|
||||
@@ -330,6 +330,17 @@ $text['label-log']['de-at'] = "Log";
|
||||
$text['label-log']['ro'] = "Log";
|
||||
$text['label-log']['he'] = "";
|
||||
|
||||
$text['label-active']['en-us'] = "Active";
|
||||
$text['label-active']['es-cl'] = "";
|
||||
$text['label-active']['pt-pt'] = "";
|
||||
$text['label-active']['fr-fr'] = "";
|
||||
$text['label-active']['pt-br'] = "";
|
||||
$text['label-active']['pl'] = "";
|
||||
$text['label-active']['sv-se'] = "";
|
||||
$text['label-active']['de-at'] = "";
|
||||
$text['label-active']['ro'] = "";
|
||||
$text['label-active']['he'] = "";
|
||||
|
||||
$text['label-location']['en-us'] = "Location";
|
||||
$text['label-location']['es-cl'] = "Localización";
|
||||
$text['label-location']['pt-pt'] = "Localização";
|
||||
@@ -2068,4 +2079,38 @@ $text['button-add']['de-at'] = "Hinzufügen";
|
||||
$text['button-add']['ro'] = "Adaugă";
|
||||
$text['button-add']['he'] = "הוספה";
|
||||
|
||||
$text['button-show_all']['en-us'] = "Show All";
|
||||
$text['button-show_all']['es-cl'] = "Mostrar Todos";
|
||||
$text['button-show_all']['pt-pt'] = "Mostrar Todos";
|
||||
$text['button-show_all']['fr-fr'] = "Montrer Tout";
|
||||
$text['button-show_all']['pt-br'] = "Mostrar Todos";
|
||||
$text['button-show_all']['pl'] = "Pokaż Wszystkie";
|
||||
$text['button-show_all']['uk'] = "Показати всі";
|
||||
$text['button-show_all']['de-at'] = "Alle anzeigen";
|
||||
$text['button-show_all']['he'] = "";
|
||||
|
||||
$text['fax-active_title']['en-us'] = "Fax queue";
|
||||
|
||||
$text['fax-active_description']['en-us'] = "Current status of fax queue";
|
||||
|
||||
$text['fax-active_title_fax_server']['en-us'] = "Fax";
|
||||
|
||||
$text['fax-active_title_enabled']['en-us'] = "Enabled";
|
||||
|
||||
$text['fax-active_title_status']['en-us'] = "Status";
|
||||
|
||||
$text['fax-active_title_next_time']['en-us'] = "Next time";
|
||||
|
||||
$text['fax-active_title_files']['en-us'] = "Files";
|
||||
|
||||
$text['fax-active_title_uri']['en-us'] = "URI";
|
||||
|
||||
$text['fax-active_status_wait']['en-us'] = "Wait";
|
||||
|
||||
$text['fax-active_status_execute']['en-us'] = "Execute";
|
||||
|
||||
$text['fax-active_status_success']['en-us'] = "Success";
|
||||
|
||||
$text['fax-active_status_fail']['en-us'] = "Fail";
|
||||
|
||||
?>
|
||||
@@ -170,6 +170,9 @@ else {
|
||||
if (permission_exists('fax_log_view')) {
|
||||
echo " <a href='fax_logs.php?id=".$row['fax_uuid']."'>".$text['label-log']."</a>";
|
||||
}
|
||||
if (permission_exists('fax_active_view')) {
|
||||
echo " <a href='fax_active.php?id=".$row['fax_uuid']."'>".$text['label-active']."</a>";
|
||||
}
|
||||
echo " </td>\n";
|
||||
echo " <td valign='top' class='row_stylebg' width='35%'>".$row['fax_description']." </td>\n";
|
||||
echo " <td class='list_control_icons'>";
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
<?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) 2008-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('fax_active_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//get the HTTP values and set as variables
|
||||
$show = trim($_REQUEST["show"]);
|
||||
if ($show != "all") { $show = ''; }
|
||||
|
||||
//
|
||||
$fax_uuid = false;
|
||||
if(isset($_REQUEST['id'])) {
|
||||
$fax_uuid = check_str($_REQUEST["id"]);
|
||||
}
|
||||
|
||||
//show the header
|
||||
$document['title'] = $text['title'];
|
||||
require_once "resources/header.php";
|
||||
|
||||
//ajax for refresh
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
//define refresh function, initial start
|
||||
var refresh = 1500;
|
||||
var source_url = 'fax_active_inc.php?';
|
||||
var timer_id;
|
||||
<?php
|
||||
if ($show == 'all') {
|
||||
echo "source_url = source_url + '&show=all';";
|
||||
}
|
||||
if ($fax_uuid) {
|
||||
echo "source_url = source_url + '&id=" . $fax_uuid . "';";
|
||||
}
|
||||
if (isset($_REQUEST["debug"])) {
|
||||
echo "source_url = source_url + '&debug';";
|
||||
}
|
||||
?>
|
||||
var ajax_get = function () {
|
||||
$.ajax({
|
||||
url: source_url, success: function(response){
|
||||
$("#ajax_reponse").html(response);
|
||||
}
|
||||
});
|
||||
timer_id = setTimeout(ajax_get, refresh);
|
||||
};
|
||||
|
||||
refresh_start();
|
||||
|
||||
//refresh controls
|
||||
function refresh_stop() {
|
||||
clearTimeout(timer_id);
|
||||
document.getElementById('refresh_state').innerHTML = "<img src='resources/images/refresh_paused.png' style='width: 16px; height: 16px; border: none; margin-top: 1px; cursor: pointer;' onclick='refresh_start();' alt=\"<?php echo $text['label-refresh_enable']?>\" title=\"<?php echo $text['label-refresh_enable']?>\">";
|
||||
}
|
||||
|
||||
function refresh_start() {
|
||||
if (document.getElementById('refresh_state')) { document.getElementById('refresh_state').innerHTML = "<img src='resources/images/refresh_active.gif' style='width: 16px; height: 16px; border: none; margin-top: 3px; cursor: pointer;' alt=\"<?php echo $text['label-refresh_pause']?>\" title=\"<?php echo $text['label-refresh_pause']?>\">"; }
|
||||
ajax_get();
|
||||
}
|
||||
|
||||
//call controls
|
||||
function hangup(uuid) {
|
||||
if (confirm("<?php echo $text['confirm-hangup']?>")) {
|
||||
send_cmd('fax_active_exec.php?cmd=delete&id='+uuid);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function send_cmd(url) {
|
||||
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
|
||||
xmlhttp=new XMLHttpRequest();
|
||||
}
|
||||
else {// code for IE6, IE5
|
||||
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}
|
||||
xmlhttp.open("GET",url,false);
|
||||
xmlhttp.send(null);
|
||||
document.getElementById('cmd_reponse').innerHTML=xmlhttp.responseText;
|
||||
}
|
||||
|
||||
</script>
|
||||
<?php
|
||||
echo "<div id='ajax_reponse'></div>\n";
|
||||
echo "<div id='time_stamp' style='visibility:hidden'>".date('Y-m-d-s')."</div>\n";
|
||||
echo "<br><br><br>";
|
||||
|
||||
require_once "resources/footer.php";
|
||||
|
||||
/*
|
||||
// deprecated functions for this page
|
||||
|
||||
function get_park_cmd(uuid, context) {
|
||||
cmd = \"uuid_transfer \"+uuid+\" -bleg *6000 xml \"+context;
|
||||
return escape(cmd);
|
||||
}
|
||||
|
||||
function get_record_cmd(uuid, prefix, name) {
|
||||
cmd = \"uuid_record \"+uuid+\" start ".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/".date("Y")."/".date("M")."/".date("d")."/\"+uuid+\".wav\";
|
||||
return escape(cmd);
|
||||
}
|
||||
*/
|
||||
?>
|
||||
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
/* $Id$ */
|
||||
/*
|
||||
v_exec.php
|
||||
Copyright (C) 2008 Mark J Crane
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('fax_active_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//authorized referrer
|
||||
if(stristr($_SERVER["HTTP_REFERER"], '/fax_active.php') === false) {
|
||||
echo " access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//http get variables set to php variables
|
||||
if (count($_GET)>0) {
|
||||
$cmd = trim(check_str($_GET['cmd']));
|
||||
$fax_uuid = trim(check_str($_GET['id']));
|
||||
}
|
||||
|
||||
//authorized commands
|
||||
if ($cmd == 'delete') {
|
||||
//authorized;
|
||||
} else {
|
||||
//not found. this command is not authorized
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
//Command
|
||||
if ($cmd == 'delete') {
|
||||
if($fax_uuid){
|
||||
$sql = <<<HERE
|
||||
delete from v_fax_tasks
|
||||
where fax_task_uuid='$fax_uuid'
|
||||
HERE;
|
||||
$result = $db->exec($sql);
|
||||
// if($result === false){
|
||||
// var_dump($db->errorInfo());
|
||||
// }
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,222 @@
|
||||
<?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) 2008-2012
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
*/
|
||||
include "root.php";
|
||||
require_once "resources/require.php";
|
||||
require_once "resources/check_auth.php";
|
||||
if (permission_exists('fax_active_view')) {
|
||||
//access granted
|
||||
}
|
||||
else {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
if ((!permission_exists('fax_active_all')) && ($show == 'all')) {
|
||||
echo "access denied";
|
||||
exit;
|
||||
}
|
||||
|
||||
$fax_uuid = false;
|
||||
if(isset($_REQUEST['id'])) {
|
||||
$fax_uuid = check_str($_REQUEST["id"]);
|
||||
}
|
||||
|
||||
//add multi-lingual support
|
||||
$language = new text;
|
||||
$text = $language->get();
|
||||
|
||||
//get the HTTP values and set as variables
|
||||
$show = trim($_REQUEST["show"]);
|
||||
if ($show != "all") { $show = ''; }
|
||||
|
||||
//include theme config for button images
|
||||
include_once("themes/".$_SESSION['domain']['template']['name']."/config.php");
|
||||
|
||||
$where = 'where (1 = 1)';
|
||||
|
||||
if($show !== 'all'){
|
||||
$where .= 'and (t3.domain_name = \'' . check_str($_SESSION['domain_name']) . '\')';
|
||||
}
|
||||
else if($fax_uuid){
|
||||
if(!permission_exists('fax_active_all')){
|
||||
$where .= 'and (t3.domain_name = \'' . check_str($_SESSION['domain_name']) . '\')';
|
||||
}
|
||||
$where .= 'and (t1.fax_uuid =\'' . check_str($fax_uuid) . '\')';
|
||||
}
|
||||
|
||||
$sql = <<<HERE
|
||||
select
|
||||
t1.fax_task_uuid as uuid,
|
||||
t1.fax_uuid as fax_uuid,
|
||||
t3.domain_name,
|
||||
t3.domain_uuid,
|
||||
t1.task_next_time as next_time,
|
||||
t1.task_interrupted as interrupted,
|
||||
t1.task_status as status,
|
||||
t1.task_uri as uri,
|
||||
t1.task_dial_string as dial_string,
|
||||
t1.task_dtmf as dtmf,
|
||||
t1.task_fax_file as fax_file,
|
||||
t1.task_wav_file as wav_file,
|
||||
t1.task_reply_address as reply_address,
|
||||
t1.task_no_answer_counter as no_answer_counter,
|
||||
t1.task_no_answer_retry_counter as no_answer_retry_counter,
|
||||
t1.task_retry_counter as retry_counter,
|
||||
t2.fax_send_greeting as greeting,
|
||||
t2.fax_name as fax_server_name
|
||||
from v_fax_tasks t1
|
||||
inner join v_fax t2 on t2.fax_uuid = t1.fax_uuid
|
||||
inner join v_domains t3 on t2.domain_uuid = t3.domain_uuid
|
||||
$where
|
||||
order by domain_name, fax_server_name, next_time
|
||||
HERE;
|
||||
|
||||
$result = false;
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
if ($prep_statement) {
|
||||
if($prep_statement->execute()) {
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
}
|
||||
unset($prep_statement, $sql, $where);
|
||||
|
||||
//if the connnection is available then run it and return the results
|
||||
if ($result === false) {
|
||||
var_dump($db->errorInfo());
|
||||
$msg = "<div align='center'>".$text['message-fail']."<br /></div>";
|
||||
echo "<div align='center'>\n";
|
||||
echo "<table width='40%'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<th align='left'>".$text['label-message']."</th>\n";
|
||||
echo "</tr>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td class='row_style1'><strong>$msg</strong></td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</table>\n";
|
||||
echo "</div>\n";
|
||||
}
|
||||
else {
|
||||
//define js function call var
|
||||
$onhover_pause_refresh = " onmouseover='refresh_stop();' onmouseout='refresh_start();'";
|
||||
|
||||
//show buttons
|
||||
echo "<table cellpadding='0' cellspacing='0' border='0' align='right'>";
|
||||
echo " <tr>";
|
||||
echo " <td valign='middle' nowrap='nowrap' style='padding-right: 15px' id='refresh_state'>";
|
||||
echo " <img src='resources/images/refresh_active.gif' style='width: 16px; height: 16px; border: none; margin-top: 3px; cursor: pointer;' onclick='refresh_stop();' alt=\"".$text['label-refresh_pause']."\" title=\"".$text['label-refresh_pause']."\">";
|
||||
echo " </td>";
|
||||
echo " <td valign='top' nowrap='nowrap'>";
|
||||
if (permission_exists('fax_active_all')) {
|
||||
if ($show == "all") {
|
||||
echo " <input type='button' class='btn' name='' alt='".$text['button-back']."' onclick=\"document.location='fax_active.php';\" value='".$text['button-back']."' ".$onhover_pause_refresh.">\n";
|
||||
}
|
||||
else {
|
||||
echo " <input type='button' class='btn' name='' alt='".$text['button-show_all']."' onclick=\"document.location='fax_active.php?show=all';\" value='".$text['button-show_all']."' ".$onhover_pause_refresh.">\n";
|
||||
}
|
||||
}
|
||||
echo " </td>";
|
||||
echo " </tr>";
|
||||
echo "</table>";
|
||||
|
||||
// show title
|
||||
echo "<b>".$text['fax-active_title']."</b>";
|
||||
echo "<br><br>\n";
|
||||
echo $text['fax-active_description']."\n";
|
||||
echo "<br><br>\n";
|
||||
|
||||
//set the alternating color for each row
|
||||
$c = 0;
|
||||
$row_style["0"] = "row_style0";
|
||||
$row_style["1"] = "row_style1";
|
||||
|
||||
//show the results
|
||||
echo "<div id='cmd_reponse'></div>\n";
|
||||
|
||||
//show headers
|
||||
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<th>" . $text['fax-active_title_fax_server'] . "</th>\n";
|
||||
echo "<th>" . $text['fax-active_title_enabled'] . "</th>\n";
|
||||
echo "<th>" . $text['fax-active_title_status'] . "</th>\n";
|
||||
echo "<th>" . $text['fax-active_title_next_time'] . "</th>\n";
|
||||
echo "<th>" . $text['fax-active_title_files'] . "</th>\n";
|
||||
echo "<th>" . $text['fax-active_title_uri'] . "</th>\n";
|
||||
|
||||
echo "<td class='list_control_icon'></td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
foreach ($result as &$row) {
|
||||
$fax_uri = $row['uri'];
|
||||
$domain_name = $row['domain_name'];
|
||||
$task_enabled = ($row['interrupted'] == 'true') ? 'Disable': 'Enable';
|
||||
$task_status = $text['fax-active_status_wait'];
|
||||
$task_next_time = $row['next_time'];
|
||||
|
||||
if($row['status'] > 0){
|
||||
if($row['status'] <= 3){
|
||||
$task_status = $text['fax-active_status_execute'];
|
||||
}
|
||||
else if($row['status'] == 10){
|
||||
$task_status = $text['fax-active_status_success'];
|
||||
}
|
||||
else{
|
||||
$task_status = $text['fax-active_status_fail'];
|
||||
}
|
||||
}
|
||||
|
||||
$fax_server = $row['fax_server_name'];
|
||||
if ($show == 'all') {
|
||||
$fax_server .= '@' . $domain_name;
|
||||
}
|
||||
|
||||
$task_files = '';
|
||||
if(!empty($row['fax_file'])){
|
||||
$task_files .= ' ' . basename($row['fax_file']);
|
||||
}
|
||||
if(!empty($row['wav_file'])){
|
||||
$task_files .= '<br/> ' . basename($row['wav_file']);
|
||||
} else if(!empty($row['greeting'])){
|
||||
$task_files .= '<br/> ' . basename($row['greeting']);
|
||||
}
|
||||
|
||||
echo "<tr>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>" . $fax_server . " </td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>" . $task_enabled . " </td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>" . $task_status . " </td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>" . $task_next_time . " </td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>" . $task_files . " </td>\n";
|
||||
echo "<td valign='top' class='".$row_style[$c]."'>" . $fax_uri . " </td>\n";
|
||||
|
||||
echo "<td class='list_control_icons' style='width: 25px; text-align: left;'><a href='javascript:void(0);' alt='".$text['label-hangup']."' onclick=\"hangup(escape('".$row['uuid']."'));\">".$v_link_label_delete."</a></td>\n";
|
||||
echo "</tr>\n";
|
||||
$c = ($c) ? 0 : 1;
|
||||
}
|
||||
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</table>\n";
|
||||
}
|
||||
?>
|
||||
+102
-1
@@ -686,7 +686,108 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) {
|
||||
echo " ".$text['label-fax_send_greeting']."\n";
|
||||
echo "</td>\n";
|
||||
echo "<td class='vtable' align='left'>\n";
|
||||
echo " <input class='formfld' type='text' name='fax_send_greeting' maxlength='255' value=\"$fax_send_greeting\">\n";
|
||||
if (permission_exists('fax_extension_add') || permission_exists('fax_extension_edit')) {
|
||||
echo "<script>\n";
|
||||
echo "var Objs;\n";
|
||||
echo "\n";
|
||||
echo "function changeToInput(obj){\n";
|
||||
echo " tb=document.createElement('INPUT');\n";
|
||||
echo " tb.type='text';\n";
|
||||
echo " tb.name=obj.name;\n";
|
||||
echo " tb.setAttribute('class', 'formfld');\n";
|
||||
echo " tb.setAttribute('style', 'width: 350px;');\n";
|
||||
echo " tb.value=obj.options[obj.selectedIndex].value;\n";
|
||||
echo " tbb=document.createElement('INPUT');\n";
|
||||
echo " tbb.setAttribute('class', 'btn');\n";
|
||||
echo " tbb.setAttribute('style', 'margin-left: 4px;');\n";
|
||||
echo " tbb.type='button';\n";
|
||||
echo " tbb.value=$('<div />').html('◁').text();\n";
|
||||
echo " tbb.objs=[obj,tb,tbb];\n";
|
||||
echo " tbb.onclick=function(){ Replace(this.objs); }\n";
|
||||
echo " obj.parentNode.insertBefore(tb,obj);\n";
|
||||
echo " obj.parentNode.insertBefore(tbb,obj);\n";
|
||||
echo " obj.parentNode.removeChild(obj);\n";
|
||||
echo "}\n";
|
||||
echo "\n";
|
||||
echo "function Replace(obj){\n";
|
||||
echo " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
|
||||
echo " obj[0].parentNode.removeChild(obj[1]);\n";
|
||||
echo " obj[0].parentNode.removeChild(obj[2]);\n";
|
||||
echo "}\n";
|
||||
echo "</script>\n";
|
||||
echo "\n";
|
||||
}
|
||||
echo " <select name='fax_send_greeting' class='formfld' ".((permission_exists('fax_extension_add') || permission_exists('fax_extension_edit')) ? "onchange='changeToInput(this);'" : null).">\n";
|
||||
echo " <option></option>\n";
|
||||
//recordings
|
||||
if($dh = opendir($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/")) {
|
||||
$tmp_selected = false;
|
||||
$files = Array();
|
||||
echo "<optgroup label='Recordings'>\n";
|
||||
while ($file = readdir($dh)) {
|
||||
if ($file != "." && $file != ".." && $file[0] != '.') {
|
||||
if (!is_dir($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$file)) {
|
||||
$selected = ($fax_send_greeting == $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$file && strlen($fax_send_greeting) > 0) ? true : false;
|
||||
echo " <option value='".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$file."' ".(($selected) ? "selected='selected'" : null).">".$file."</option>\n";
|
||||
if ($selected) { $tmp_selected = true; }
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($dh);
|
||||
echo "</optgroup>\n";
|
||||
}
|
||||
//phrases
|
||||
$sql = "select * from v_phrases where domain_uuid = '".$domain_uuid."' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||||
if (count($result) > 0) {
|
||||
echo "<optgroup label='Phrases'>\n";
|
||||
foreach ($result as &$row) {
|
||||
$selected = ($fax_send_greeting == "phrase:".$row["phrase_name"].".".$domain_uuid) ? true : false;
|
||||
echo " <option value='phrase:".$row["phrase_name"].".".$domain_uuid."' ".(($selected) ? "selected='selected'" : null).">".$row["phrase_name"]."</option>\n";
|
||||
if ($selected) { $tmp_selected = true; }
|
||||
}
|
||||
unset ($prep_statement);
|
||||
echo "</optgroup>\n";
|
||||
}
|
||||
//sounds
|
||||
$dir_path = $_SESSION['switch']['sounds']['dir'];
|
||||
recur_sounds_dir($_SESSION['switch']['sounds']['dir']);
|
||||
if (count($dir_array) > 0) {
|
||||
echo "<optgroup label='Sounds'>\n";
|
||||
foreach ($dir_array as $key => $value) {
|
||||
if (strlen($value) > 0) {
|
||||
if (substr($fax_send_greeting, 0, 71) == "\$\${sounds_dir}/\${default_language}/\${default_dialect}/\${default_voice}/") {
|
||||
$fax_send_greeting = substr($fax_send_greeting, 71);
|
||||
}
|
||||
$selected = ($fax_send_greeting == $key) ? true : false;
|
||||
echo " <option value='".$key."' ".(($selected) ? "selected='selected'" : null).">".$key."</option>\n";
|
||||
if ($selected) { $tmp_selected = true; }
|
||||
}
|
||||
}
|
||||
echo "</optgroup>\n";
|
||||
}
|
||||
//select
|
||||
if (strlen($fax_send_greeting) > 0) {
|
||||
if (permission_exists('conference_center_add') || permission_exists('conference_center_edit')) {
|
||||
if (!$tmp_selected) {
|
||||
echo "<optgroup label='selected'>\n";
|
||||
if (file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$fax_send_greeting)) {
|
||||
echo " <option value='".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/".$fax_send_greeting."' selected='selected'>".$ivr_menu_greet_long."</option>\n";
|
||||
}
|
||||
else if (substr($fax_send_greeting, -3) == "wav" || substr($fax_send_greeting, -3) == "mp3") {
|
||||
echo " <option value='".$fax_send_greeting."' selected='selected'>".$fax_send_greeting."</option>\n";
|
||||
}
|
||||
else {
|
||||
echo " <option value='".$fax_send_greeting."' selected='selected'>".$fax_send_greeting."</option>\n";
|
||||
}
|
||||
echo "</optgroup>\n";
|
||||
}
|
||||
unset($tmp_selected);
|
||||
}
|
||||
}
|
||||
echo " </select>\n";
|
||||
echo "<br />\n";
|
||||
echo " ".$text['description-fax_send_greeting']."\n";
|
||||
echo "</td>\n";
|
||||
|
||||
@@ -706,6 +706,7 @@ function fax_split_dtmf(&$fax_number, &$fax_dtmf){
|
||||
|
||||
foreach ($fax_numbers as $fax_number) {
|
||||
$dial_string = $common_dial_string;
|
||||
|
||||
fax_split_dtmf($fax_number, $fax_dtmf);
|
||||
|
||||
//prepare the fax command
|
||||
@@ -767,7 +768,12 @@ function fax_split_dtmf(&$fax_number, &$fax_dtmf){
|
||||
if (!$included) {
|
||||
//redirect the browser
|
||||
$_SESSION["message"] = $response;
|
||||
header("Location: fax_files.php?id=".$fax_uuid."&box=sent");
|
||||
if (permission_exists('fax_active_view')) {
|
||||
header("Location: fax_active.php?id=".$fax_uuid);
|
||||
}
|
||||
else {
|
||||
header("Location: fax_files.php?id=".$fax_uuid."&box=sent");
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 501 B |
@@ -100,15 +100,15 @@ $text['label-git_info']['sv-se'] = "";
|
||||
$text['label-git_info']['uk'] = "";
|
||||
$text['label-git_info']['de-at'] = "";
|
||||
|
||||
$text['label-switch_version']['en-us'] = "Switch Version";
|
||||
$text['label-switch_version']['es-cl'] = "";
|
||||
$text['label-switch_version']['pt-pt'] = "";
|
||||
$text['label-switch_version']['fr-fr'] = "";
|
||||
$text['label-switch_version']['pt-br'] = "";
|
||||
$text['label-switch_version']['pl'] = "";
|
||||
$text['label-switch_version']['sv-se'] = "";
|
||||
$text['label-switch_version']['uk'] = "";
|
||||
$text['label-switch_version']['de-at'] = "";
|
||||
$text['label-switch']['en-us'] = "Switch";
|
||||
$text['label-switch']['es-cl'] = "";
|
||||
$text['label-switch']['pt-pt'] = "";
|
||||
$text['label-switch']['fr-fr'] = "";
|
||||
$text['label-switch']['pt-br'] = "";
|
||||
$text['label-switch']['pl'] = "";
|
||||
$text['label-switch']['sv-se'] = "";
|
||||
$text['label-switch']['uk'] = "";
|
||||
$text['label-switch']['de-at'] = "";
|
||||
|
||||
$text['label-git_branch']['en-us'] = "Branch:";
|
||||
$text['label-git_branch']['es-cl'] = "";
|
||||
|
||||
+17
-5
@@ -87,11 +87,13 @@ $document['title'] = $text['title-sys-status'];
|
||||
|
||||
$git_path = normalize_path_to_os($_SERVER["DOCUMENT_ROOT"]."/.git");
|
||||
if(file_exists($git_path)){
|
||||
$git_branch = shell_exec('git --git-dir='.$git_path.' name-rev --name-only HEAD');
|
||||
$git_exe = 'git';
|
||||
if (strtoupper(substr(PHP_OS, 0, 3)) === 'SUN') { $git_exe = shell_exec('which git')); }
|
||||
$git_branch = shell_exec($git_exe.' --git-dir='.$git_path.' name-rev --name-only HEAD');
|
||||
rtrim($git_branch);
|
||||
$git_commit = shell_exec('git --git-dir='.$git_path.' rev-parse HEAD');
|
||||
$git_commit = shell_exec($git_exe.' --git-dir='.$git_path.' rev-parse HEAD');
|
||||
rtrim($git_commit);
|
||||
$git_origin = shell_exec('git --git-dir='.$git_path.' config --get remote.origin.url');
|
||||
$git_origin = shell_exec($git_exe.' --git-dir='.$git_path.' config --get remote.origin.url');
|
||||
rtrim($git_commit);
|
||||
echo "<tr>\n";
|
||||
echo " <td width='20%' class=\"vncell\" style='text-align: left;'>\n";
|
||||
@@ -108,15 +110,25 @@ $document['title'] = $text['title-sys-status'];
|
||||
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||||
if ($fp) {
|
||||
$switch_version = event_socket_request($fp, 'api version');
|
||||
preg_match("/FreeSWITCH Version (\d+\.\d+\.\d+(?:\.\d+)?).*\(\s*(\d+\w+)\s*\)/", $switch_version, $matches);
|
||||
preg_match("/FreeSWITCH Version (\d+\.\d+\.\d+(?:\.\d+)?).*\(.*?(\d+\w+)\s*\)/", $switch_version, $matches);
|
||||
$switch_version = $matches[1];
|
||||
$switch_bits = $matches[2];
|
||||
echo "<tr>\n";
|
||||
echo " <td width='20%' class=\"vncell\" style='text-align: left;'>\n";
|
||||
echo " ".$text['label-switch_version']."\n";
|
||||
echo " ".$text['label-switch']." ".$text['label-version']."\n";
|
||||
echo " </td>\n";
|
||||
echo " <td class=\"row_style1\">$switch_version ($switch_bits)</td>\n";
|
||||
echo "</tr>\n";
|
||||
preg_match("/\(git\s*(.*?)\s*\d+\w+\s*\)/", $switch_version, $matches);
|
||||
$switch_git_info = $matches[1];
|
||||
if(strlen($switch_git_info) > 0){
|
||||
echo "<tr>\n";
|
||||
echo " <td width='20%' class=\"vncell\" style='text-align: left;'>\n";
|
||||
echo " ".$text['label-switch']." ".$text['label-git_info']."\n";
|
||||
echo " </td>\n";
|
||||
echo " <td class=\"row_style1\">$switch_git_info</td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
}
|
||||
|
||||
echo "<!--\n";
|
||||
|
||||
@@ -354,6 +354,7 @@
|
||||
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
|
||||
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // date in the past
|
||||
header("Content-Length: " . filesize($file_path));
|
||||
ob_end_clean();
|
||||
fpassthru($fd);
|
||||
}
|
||||
|
||||
|
||||
@@ -53,8 +53,12 @@ echo " if ($('#caller_id_number').is(':visible')) { $('#caller_id_number').foc
|
||||
echo " }";
|
||||
echo " }";
|
||||
echo "</script>";
|
||||
|
||||
echo "<form method='post' action='xml_cdr.php'>\n";
|
||||
|
||||
if (strlen(check_str($_GET['redirect'])) > 0) {
|
||||
echo "<form method='get' action='" . $_GET['redirect'] . ".php'>\n";
|
||||
} else {
|
||||
echo "<form method='post' action='xml_cdr.php'>\n";
|
||||
}
|
||||
|
||||
echo "<table width='100%' cellpadding='0' cellspacing='0'>\n";
|
||||
echo " <tr>\n";
|
||||
|
||||
@@ -43,10 +43,14 @@ else {
|
||||
require_once "resources/header.php";
|
||||
|
||||
//page title and description
|
||||
|
||||
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
|
||||
echo "<tr>\n";
|
||||
echo " <td width='30%' align='left' valign='top' nowrap='nowrap'><b>".$text['label-call-statistics']."</b></td>\n";
|
||||
echo " <td width='70%' align='right' valign='top'>\n";
|
||||
if (permission_exists('xml_cdr_search_advanced')) {
|
||||
echo " <input type='button' class='btn' value='".$text['button-advanced_search']."' onclick=\"window.location='xml_cdr_search.php?redirect=xml_cdr_statistics';\">\n";
|
||||
}
|
||||
if (permission_exists('xml_cdr_all')) {
|
||||
if ($_GET['showall'] != 'true') {
|
||||
echo "<input type='button' class='btn' value='".$text['button-show_all']."' onclick=\"window.location='xml_cdr_statistics.php?showall=true';\">\n";
|
||||
@@ -75,6 +79,7 @@ else {
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="<?php echo PROJECT_PATH; ?>/resources/jquery/flot/excanvas.min.js"></script><![endif]-->
|
||||
<script language="javascript" type="text/javascript" src="<?php echo PROJECT_PATH; ?>/resources/jquery/jquery-1.8.3.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="<?php echo PROJECT_PATH; ?>/resources/jquery/flot/jquery.flot.js"></script>
|
||||
<script language="javascript" type="text/javascript" src="<?php echo PROJECT_PATH; ?>/resources/jquery/flot/jquery.flot.time.js"></script>
|
||||
<div align='center'>
|
||||
<table>
|
||||
<tr>
|
||||
@@ -147,7 +152,17 @@ else {
|
||||
if (data.length > 0)
|
||||
$.plot($("#placeholder"), data, {
|
||||
yaxis: { min: 0 },
|
||||
xaxis: { tickDecimals: 0 }
|
||||
<?php
|
||||
if ($hours <= 48) {
|
||||
echo "xaxis: {mode: \"time\",timeformat: \"%d:%H\",minTickSize: [1, \"hour\"]}";
|
||||
} else if ($hours > 48 && $hours < 168) {
|
||||
echo "xaxis: {mode: \"time\",timeformat: \"%m:%d\",minTickSize: [1, \"day\"]}";
|
||||
} else {
|
||||
echo "xaxis: {mode: \"time\",timeformat: \"%m:%d\",minTickSize: [1, \"month\"]}";
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@@ -173,10 +188,10 @@ else {
|
||||
$i = 0;
|
||||
foreach ($stats as $row) {
|
||||
echo "<tr >\n";
|
||||
if ($i < 24) {
|
||||
if ($i <= $hours) {
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".($i+1)."</td>\n";
|
||||
}
|
||||
elseif ($i == 24) {
|
||||
elseif ($i == $hours+1) {
|
||||
echo " <br /><br />\n";
|
||||
echo "</tr>\n";
|
||||
echo "<tr>\n";
|
||||
@@ -198,14 +213,14 @@ else {
|
||||
echo "<tr>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>1</td>\n";
|
||||
}
|
||||
elseif ($i == 25) {
|
||||
elseif ($i == $hours+2) {
|
||||
echo "<tr>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>7</td>\n";
|
||||
}
|
||||
elseif ($i == 26) {
|
||||
elseif ($i == $hours+3) {
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>30</td>\n";
|
||||
}
|
||||
if ($i < 24) {
|
||||
if ($i <= $hours) {
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".date('j M', $row['start_epoch'])."</td>\n";
|
||||
echo " <td valign='top' class='".$row_style[$c]."'>".date('H:i', $row['start_epoch'])." - ".date('H:i', $row['stop_epoch'])." </td>\n";
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ else {
|
||||
exit;
|
||||
}
|
||||
|
||||
//show all call detail records to admin and superadmin. for everyone else show only the call details for extensions assigned to them
|
||||
/*//show all call detail records to admin and superadmin. for everyone else show only the call details for extensions assigned to them
|
||||
if (!if_group("admin") && !if_group("superadmin")) {
|
||||
// select caller_id_number, destination_number from v_xml_cdr where domain_uuid = ''
|
||||
// and (caller_id_number = '1001' or destination_number = '1001' or destination_number = '*991001')
|
||||
@@ -68,6 +68,166 @@ else {
|
||||
//create the sql query to get the xml cdr records
|
||||
if (strlen($order_by) == 0) { $order_by = "start_epoch"; }
|
||||
if (strlen($order) == 0) { $order = "desc"; }
|
||||
*/
|
||||
|
||||
//get post or get variables from http
|
||||
if (count($_REQUEST) > 0) {
|
||||
$cdr_id = check_str($_REQUEST["cdr_id"]);
|
||||
$missed = check_str($_REQUEST["missed"]);
|
||||
$direction = check_str($_REQUEST["direction"]);
|
||||
$caller_id_name = check_str($_REQUEST["caller_id_name"]);
|
||||
$caller_id_number = check_str($_REQUEST["caller_id_number"]);
|
||||
$caller_extension_uuid = check_str($_REQUEST["caller_extension_uuid"]);
|
||||
$destination_number = check_str($_REQUEST["destination_number"]);
|
||||
$context = check_str($_REQUEST["context"]);
|
||||
$start_stamp_begin = check_str($_REQUEST["start_stamp_begin"]);
|
||||
$start_stamp_end = check_str($_REQUEST["start_stamp_end"]);
|
||||
$answer_stamp_begin = check_str($_REQUEST["answer_stamp_begin"]);
|
||||
$answer_stamp_end = check_str($_REQUEST["answer_stamp_end"]);
|
||||
$end_stamp_begin = check_str($_REQUEST["end_stamp_begin"]);
|
||||
$end_stamp_end = check_str($_REQUEST["end_stamp_end"]);
|
||||
$start_epoch = check_str($_REQUEST["start_epoch"]);
|
||||
$stop_epoch = check_str($_REQUEST["stop_epoch"]);
|
||||
$duration = check_str($_REQUEST["duration"]);
|
||||
$billsec = check_str($_REQUEST["billsec"]);
|
||||
$hangup_cause = check_str($_REQUEST["hangup_cause"]);
|
||||
$uuid = check_str($_REQUEST["uuid"]);
|
||||
$bleg_uuid = check_str($_REQUEST["bleg_uuid"]);
|
||||
$accountcode = check_str($_REQUEST["accountcode"]);
|
||||
$read_codec = check_str($_REQUEST["read_codec"]);
|
||||
$write_codec = check_str($_REQUEST["write_codec"]);
|
||||
$remote_media_ip = check_str($_REQUEST["remote_media_ip"]);
|
||||
$network_addr = check_str($_REQUEST["network_addr"]);
|
||||
$bridge_uuid = check_str($_REQUEST["network_addr"]);
|
||||
$order_by = check_str($_REQUEST["order_by"]);
|
||||
$order = check_str($_REQUEST["order"]);
|
||||
if (strlen(check_str($_REQUEST["mos_comparison"])) > 0) {
|
||||
switch(check_str($_REQUEST["mos_comparison"])) {
|
||||
case 'less':
|
||||
$mos_comparison = "<";
|
||||
break;
|
||||
case 'greater':
|
||||
$mos_comparison = ">";
|
||||
break;
|
||||
case 'lessorequal':
|
||||
$mos_comparison = "<=";
|
||||
break;
|
||||
case 'greaterorequal':
|
||||
$mos_comparison = ">=";
|
||||
break;
|
||||
case 'equal':
|
||||
$mos_comparison = "<";
|
||||
break;
|
||||
case 'notequal':
|
||||
$mos_comparison = "<>";
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
$mos_comparison = '';
|
||||
}
|
||||
//$mos_comparison = check_str($_REQUEST["mos_comparison"]);
|
||||
$mos_score = check_str($_REQUEST["mos_score"]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//build the sql where string
|
||||
if ($missed == true) {
|
||||
$sql_where_ands[] = "billsec = '0'";
|
||||
}
|
||||
if (strlen($start_epoch) > 0 && strlen($stop_epoch) > 0) {
|
||||
$sql_where_ands[] = "start_epoch BETWEEN ".$start_epoch." AND ".$stop_epoch." ";
|
||||
}
|
||||
if (strlen($cdr_id) > 0) { $sql_where_ands[] = "cdr_id like '%".$cdr_id."%'"; }
|
||||
if (strlen($direction) > 0) { $sql_where_ands[] = "direction = '".$direction."'"; }
|
||||
if (strlen($caller_id_name) > 0) {
|
||||
$mod_caller_id_name = str_replace("*", "%", $caller_id_name);
|
||||
$sql_where_ands[] = "caller_id_name like '".$mod_caller_id_name."'";
|
||||
}
|
||||
if (strlen($caller_extension_uuid) > 0) {
|
||||
$sql_where_ands[] = "extension_uuid = '".$caller_extension_uuid."'";
|
||||
}
|
||||
if (strlen($caller_id_number) > 0) {
|
||||
$mod_caller_id_number = str_replace("*", "%", $caller_id_number);
|
||||
$sql_where_ands[] = "caller_id_number like '".$mod_caller_id_number."'";
|
||||
}
|
||||
if (strlen($destination_number) > 0) {
|
||||
$mod_destination_number = str_replace("*", "%", $destination_number);
|
||||
$sql_where_ands[] = "destination_number like '".$mod_destination_number."'";
|
||||
}
|
||||
if (strlen($context) > 0) { $sql_where_ands[] = "context like '%".$context."%'"; }
|
||||
/* if (strlen($start_stamp_begin) > 0 && strlen($start_stamp_end) > 0) { $sql_where_ands[] = "start_stamp BETWEEN '".$start_stamp_begin.":00.000' AND '".$start_stamp_end.":59.999'"; }
|
||||
else {
|
||||
if (strlen($start_stamp_begin) > 0) { $sql_where_ands[] = "start_stamp >= '".$start_stamp_begin.":00.000'"; }
|
||||
if (strlen($start_stamp_end) > 0) { $sql_where_ands[] = "start_stamp <= '".$start_stamp_end.":59.999'"; }
|
||||
}
|
||||
*/ if (strlen($answer_stamp_begin) > 0 && strlen($answer_stamp_end) > 0) { $sql_where_ands[] = "answer_stamp BETWEEN '".$answer_stamp_begin.":00.000' AND '".$answer_stamp_end.":59.999'"; }
|
||||
else {
|
||||
if (strlen($answer_stamp_begin) > 0) { $sql_where_ands[] = "answer_stamp >= '".$answer_stamp_begin.":00.000'"; }
|
||||
if (strlen($answer_stamp_end) > 0) { $sql_where_ands[] = "answer_stamp <= '".$answer_stamp_end.":59.999'"; }
|
||||
}
|
||||
if (strlen($end_stamp_begin) > 0 && strlen($end_stamp_end) > 0) { $sql_where_ands[] = "end_stamp BETWEEN '".$end_stamp_begin.":00.000' AND '".$end_stamp_end.":59.999'"; }
|
||||
else {
|
||||
if (strlen($end_stamp_begin) > 0) { $sql_where_ands[] = "end_stamp >= '".$end_stamp_begin.":00.000'"; }
|
||||
if (strlen($end_stamp_end) > 0) { $sql_where_ands[] = "end_stamp <= '".$end_stamp_end.":59.999'"; }
|
||||
}
|
||||
if (strlen($duration) > 0) { $sql_where_ands[] = "duration like '%".$duration."%'"; }
|
||||
if (strlen($billsec) > 0) { $sql_where_ands[] = "billsec like '%".$billsec."%'"; }
|
||||
if (strlen($hangup_cause) > 0) { $sql_where_ands[] = "hangup_cause like '%".$hangup_cause."%'"; }
|
||||
if (strlen($uuid) > 0) { $sql_where_ands[] = "uuid = '".$uuid."'"; }
|
||||
if (strlen($bleg_uuid) > 0) { $sql_where_ands[] = "bleg_uuid = '".$bleg_uuid."'"; }
|
||||
if (strlen($accountcode) > 0) { $sql_where_ands[] = "accountcode = '".$accountcode."'"; }
|
||||
if (strlen($read_codec) > 0) { $sql_where_ands[] = "read_codec like '%".$read_codec."%'"; }
|
||||
if (strlen($write_codec) > 0) { $sql_where_ands[] = "write_codec like '%".$write_codec."%'"; }
|
||||
if (strlen($remote_media_ip) > 0) { $sql_where_ands[] = "remote_media_ip like '%".$remote_media_ip."%'"; }
|
||||
if (strlen($network_addr) > 0) { $sql_where_ands[] = "network_addr like '%".$network_addr."%'"; }
|
||||
if (strlen($mos_comparison) > 0 && strlen($mos_score) > 0 ) { $sql_where_ands[] = "rtp_audio_in_mos " . $mos_comparison . " ".$mos_score.""; }
|
||||
|
||||
//if not admin or superadmin, only show own calls
|
||||
if (!permission_exists('xml_cdr_domain')) {
|
||||
if (count($_SESSION['user']['extension']) > 0) { // extensions are assigned to this user
|
||||
// create simple user extension array
|
||||
foreach ($_SESSION['user']['extension'] as $row) { $user_extensions[] = $row['user']; }
|
||||
// if both a source and destination are submitted, but neither are an assigned extension, restrict results
|
||||
if (
|
||||
$caller_id_number != '' &&
|
||||
$destination_number != '' &&
|
||||
array_search($caller_id_number, $user_extensions) === false &&
|
||||
array_search($destination_number, $user_extensions) === false
|
||||
) {
|
||||
$sql_where_ors[] = "caller_id_number like '".$user_extension."'";
|
||||
$sql_where_ors[] = "destination_number like '".$user_extension."'";
|
||||
$sql_where_ors[] = "destination_number like '*99".$user_extension."'";
|
||||
}
|
||||
// if source submitted is blank, implement restriction for assigned extension(s)
|
||||
if ($caller_id_number == '') { // if source criteria is blank, then restrict to assigned ext
|
||||
foreach ($user_extensions as $user_extension) {
|
||||
if (strlen($user_extension) > 0) { $sql_where_ors[] = "caller_id_number like '".$user_extension."'"; }
|
||||
}
|
||||
}
|
||||
// if destination submitted is blank, implement restriction for assigned extension(s)
|
||||
if ($destination_number == '') {
|
||||
foreach ($user_extensions as $user_extension) {
|
||||
if (strlen($user_extension) > 0) {
|
||||
$sql_where_ors[] = "destination_number like '".$user_extension."'";
|
||||
$sql_where_ors[] = "destination_number like '*99".$user_extension."'";
|
||||
}
|
||||
}
|
||||
}
|
||||
// concatenate the 'or's array, then add to the 'and's array
|
||||
if (sizeof($sql_where_ors) > 0) {
|
||||
$sql_where_ands[] = "( ".implode(" or ", $sql_where_ors)." )";
|
||||
}
|
||||
}
|
||||
else {
|
||||
$sql_where_ands[] = "1 <> 1"; //disable viewing of cdr records by users with no assigned extensions
|
||||
}
|
||||
}
|
||||
|
||||
// concatenate the 'ands's array, add to where clause
|
||||
if (sizeof($sql_where_ands) > 0) {
|
||||
$sql_where = " where ".implode(" and ", $sql_where_ands)." and ";
|
||||
}
|
||||
|
||||
//calculate the seconds in different time frames
|
||||
$seconds_hour = 3600;
|
||||
@@ -89,6 +249,7 @@ else {
|
||||
$sql = "select count(*) as count from v_xml_cdr ";
|
||||
$sql .= $where;
|
||||
$sql .= " start_epoch BETWEEN ".$start." AND ".$end." ";
|
||||
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
|
||||
@@ -141,11 +302,20 @@ else {
|
||||
//$call_seconds_1st_hour = get_call_seconds_between(3600, 0);
|
||||
//if (strlen($call_seconds_1st_hour) == 0) { $call_seconds_1st_hour = 0; }
|
||||
|
||||
//round down to the nearest hour
|
||||
$time = time() - time() % 3600;
|
||||
if (strlen(check_str($_GET['start_stamp_begin'])) > 0 && strlen(check_str($_GET['start_stamp_end'])) > 0 ) {
|
||||
$start_date = new DateTime(check_str($_GET['start_stamp_begin']));
|
||||
$end_date = new DateTime(check_str($_GET['start_stamp_end']));
|
||||
$time = $end_date->getTimestamp();
|
||||
$time = $time - $time % 3600;
|
||||
$hours = ($end_date->getTimestamp() - $start_date->getTimestamp()) / 3600;
|
||||
} else {
|
||||
//round down to the nearest hour
|
||||
$time = time() - time() % 3600;
|
||||
$hours = 23;
|
||||
}
|
||||
|
||||
//call info hour by hour
|
||||
for ($i = 0; $i <= 23; $i++) {
|
||||
for ($i = 0; $i <= $hours; $i++) {
|
||||
$start_epoch = $time - 3600*$i;
|
||||
$stop_epoch = $start_epoch + 3600;
|
||||
$stats[$i]['hours'] = $i + 1;
|
||||
@@ -153,7 +323,7 @@ else {
|
||||
$stats[$i]['stop_stamp'] = date('Y-m-d h:n:s', $stop_epoch);
|
||||
$stats[$i]['start_epoch'] = $start_epoch;
|
||||
$stats[$i]['stop_epoch'] = $stop_epoch;
|
||||
$stats[$i]['volume'] = get_call_volume_between($stats[$i]['start_epoch'], $stats[$i]['stop_epoch'], '');
|
||||
$stats[$i]['volume'] = get_call_volume_between($stats[$i]['start_epoch'], $stats[$i]['stop_epoch'], $sql_where);
|
||||
$stats[$i]['seconds'] = get_call_seconds_between($stats[$i]['start_epoch'], $stats[$i]['stop_epoch'], '');
|
||||
$stats[$i]['minutes'] = $stats[$i]['seconds'] / 60;
|
||||
$stats[$i]['avg_sec'] = $stats[$i]['seconds'] / $stats[$i]['volume'];
|
||||
@@ -175,7 +345,7 @@ else {
|
||||
}
|
||||
|
||||
//call info for a day
|
||||
$i = 24;
|
||||
$i = $hours+1;
|
||||
$start_epoch = time() - $seconds_day;
|
||||
$stop_epoch = time();
|
||||
$stats[$i]['hours'] = 24;
|
||||
@@ -183,7 +353,7 @@ else {
|
||||
$stats[$i]['stop_stamp'] = date('Y-m-d h:n:s', $stop_epoch);
|
||||
$stats[$i]['start_epoch'] = $start_epoch;
|
||||
$stats[$i]['stop_epoch'] = $stop_epoch;
|
||||
$stats[$i]['volume'] = get_call_volume_between($stats[$i]['start_epoch'], $stats[$i]['stop_epoch'], '');
|
||||
$stats[$i]['volume'] = get_call_volume_between($stats[$i]['start_epoch'], $stats[$i]['stop_epoch'], $sql_where);
|
||||
$stats[$i]['seconds'] = get_call_seconds_between($stats[$i]['start_epoch'], $stats[$i]['stop_epoch'], '');
|
||||
$stats[$i]['minutes'] = $stats[$i]['seconds'] / 60;
|
||||
$stats[$i]['avg_sec'] = $stats[$i]['seconds'] / $stats[$i]['volume'];
|
||||
@@ -208,7 +378,7 @@ else {
|
||||
$stats[$i]['stop_stamp'] = date('Y-m-d h:n:s', $stop_epoch);
|
||||
$stats[$i]['start_epoch'] = $start_epoch;
|
||||
$stats[$i]['stop_epoch'] = $stop_epoch;
|
||||
$stats[$i]['volume'] = get_call_volume_between($stats[$i]['start_epoch'], $stats[$i]['stop_epoch'], '');
|
||||
$stats[$i]['volume'] = get_call_volume_between($stats[$i]['start_epoch'], $stats[$i]['stop_epoch'], $sql_where);
|
||||
$stats[$i]['seconds'] = get_call_seconds_between($stats[$i]['start_epoch'], $stats[$i]['stop_epoch'], '');
|
||||
$stats[$i]['minutes'] = $stats[$i]['seconds'] / 60;
|
||||
$stats[$i]['avg_sec'] = $stats[$i]['seconds'] / $stats[$i]['volume'];
|
||||
@@ -233,7 +403,7 @@ else {
|
||||
$stats[$i]['stop_stamp'] = date('Y-m-d h:n:s', $stop_epoch);
|
||||
$stats[$i]['start_epoch'] = $start_epoch;
|
||||
$stats[$i]['stop_epoch'] = $stop_epoch;
|
||||
$stats[$i]['volume'] = get_call_volume_between($stats[$i]['start_epoch'], $stats[$i]['stop_epoch'], '');
|
||||
$stats[$i]['volume'] = get_call_volume_between($stats[$i]['start_epoch'], $stats[$i]['stop_epoch'], $sql_where);
|
||||
$stats[$i]['seconds'] = get_call_seconds_between($stats[$i]['start_epoch'], $stats[$i]['stop_epoch'], '');
|
||||
$stats[$i]['minutes'] = $stats[$i]['seconds'] / 60;
|
||||
$stats[$i]['avg_sec'] = $stats[$i]['seconds'] / $stats[$i]['volume'];
|
||||
@@ -251,47 +421,47 @@ else {
|
||||
$i++;
|
||||
|
||||
//show the graph
|
||||
$x = 0;
|
||||
foreach ($stats as $row) {
|
||||
$graph['volume'][$x][] = date('H', $row['start_epoch']);
|
||||
$graph['volume'][$x][] = $row['volume']/1;
|
||||
if ($x == 23) { break; }
|
||||
$x++;
|
||||
}
|
||||
$x = 0;
|
||||
foreach ($stats as $row) {
|
||||
$graph['minutes'][$x][] = date('H', $row['start_epoch']);
|
||||
$graph['minutes'][$x][] = round($row['minutes'],2);
|
||||
if ($x == 23) { break; }
|
||||
$x++;
|
||||
}
|
||||
$x = 0;
|
||||
foreach ($stats as $row) {
|
||||
$graph['call_per_min'][$x][] = date('H', $row['start_epoch']);
|
||||
$graph['call_per_min'][$x][] = round($row['avg_min'],2);
|
||||
if ($x == 23) { break; }
|
||||
$x++;
|
||||
}
|
||||
$x = 0;
|
||||
foreach ($stats as $row) {
|
||||
$graph['missed'][$x][] = date('H', $row['start_epoch']);
|
||||
$graph['missed'][$x][] = $row['missed']/1;
|
||||
if ($x == 23) { break; }
|
||||
$x++;
|
||||
}
|
||||
$x = 0;
|
||||
foreach ($stats as $row) {
|
||||
$graph['asr'][$x][] = date('H', $row['start_epoch']);
|
||||
$graph['asr'][$x][] = round($row['asr'],2)/100;
|
||||
if ($x == 23) { break; }
|
||||
$x++;
|
||||
}
|
||||
$x = 0;
|
||||
foreach ($stats as $row) {
|
||||
$graph['aloc'][$x][] = date('H', $row['start_epoch']);
|
||||
$graph['aloc'][$x][] = round($row['aloc'],2);
|
||||
if ($x == 23) { break; }
|
||||
$x++;
|
||||
}
|
||||
|
||||
$x = 0;
|
||||
foreach ($stats as $row) {
|
||||
$graph['volume'][$x][] = $row['start_epoch'] * 1000;
|
||||
$graph['volume'][$x][] = $row['volume']/1;
|
||||
if ($x == $hours) { break; }
|
||||
$x++;
|
||||
}
|
||||
$x = 0;
|
||||
foreach ($stats as $row) {
|
||||
$graph['minutes'][$x][] = $row['start_epoch'] * 1000;
|
||||
$graph['minutes'][$x][] = round($row['minutes'],2);
|
||||
if ($x == $hours) { break; }
|
||||
$x++;
|
||||
}
|
||||
$x = 0;
|
||||
foreach ($stats as $row) {
|
||||
$graph['call_per_min'][$x][] = $row['start_epoch'] * 1000;
|
||||
$graph['call_per_min'][$x][] = round($row['avg_min'],2);
|
||||
if ($x == $hours) { break; }
|
||||
$x++;
|
||||
}
|
||||
$x = 0;
|
||||
foreach ($stats as $row) {
|
||||
$graph['missed'][$x][] = $row['start_epoch'] * 1000;
|
||||
$graph['missed'][$x][] = $row['missed']/1;
|
||||
if ($x == $hours) { break; }
|
||||
$x++;
|
||||
}
|
||||
$x = 0;
|
||||
foreach ($stats as $row) {
|
||||
$graph['asr'][$x][] = $row['start_epoch'] * 1000;
|
||||
$graph['asr'][$x][] = round($row['asr'],2)/100;
|
||||
if ($x == $hours) { break; }
|
||||
$x++;
|
||||
}
|
||||
$x = 0;
|
||||
foreach ($stats as $row) {
|
||||
$graph['aloc'][$x][] = $row['start_epoch'] * 1000;
|
||||
$graph['aloc'][$x][] = round($row['aloc'],2);
|
||||
if ($x == $hours) { break; }
|
||||
$x++;
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user