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 "resources/require.php"; require_once "resources/check_auth.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 "resources/paging.php"; //set 24hr or 12hr clock define('TIME_24HR', 1); //get post or get variables from http if (count($_REQUEST)>0) { $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"]); } //build the sql where string if ($missed == true) { $sql_where .= "and billsec = '0' "; } if (strlen($start_epoch) > 0 && strlen($stop_epoch) > 0) { $sql_where .= "and start_epoch BETWEEN ".$start_epoch." AND ".$stop_epoch." "; } if (strlen($cdr_id) > 0) { $sql_where .= "and cdr_id like '%$cdr_id%' "; } if (strlen($direction) > 0) { $sql_where .= "and direction = '$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") && !permission_exists('xml_cdr_domain')) { $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 (strlen($row['user']) > 0) { $sql_where .= "caller_id_number = '".$row['user']."' \n"; } //source } else { if (strlen($row['user']) > 0) { $sql_where .= "or caller_id_number = '".$row['user']."' \n"; } //source } 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 $x++; } } else { $sql_where .= "destination_number = 'no extension assigned' \n"; //destination } $sql_where .= ") "; } else { //superadmin or admin or permission_exists('xml_cdr_domain') $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 .= "&missed=$missed"; $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 .= "&start_epoch=$start_epoch"; $param .= "&stop_epoch=$stop_epoch"; $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"; ?>