Portions created by the Initial Developer are Copyright (C) 2008-2012 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ require_once "root.php"; require_once "includes/require.php"; require_once "includes/checkauth.php"; 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 require_once "includes/paging.php"; //set 24hr or 12hr clock define('TIME_24HR', 1); //get post or get variables from http if (count($_REQUEST)>0) { $order_by = $_REQUEST["order_by"]; $order = $_REQUEST["order"]; $cdr_id = $_REQUEST["cdr_id"]; $direction = $_REQUEST["direction"]; $caller_id_name = $_REQUEST["caller_id_name"]; $caller_id_number = $_REQUEST["caller_id_number"]; $destination_number = $_REQUEST["destination_number"]; $context = $_REQUEST["context"]; $start_stamp = $_REQUEST["start_stamp"]; $answer_stamp = $_REQUEST["answer_stamp"]; $end_stamp = $_REQUEST["end_stamp"]; $duration = $_REQUEST["duration"]; $billsec = $_REQUEST["billsec"]; $hangup_cause = $_REQUEST["hangup_cause"]; $uuid = $_REQUEST["uuid"]; $bleg_uuid = $_REQUEST["bleg_uuid"]; $accountcode = $_REQUEST["accountcode"]; $read_codec = $_REQUEST["read_codec"]; $write_codec = $_REQUEST["write_codec"]; $remote_media_ip = $_REQUEST["remote_media_ip"]; $network_addr = $_REQUEST["network_addr"]; } //build the sql where string if (strlen($cdr_id) > 0) { $sql_where .= "and cdr_id like '%$cdr_id%' "; } if (strlen($direction) > 0) { $sql_where .= "and direction like '%$direction%' "; } if (strlen($caller_id_name) > 0) { $sql_where .= "and caller_id_name like '%$caller_id_name%' "; } if (strlen($caller_id_number) > 0 && strlen($destination_number) > 0) { $sql_where .= "and ("; $sql_where .= "caller_id_number = '$caller_id_number' "; $sql_where .= "or destination_number = '$destination_number'"; $sql_where .= ") "; } else { 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%' "; } } 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 // 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') if (!if_group("admin") && !if_group("superadmin")) { $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) { if ($row['user'] > 0) { $sql_where .= "caller_id_number = '".$row['user']."' \n"; } //source } else { if ($row['user'] > 0) { $sql_where .= "or caller_id_number = '".$row['user']."' \n"; } //source } if ($row['user'] > 0) { $sql_where .= "or destination_number = '".$row['user']."' \n"; } //destination if ($row['user'] > 0) { $sql_where .= "or destination_number = '*99".$row['user']."' \n"; } //destination $x++; } } else { $sql_where .= "destination_number = 'no extension assigned' \n"; //destination } $sql_where .= ") "; } else { //superadmin or admin $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 = ""; $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"; $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"; if (isset($order_by)) { $param .= "&order_by=".$order_by; } if (isset($order)) { $param .= "&order=".$order; } //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'; //page results if rows_per_page is greater than zero if ($rows_per_page > 0) { //get the number of rows in the v_xml_cdr $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']; if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; } list($paging_controls, $rows_per_page, $var_3) = paging($num_rows, $param, $rows_per_page); $offset = $rows_per_page * $page; } //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 "; } if ($rows_per_page > 0) { $sql .= " limit $rows_per_page offset $offset "; } $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"; ?>