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 >
2018-05-01 10:57:47 +02:00
Portions created by the Initial Developer are Copyright ( C ) 2008 - 2018
2012-06-04 16:58:40 +02:00
the Initial Developer . All Rights Reserved .
Contributor ( s ) :
Mark J Crane < markjcrane @ fusionpbx . com >
*/
2016-07-27 04:49:23 +02:00
//includes
require_once " root.php " ;
require_once " resources/require.php " ;
require_once " resources/check_auth.php " ;
//check permissions
if ( permission_exists ( 'xml_cdr_view' )) {
//access granted
}
else {
echo " access denied " ;
exit ;
}
2012-06-04 16:58:40 +02:00
//additional includes
2018-07-04 02:40:35 +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
2014-07-17 18:23:49 +02:00
if ( count ( $_REQUEST ) > 0 ) {
2013-01-17 19:32:16 +01:00
$cdr_id = check_str ( $_REQUEST [ " cdr_id " ]);
2017-06-23 17:21:25 +02:00
$missed = check_str ( $_REQUEST [ " missed " ]);
2013-01-17 19:32:16 +01:00
$direction = check_str ( $_REQUEST [ " direction " ]);
$caller_id_name = check_str ( $_REQUEST [ " caller_id_name " ]);
$caller_id_number = check_str ( $_REQUEST [ " caller_id_number " ]);
2017-05-29 23:51:45 +02:00
$caller_destination = check_str ( $_REQUEST [ " caller_destination " ]);
2014-08-03 06:03:44 +02:00
$caller_extension_uuid = check_str ( $_REQUEST [ " caller_extension_uuid " ]);
2013-01-17 19:32:16 +01:00
$destination_number = check_str ( $_REQUEST [ " destination_number " ]);
$context = check_str ( $_REQUEST [ " context " ]);
2014-08-02 12:57:02 +02:00
$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 " ]);
2013-01-17 19:32:16 +01:00
$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 " ]);
2016-03-11 00:29:47 +01:00
$call_result = check_str ( $_REQUEST [ " call_result " ]);
2013-01-17 19:32:16 +01:00
$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 " ]);
2015-02-20 00:28:40 +01:00
$bridge_uuid = check_str ( $_REQUEST [ " network_addr " ]);
$order_by = check_str ( $_REQUEST [ " order_by " ]);
$order = check_str ( $_REQUEST [ " order " ]);
2016-12-23 05:36:46 +01:00
if ( is_array ( $_SESSION [ 'cdr' ][ 'field' ])) {
foreach ( $_SESSION [ 'cdr' ][ 'field' ] as $field ) {
$array = explode ( " , " , $field );
$field_name = end ( $array );
if ( isset ( $_REQUEST [ $field_name ])) {
$$field_name = check_str ( $_REQUEST [ $field_name ]);
}
2016-12-22 01:02:10 +01:00
}
}
2015-12-09 23:08:33 +01:00
if ( strlen ( check_str ( $_REQUEST [ " mos_comparison " ])) > 0 ) {
switch ( check_str ( $_REQUEST [ " mos_comparison " ])) {
2016-03-11 00:29:47 +01:00
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 ;
2015-12-09 23:08:33 +01:00
}
2016-07-27 04:49:23 +02:00
} else {
$mos_comparison = '' ;
}
2016-02-24 03:42:10 +01:00
//$mos_comparison = check_str($_REQUEST["mos_comparison"]);
2015-12-09 23:08:33 +01:00
$mos_score = check_str ( $_REQUEST [ " mos_score " ]);
2017-06-03 06:31:20 +02:00
$leg = check_str ( $_REQUEST [ " leg " ]);
2012-06-04 16:58:40 +02:00
}
2017-06-03 06:31:20 +02:00
if ( ! permission_exists ( xml_cdr_b_leg )){
$leg = 'a' ;
}
2015-12-09 23:08:33 +01:00
2012-06-04 16:58:40 +02:00
//build the sql where string
2017-06-23 17:21:25 +02:00
if ( $missed == true ) {
$sql_where_ands [] = " billsec = '0' " ;
}
2014-06-16 20:12:21 +02:00
if ( strlen ( $start_epoch ) > 0 && strlen ( $stop_epoch ) > 0 ) {
2014-06-17 00:08:30 +02:00
$sql_where_ands [] = " start_epoch BETWEEN " . $start_epoch . " AND " . $stop_epoch . " " ;
2013-01-17 19:32:16 +01:00
}
2014-06-17 00:08:30 +02:00
if ( strlen ( $cdr_id ) > 0 ) { $sql_where_ands [] = " cdr_id like '% " . $cdr_id . " %' " ; }
2014-07-17 18:52:31 +02:00
if ( strlen ( $direction ) > 0 ) { $sql_where_ands [] = " direction = ' " . $direction . " ' " ; }
2014-06-24 02:37:17 +02:00
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 . " ' " ;
}
2018-06-26 19:38:23 +02:00
if ( strlen ( $caller_extension_uuid ) > 0 && is_uuid ( $caller_extension_uuid )) {
2014-08-03 06:03:44 +02:00
$sql_where_ands [] = " extension_uuid = ' " . $caller_extension_uuid . " ' " ;
}
2018-06-26 19:36:48 +02:00
if ( strlen ( $caller_id_number ) > 0 ) {
2014-06-24 02:37:17 +02:00
$mod_caller_id_number = str_replace ( " * " , " % " , $caller_id_number );
$sql_where_ands [] = " caller_id_number like ' " . $mod_caller_id_number . " ' " ;
}
2017-05-29 23:51:45 +02:00
if ( strlen ( $caller_destination ) > 0 ) {
$mod_caller_destination = str_replace ( " * " , " % " , $caller_destination );
$sql_where_ands [] = " caller_destination like ' " . $mod_caller_destination . " ' " ;
2017-05-29 18:56:28 +02:00
}
2014-06-24 02:37:17 +02:00
if ( strlen ( $destination_number ) > 0 ) {
$mod_destination_number = str_replace ( " * " , " % " , $destination_number );
$sql_where_ands [] = " destination_number like ' " . $mod_destination_number . " ' " ;
}
2014-06-17 00:08:30 +02:00
if ( strlen ( $context ) > 0 ) { $sql_where_ands [] = " context like '% " . $context . " %' " ; }
2016-12-22 01:02:10 +01:00
2016-12-23 05:36:46 +01:00
if ( is_array ( $_SESSION [ 'cdr' ][ 'field' ])) {
foreach ( $_SESSION [ 'cdr' ][ 'field' ] as $field ) {
$array = explode ( " , " , $field );
$field_name = end ( $array );
if ( isset ( $$field_name )) {
$$field_name = check_str ( $_REQUEST [ $field_name ]);
2017-11-03 05:05:33 +01:00
if ( strlen ( $$field_name ) > 0 ) {
$sql_where_ands [] = " $field_name like '% " . $$field_name . " %' " ;
}
2016-12-23 05:36:46 +01:00
}
2016-12-22 01:02:10 +01:00
}
}
2016-12-23 05:36:46 +01:00
2014-08-02 12:57:02 +02:00
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' " ; }
2012-06-04 16:58:40 +02:00
}
2014-08-02 12:57:02 +02:00
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' " ; }
2012-06-04 16:58:40 +02:00
}
2014-06-17 00:08:30 +02:00
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 . " %' " ; }
2016-03-11 00:29:47 +01:00
if ( strlen ( $call_result ) > 0 ) {
switch ( $call_result ) {
case 'answered' :
$sql_where_ands [] = " (answer_stamp is not null and bridge_uuid is not null) " ;
break ;
case 'voicemail' :
$sql_where_ands [] = " (answer_stamp is not null and bridge_uuid is null) " ;
break ;
case 'missed' :
$sql_missed_1 = " ( (answer_stamp is not null and bridge_uuid is null) or ( " ;
$sql_missed_2 = " ) ) " ;
case 'cancelled' :
if ( $direction == 'inbound' || $direction == 'local' || $call_result == 'missed' ) {
$sql_where_ands_cancelled = " (answer_stamp is null and bridge_uuid is null and sip_hangup_disposition <> 'send_refuse') " ;
}
else if ( $direction == 'outbound' ) {
$sql_where_ands_cancelled = " (answer_stamp is null and bridge_uuid is not null) " ;
}
else {
$sql_where_ands_cancelled = "
((
( direction = 'inbound' or direction = 'local' )
and answer_stamp is null
and bridge_uuid is null
and sip_hangup_disposition <> 'send_refuse'
)
or (
direction = 'outbound'
and answer_stamp is null
and bridge_uuid is not null
)) " ;
}
$sql_where_ands [] = ( $call_result == 'missed' ) ? $sql_missed_1 . ' ' . $sql_where_ands_cancelled . ' ' . $sql_missed_2 : $sql_where_ands_cancelled ;
break ;
default : //failed
$sql_where_ands [] = " (answer_stamp is null and bridge_uuid is null and billsec = 0 and sip_hangup_disposition = 'send_refuse') " ;
}
}
2014-06-17 00:08:30 +02:00
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 . " %' " ; }
2015-12-09 23:08:33 +01:00
if ( strlen ( $mos_comparison ) > 0 && strlen ( $mos_score ) > 0 ) { $sql_where_ands [] = " rtp_audio_in_mos " . $mos_comparison . " " . $mos_score . " " ; }
2017-06-03 06:31:20 +02:00
if ( strlen ( $leg ) > 0 ) { $sql_where_ands [] = " leg=' $leg ' " ; }
2012-06-04 16:58:40 +02:00
2015-03-14 01:03:16 +01:00
//if not admin or superadmin, only show own calls
2014-06-17 00:08:30 +02:00
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 . " ' " ; }
2012-06-04 16:58:40 +02:00
}
2014-06-17 00:08:30 +02:00
}
// 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 . " ' " ;
}
2012-06-04 16:58:40 +02:00
}
2014-06-17 00:08:30 +02:00
}
// 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 ) . " ) " ;
2012-06-04 16:58:40 +02:00
}
}
2015-03-14 01:03:16 +01:00
else {
$sql_where_ands [] = " 1 <> 1 " ; //disable viewing of cdr records by users with no assigned extensions
}
2012-06-04 16:58:40 +02:00
}
2014-06-17 00:08:30 +02:00
// concatenate the 'ands's array, add to where clause
if ( sizeof ( $sql_where_ands ) > 0 ) {
$sql_where = " and " . implode ( " and " , $sql_where_ands );
2012-06-04 16:58:40 +02:00
}
//set the param variable which is used with paging
2018-06-29 22:18:34 +02:00
$param = " &cdr_id= " . escape ( $cdr_id );
$param .= " &missed= " . escape ( $missed );
$param .= " &direction= " . escape ( $direction );
$param .= " &caller_id_name= " . escape ( $caller_id_name );
$param .= " &caller_id_number= " . escape ( $caller_id_number );
$param .= " &caller_destination= " . escape ( $caller_destination );
$param .= " &caller_extension_uuid= " . escape ( $caller_extension_uuid );
$param .= " &destination_number= " . escape ( $destination_number );
$param .= " &context= " . escape ( $context );
$param .= " &start_stamp_begin= " . escape ( $start_stamp_begin );
$param .= " &start_stamp_end= " . escape ( $start_stamp_end );
$param .= " &answer_stamp_begin= " . escape ( $answer_stamp_begin );
$param .= " &answer_stamp_end= " . escape ( $answer_stamp_end );
$param .= " &end_stamp_begin= " . escape ( $end_stamp_begin );
$param .= " &end_stamp_end= " . escape ( $end_stamp_end );
$param .= " &start_epoch= " . escape ( $start_epoch );
$param .= " &stop_epoch= " . escape ( $stop_epoch );
$param .= " &duration= " . escape ( $duration );
$param .= " &billsec= " . escape ( $billsec );
$param .= " &hangup_cause= " . escape ( $hangup_cause );
$param .= " &call_result= " . escape ( $call_result );
$param .= " &uuid= " . escape ( $uuid );
$param .= " &bleg_uuid= " . escape ( $bleg_uuid );
$param .= " &accountcode= " . escape ( $accountcode );
$param .= " &read_codec= " . escape ( $read_codec );
$param .= " &write_codec= " . escape ( $write_codec );
$param .= " &remote_media_ip= " . escape ( $remote_media_ip );
$param .= " &network_addr= " . escape ( $network_addr );
$param .= " &bridge_uuid= " . escape ( $bridge_uuid );
$param .= " &mos_comparison= " . escape ( $mos_comparison );
$param .= " &mos_score= " . escape ( $mos_score );
2016-12-23 05:36:46 +01:00
if ( is_array ( $_SESSION [ 'cdr' ][ 'field' ])) {
foreach ( $_SESSION [ 'cdr' ][ 'field' ] as $field ) {
$array = explode ( " , " , $field );
$field_name = end ( $array );
if ( isset ( $$field_name )) {
2018-06-29 22:18:34 +02:00
$param .= " & " . $field_name . " = " . escape ( $$field_name );
2016-12-23 05:36:46 +01:00
}
2016-12-22 01:02:10 +01:00
}
}
2017-12-09 20:26:36 +01:00
if ( $_GET [ 'show' ] == 'all' && permission_exists ( 'xml_cdr_all' )) {
$param .= " &show=all " ;
2015-03-06 18:15:09 +01:00
}
2012-08-24 07:56:45 +02:00
if ( isset ( $order_by )) {
2018-06-29 22:18:34 +02:00
$param .= " &order_by= " . escape ( $order_by ) . " &order= " . escape ( $order );
2012-08-24 07:56:45 +02:00
}
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 " ; }
2014-07-11 03:34:47 +02:00
//set a default number of rows to show
2012-06-04 16:58:40 +02:00
$num_rows = '0' ;
2016-07-27 04:49:23 +02:00
//disable the paging
if ( $_REQUEST [ 'export_format' ] == " csv " ) { $rows_per_page = 0 ; }
if ( $_REQUEST [ 'export_format' ] == " pdf " ) { $rows_per_page = 0 ; }
2018-05-01 10:57:47 +02:00
//count the records in the database
/*
if ( $_SESSION [ 'cdr' ][ 'limit' ][ 'numeric' ] == 0 ) {
$sql = " select count(uuid) as num_rows from v_xml_cdr " ;
$sql .= " where domain_uuid = ' " . $domain_uuid . " ' " . $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' ];
2012-07-11 04:23:05 +02:00
}
2018-05-01 10:57:47 +02:00
else {
$num_rows = '0' ;
2014-07-11 03:34:47 +02:00
}
2018-05-01 10:57:47 +02:00
}
unset ( $prep_statement , $result );
}
*/
2017-04-08 23:17:52 +02:00
2018-05-01 10:57:47 +02:00
//limit the number of results
if ( $_SESSION [ 'cdr' ][ 'limit' ][ 'numeric' ] > 0 ) {
$num_rows = $_SESSION [ 'cdr' ][ 'limit' ][ 'numeric' ];
2012-06-04 16:58:40 +02:00
}
2018-05-01 10:57:47 +02:00
//set the default paging
$rows_per_page = $_SESSION [ 'domain' ][ 'paging' ][ 'numeric' ];
//prepare to page the results
//$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; //set on the page that includes this page
if ( is_numeric ( $_GET [ 'page' ])) { $page = $_GET [ 'page' ]; }
2018-05-01 11:16:40 +02:00
if ( ! isset ( $_GET [ 'page' ])) { $page = 0 ; $_GET [ 'page' ] = 0 ; }
2018-05-01 10:57:47 +02:00
$offset = $rows_per_page * $page ;
2012-06-04 16:58:40 +02:00
//get the results from the db
2014-12-10 04:57:48 +01:00
$sql = " select " ;
2016-02-24 03:42:10 +01:00
$sql .= " domain_uuid, " ;
2014-12-10 04:57:48 +01:00
$sql .= " start_stamp, " ;
$sql .= " start_epoch, " ;
$sql .= " hangup_cause, " ;
$sql .= " duration, " ;
$sql .= " billmsec, " ;
2017-10-15 20:55:00 +02:00
$sql .= " record_path, " ;
$sql .= " record_name, " ;
2014-12-10 04:57:48 +01:00
$sql .= " uuid, " ;
$sql .= " bridge_uuid, " ;
$sql .= " direction, " ;
$sql .= " billsec, " ;
$sql .= " caller_id_name, " ;
$sql .= " caller_id_number, " ;
2017-05-29 23:51:45 +02:00
$sql .= " caller_destination, " ;
2016-05-12 02:21:36 +02:00
$sql .= " source_number, " ;
2014-12-10 04:57:48 +01:00
$sql .= " destination_number, " ;
2017-06-03 06:31:20 +02:00
$sql .= " leg, " ;
2016-09-03 20:03:35 +02:00
$sql .= " (xml IS NOT NULL OR json IS NOT NULL) AS raw_data_exists, " ;
2016-06-04 03:47:35 +02:00
if ( is_array ( $_SESSION [ 'cdr' ][ 'field' ])) {
foreach ( $_SESSION [ 'cdr' ][ 'field' ] as $field ) {
2016-12-23 00:59:34 +01:00
$array = explode ( " , " , $field );
$field_name = end ( $array );
$sql .= $field_name . " , " ;
2016-06-04 03:47:35 +02:00
}
}
2018-02-09 21:39:32 +01:00
if ( is_array ( $_SESSION [ 'cdr' ][ 'export' ])) {
foreach ( $_SESSION [ 'cdr' ][ 'export' ] as $field ) {
$sql .= $field . " , " ;
}
}
2015-07-20 23:34:23 +02:00
$sql .= " accountcode, " ;
2016-03-11 00:29:47 +01:00
$sql .= " answer_stamp, " ;
$sql .= " sip_hangup_disposition, " ;
2014-12-10 04:57:48 +01:00
if ( permission_exists ( " xml_cdr_pdd " )) {
$sql .= " pdd_ms, " ;
}
if ( permission_exists ( " xml_cdr_mos " )) {
$sql .= " rtp_audio_in_mos, " ;
}
$sql .= " (answer_epoch - start_epoch) as tta " ;
2017-12-09 20:26:36 +01:00
if ( $_REQUEST [ 'show' ] == " all " && permission_exists ( 'xml_cdr_all' )) {
2015-03-06 18:15:09 +01:00
$sql .= " , domain_name " ;
}
$sql .= " from v_xml_cdr " ;
2017-12-09 20:26:36 +01:00
if ( $_REQUEST [ 'show' ] == " all " && permission_exists ( 'xml_cdr_all' )) {
2015-03-06 18:15:09 +01:00
if ( $sql_where ) { $sql .= " where " ; }
} else {
$sql .= " where domain_uuid = ' " . $domain_uuid . " ' " ;
}
2017-06-03 06:31:20 +02:00
2015-03-06 18:15:09 +01:00
$sql .= $sql_where ;
2014-06-17 00:08:30 +02:00
if ( strlen ( $order_by ) > 0 ) { $sql .= " order by " . $order_by . " " . $order . " " ; }
2016-07-27 04:49:23 +02:00
if ( $_REQUEST [ 'export_format' ] != " csv " && $_REQUEST [ 'export_format' ] != " pdf " ) {
2016-05-05 06:35:05 +02:00
if ( $rows_per_page == 0 ) {
$sql .= " limit " . $_SESSION [ 'cdr' ][ 'limit' ][ 'numeric' ] . " offset 0 " ;
}
else {
$sql .= " limit " . $rows_per_page . " offset " . $offset . " " ;
}
2012-07-11 04:23:05 +02:00
}
2016-02-24 03:05:52 +01:00
$sql = str_replace ( " " , " " , $sql );
$sql = str_replace ( " where and " , " where " , $sql );
2018-04-23 21:24:30 +02:00
$database = new database ;
if ( $archive_request == 'true' ) {
if ( $_SESSION [ 'cdr' ][ 'archive_database' ][ 'boolean' ] == 'true' ) {
$database -> driver = $_SESSION [ 'cdr' ][ 'archive_database_driver' ][ 'text' ];
$database -> host = $_SESSION [ 'cdr' ][ 'archive_database_host' ][ 'text' ];
$database -> type = $_SESSION [ 'cdr' ][ 'archive_database_type' ][ 'text' ];
$database -> port = $_SESSION [ 'cdr' ][ 'archive_database_port' ][ 'text' ];
$database -> db_name = $_SESSION [ 'cdr' ][ 'archive_database_name' ][ 'text' ];
$database -> username = $_SESSION [ 'cdr' ][ 'archive_database_username' ][ 'text' ];
$database -> password = $_SESSION [ 'cdr' ][ 'archive_database_password' ][ 'text' ];
}
}
$database -> select ( $sql );
$result = $database -> result ;
$result_count = count ( $result );
2018-05-01 10:57:47 +02:00
unset ( $database );
//return the paging
list ( $paging_controls_mini , $rows_per_page , $offset ) = paging ( $num_rows , $param , $rows_per_page , true , $result_count ); //top
list ( $paging_controls , $rows_per_page , $offset ) = paging ( $num_rows , $param , $rows_per_page , false , $result_count ); //bottom
2012-06-04 16:58:40 +02:00
2018-05-01 10:57:47 +02:00
//set the row style
2012-06-04 16:58:40 +02:00
$c = 0 ;
$row_style [ " 0 " ] = " row_style0 " ;
$row_style [ " 1 " ] = " row_style1 " ;
2016-06-04 03:47:35 +02:00
?>