2012-06-04 16:58:40 +02:00
|
|
|
<?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>
|
|
|
|
|
*/
|
|
|
|
|
require_once "root.php";
|
2013-07-06 08:03:27 +02:00
|
|
|
require_once "resources/require.php";
|
2013-07-06 07:50:55 +02:00
|
|
|
require_once "resources/check_auth.php";
|
2012-06-04 16:58:40 +02:00
|
|
|
if (permission_exists('xml_cdr_view')) {
|
|
|
|
|
//access granted
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
echo "access denied";
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//import xml_cdr files
|
|
|
|
|
require_once "v_xml_cdr_import.php";
|
|
|
|
|
|
|
|
|
|
//additional includes
|
2013-07-06 08:29:50 +02:00
|
|
|
require_once "resources/paging.php";
|
2012-06-04 16:58:40 +02:00
|
|
|
|
|
|
|
|
//set 24hr or 12hr clock
|
|
|
|
|
define('TIME_24HR', 1);
|
|
|
|
|
|
|
|
|
|
//get post or get variables from http
|
|
|
|
|
if (count($_REQUEST)>0) {
|
2013-01-17 19:32:16 +01:00
|
|
|
$order_by = check_str($_REQUEST["order_by"]);
|
|
|
|
|
$order = check_str($_REQUEST["order"]);
|
|
|
|
|
$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"]);
|
|
|
|
|
$destination_number = check_str($_REQUEST["destination_number"]);
|
|
|
|
|
$context = check_str($_REQUEST["context"]);
|
|
|
|
|
$start_stamp = check_str($_REQUEST["start_stamp"]);
|
|
|
|
|
$answer_stamp = check_str($_REQUEST["answer_stamp"]);
|
|
|
|
|
$end_stamp = check_str($_REQUEST["end_stamp"]);
|
|
|
|
|
$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"]);
|
2012-06-04 16:58:40 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//build the sql where string
|
2013-01-17 19:32:16 +01:00
|
|
|
if ($missed == true) {
|
|
|
|
|
$sql_where .= "and billsec = '0' ";
|
|
|
|
|
}
|
2014-06-16 20:12:21 +02:00
|
|
|
if (strlen($start_epoch) > 0 && strlen($stop_epoch) > 0) {
|
2013-01-17 19:32:16 +01:00
|
|
|
$sql_where .= "and start_epoch BETWEEN ".$start_epoch." AND ".$stop_epoch." ";
|
|
|
|
|
}
|
2012-06-04 16:58:40 +02:00
|
|
|
if (strlen($cdr_id) > 0) { $sql_where .= "and cdr_id like '%$cdr_id%' "; }
|
2013-01-17 19:32:16 +01:00
|
|
|
if (strlen($direction) > 0) { $sql_where .= "and direction = '$direction' "; }
|
2014-06-16 20:12:21 +02:00
|
|
|
if (strlen($caller_id_name) > 0) { $sql_where .= "and caller_id_name like '%".$caller_id_name."%' "; }
|
|
|
|
|
if (strlen($caller_id_number) > 0) { $sql_where .= "and caller_id_number like '%".$caller_id_number."%' "; }
|
|
|
|
|
if (strlen($destination_number) > 0) { $sql_where .= "and destination_number like '%".$destination_number."%' "; }
|
2012-06-04 16:58:40 +02:00
|
|
|
if (strlen($context) > 0) { $sql_where .= "and context like '%$context%' "; }
|
|
|
|
|
if ($db_type == "sqlite") {
|
|
|
|
|
if (strlen($start_stamp) > 0) { $sql_where .= "and start_stamp like '%$start_stamp%' "; }
|
|
|
|
|
if (strlen($end_stamp) > 0) { $sql_where .= "and end_stamp like '%$end_stamp%' "; }
|
|
|
|
|
}
|
|
|
|
|
if ($db_type == "pgsql" || $db_type == "mysql") {
|
|
|
|
|
if (strlen($start_stamp) > 0 && strlen($end_stamp) == 0) { $sql_where .= "and start_stamp between '$start_stamp 00:00:00' and '$start_stamp 23:59:59' "; }
|
|
|
|
|
if (strlen($start_stamp) > 0 && strlen($end_stamp) > 0) { $sql_where .= "and start_stamp between '$start_stamp 00:00:00' and '$end_stamp 23:59:59' "; }
|
|
|
|
|
}
|
|
|
|
|
if (strlen($answer_stamp) > 0) { $sql_where .= "and answer_stamp like '%$answer_stamp%' "; }
|
|
|
|
|
if (strlen($duration) > 0) { $sql_where .= "and duration like '%$duration%' "; }
|
|
|
|
|
if (strlen($billsec) > 0) { $sql_where .= "and billsec like '%$billsec%' "; }
|
|
|
|
|
if (strlen($hangup_cause) > 0) { $sql_where .= "and hangup_cause like '%$hangup_cause%' "; }
|
|
|
|
|
if (strlen($uuid) > 0) { $sql_where .= "and uuid = '$uuid' "; }
|
|
|
|
|
if (strlen($bleg_uuid) > 0) { $sql_where .= "and bleg_uuid = '$bleg_uuid' "; }
|
|
|
|
|
if (strlen($accountcode) > 0) { $sql_where .= "and accountcode = '$accountcode' "; }
|
|
|
|
|
if (strlen($read_codec) > 0) { $sql_where .= "and read_codec like '%$read_codec%' "; }
|
|
|
|
|
if (strlen($write_codec) > 0) { $sql_where .= "and write_codec like '%$write_codec%' "; }
|
|
|
|
|
if (strlen($remote_media_ip) > 0) { $sql_where .= "and remote_media_ip like '%$remote_media_ip%' "; }
|
|
|
|
|
if (strlen($network_addr) > 0) { $sql_where .= "and network_addr like '%$network_addr%' "; }
|
|
|
|
|
|
|
|
|
|
//example sql
|
2014-06-16 20:12:21 +02:00
|
|
|
// select caller_id_number, destination_number from v_xml_cdr where domain_uuid = ''
|
2012-06-04 16:58:40 +02:00
|
|
|
// and (caller_id_number = '1001' or destination_number = '1001' or destination_number = '*991001')
|
2013-03-16 16:14:36 +01:00
|
|
|
if (!if_group("admin") && !if_group("superadmin") && !permission_exists('xml_cdr_domain')) {
|
2012-06-04 16:58:40 +02:00
|
|
|
$sql_where = "where domain_uuid = '$domain_uuid' ";
|
|
|
|
|
$sql_where .= "and ( ";
|
|
|
|
|
if (count($_SESSION['user']['extension']) > 0) {
|
|
|
|
|
$x = 0;
|
|
|
|
|
foreach($_SESSION['user']['extension'] as $row) {
|
|
|
|
|
if ($x==0) {
|
2013-10-22 17:30:00 +02:00
|
|
|
if (strlen($row['user']) > 0) { $sql_where .= "caller_id_number = '".$row['user']."' \n"; } //source
|
2012-06-04 16:58:40 +02:00
|
|
|
}
|
|
|
|
|
else {
|
2013-10-22 17:30:00 +02:00
|
|
|
if (strlen($row['user']) > 0) { $sql_where .= "or caller_id_number = '".$row['user']."' \n"; } //source
|
2012-06-04 16:58:40 +02:00
|
|
|
}
|
2013-10-22 17:30:00 +02:00
|
|
|
if (strlen($row['user']) > 0) { $sql_where .= "or destination_number = '".$row['user']."' \n"; } //destination
|
|
|
|
|
if (strlen($row['user']) > 0) { $sql_where .= "or destination_number = '*99".$row['user']."' \n"; } //destination
|
2012-06-04 16:58:40 +02:00
|
|
|
$x++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$sql_where .= "destination_number = 'no extension assigned' \n"; //destination
|
|
|
|
|
}
|
|
|
|
|
$sql_where .= ") ";
|
|
|
|
|
}
|
|
|
|
|
else {
|
2013-03-16 16:14:36 +01:00
|
|
|
//superadmin or admin or permission_exists('xml_cdr_domain')
|
2012-06-04 16:58:40 +02:00
|
|
|
$sql_where = "where domain_uuid = '$domain_uuid' ".$sql_where;
|
|
|
|
|
}
|
|
|
|
|
//$sql_where = str_replace ("where or", "where", $sql_where);
|
|
|
|
|
//$sql_where = str_replace ("where and", " and", $sql_where);
|
|
|
|
|
|
|
|
|
|
//set the param variable which is used with paging
|
|
|
|
|
$param = "";
|
2013-01-17 19:32:16 +01:00
|
|
|
$param .= "&missed=$missed";
|
2012-06-04 16:58:40 +02:00
|
|
|
$param .= "&caller_id_name=$caller_id_name";
|
|
|
|
|
$param .= "&start_stamp=$start_stamp";
|
|
|
|
|
$param .= "&hangup_cause=$hangup_cause";
|
|
|
|
|
$param .= "&caller_id_number=$caller_id_number";
|
|
|
|
|
$param .= "&destination_number=$destination_number";
|
|
|
|
|
$param .= "&context=$context";
|
|
|
|
|
$param .= "&answer_stamp=$answer_stamp";
|
|
|
|
|
$param .= "&end_stamp=$end_stamp";
|
2013-01-17 19:32:16 +01:00
|
|
|
$param .= "&start_epoch=$start_epoch";
|
|
|
|
|
$param .= "&stop_epoch=$stop_epoch";
|
2012-06-04 16:58:40 +02:00
|
|
|
$param .= "&duration=$duration";
|
|
|
|
|
$param .= "&billsec=$billsec";
|
|
|
|
|
$param .= "&uuid=$uuid";
|
|
|
|
|
$param .= "&bridge_uuid=$bridge_uuid";
|
|
|
|
|
$param .= "&accountcode=$accountcode";
|
|
|
|
|
$param .= "&read_codec=$read_codec";
|
|
|
|
|
$param .= "&write_codec=$write_codec";
|
|
|
|
|
$param .= "&remote_media_ip=$remote_media_ip";
|
|
|
|
|
$param .= "&network_addr=$network_addr";
|
2012-08-24 07:56:45 +02:00
|
|
|
if (isset($order_by)) {
|
|
|
|
|
$param .= "&order_by=".$order_by;
|
|
|
|
|
}
|
|
|
|
|
if (isset($order)) {
|
|
|
|
|
$param .= "&order=".$order;
|
|
|
|
|
}
|
2012-06-04 16:58:40 +02:00
|
|
|
|
|
|
|
|
//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"; }
|
|
|
|
|
|
|
|
|
|
//set the default
|
|
|
|
|
$num_rows = '0';
|
|
|
|
|
|
2012-07-11 04:23:05 +02:00
|
|
|
//page results if rows_per_page is greater than zero
|
|
|
|
|
if ($rows_per_page > 0) {
|
2014-06-16 20:12:21 +02:00
|
|
|
//get the number of rows in the v_xml_cdr
|
2012-07-11 04:23:05 +02:00
|
|
|
$sql = "select count(*) as num_rows from v_xml_cdr ";
|
|
|
|
|
$sql .= $sql_where;
|
|
|
|
|
$prep_statement = $db->prepare(check_sql($sql));
|
|
|
|
|
if ($prep_statement) {
|
|
|
|
|
$prep_statement->execute();
|
|
|
|
|
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
|
|
|
|
|
if ($row['num_rows'] > 0) {
|
|
|
|
|
$num_rows = $row['num_rows'];
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$num_rows = '0';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
unset($prep_statement, $result);
|
|
|
|
|
|
|
|
|
|
//prepare to page the results
|
|
|
|
|
//$rows_per_page = 150; //set on the page that includes this page
|
|
|
|
|
$page = $_GET['page'];
|
2014-06-16 20:12:21 +02:00
|
|
|
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
|
|
|
|
|
list($paging_controls, $rows_per_page, $var_3) = paging($num_rows, $param, $rows_per_page);
|
2012-07-11 04:23:05 +02:00
|
|
|
$offset = $rows_per_page * $page;
|
2012-06-04 16:58:40 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//get the results from the db
|
|
|
|
|
$sql = "select * from v_xml_cdr ";
|
|
|
|
|
$sql .= $sql_where;
|
|
|
|
|
if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; }
|
2012-07-11 04:23:05 +02:00
|
|
|
if ($rows_per_page > 0) {
|
|
|
|
|
$sql .= " limit $rows_per_page offset $offset ";
|
|
|
|
|
}
|
2012-06-04 16:58:40 +02:00
|
|
|
$prep_statement = $db->prepare(check_sql($sql));
|
|
|
|
|
$prep_statement->execute();
|
|
|
|
|
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
|
$result_count = count($result);
|
|
|
|
|
unset ($prep_statement, $sql);
|
|
|
|
|
|
|
|
|
|
$c = 0;
|
|
|
|
|
$row_style["0"] = "row_style0";
|
|
|
|
|
$row_style["1"] = "row_style1";
|
|
|
|
|
|
|
|
|
|
?>
|