Portions created by the Initial Developer are Copyright (C) 2008-2016 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ //includes include "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; //ehceck permissions if (permission_exists('xml_cdr_view')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //get the http values and set them to a variable if (strlen($_REQUEST["uuid"]) > 0) { $uuid = trim($_REQUEST["uuid"]); } //get the cdr string from the database $sql = "select * from v_xml_cdr "; if ($_GET['showall'] && permission_exists('xml_cdr_all')) { $sql .= "where uuid = '$uuid' "; } else { $sql .= "where uuid = '$uuid' and domain_uuid = '$domain_uuid' "; } $row = $db->query($sql)->fetch(); $start_stamp = trim($row["start_stamp"]); $xml_string = trim($row["xml"]); $json_string = trim($row["json"]); //print_r($row); //get the format if (strlen($xml_string) > 0) { $format = "xml"; } if (strlen($json_string) > 0) { $format = "json"; } //get cdr from the file system if ($format != "xml" || $format != "json") { $tmp_time = strtotime($start_stamp); $tmp_year = date("Y", $tmp_time); $tmp_month = date("M", $tmp_time); $tmp_day = date("d", $tmp_time); $tmp_dir = $_SESSION['switch']['log']['dir'].'/xml_cdr/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day; if (file_exists($tmp_dir.'/'.$uuid.'.json')) { $format = "json"; $json_string = file_get_contents($tmp_dir.'/'.$uuid.'.json'); } if (file_exists($tmp_dir.'/'.$uuid.'.xml')) { $format = "xml"; $xml_string = file_get_contents($tmp_dir.'/'.$uuid.'.xml'); } } //parse the xml to get the call detail record info try { if ($format == 'json') { $array = json_decode($json_string,true); } if ($format == 'xml') { $array = json_decode(json_encode((array)simplexml_load_string($xml_string)),true); } } catch(Exception $e) { echo $e->getMessage(); } //get the header require_once "resources/header.php"; //page title and description echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
".$text['title2']."\n"; echo " \n"; echo "
\n"; echo "".$text['description-5']." \n"; echo "".$text['description-6']." \n"; echo "".$text['description-7']." \n"; echo "
\n"; echo "
\n"; echo "
\n"; //detail summary //get the variables $uuid = check_str(urldecode($array["variables"]["uuid"])); $direction = check_str(urldecode($array["channel_data"]["direction"])); $language = check_str(urldecode($array["variables"]["language"])); $start_epoch = check_str(urldecode($array["variables"]["start_epoch"])); $start_stamp = check_str(urldecode($array["variables"]["start_stamp"])); $start_uepoch = check_str(urldecode($array["variables"]["start_uepoch"])); $answer_stamp = check_str(urldecode($array["variables"]["answer_stamp"])); $answer_epoch = check_str(urldecode($array["variables"]["answer_epoch"])); $answer_uepoch = check_str(urldecode($array["variables"]["answer_uepoch"])); $end_epoch = check_str(urldecode($array["variables"]["end_epoch"])); $end_uepoch = check_str(urldecode($array["variables"]["end_uepoch"])); $end_stamp = check_str(urldecode($array["variables"]["end_stamp"])); $duration = check_str(urldecode($array["variables"]["duration"])); $mduration = check_str(urldecode($array["variables"]["mduration"])); $billsec = check_str(urldecode($array["variables"]["billsec"])); $billmsec = check_str(urldecode($array["variables"]["billmsec"])); $bridge_uuid = check_str(urldecode($array["variables"]["bridge_uuid"])); $read_codec = check_str(urldecode($array["variables"]["read_codec"])); $write_codec = check_str(urldecode($array["variables"]["write_codec"])); $remote_media_ip = check_str(urldecode($array["variables"]["remote_media_ip"])); $hangup_cause = check_str(urldecode($array["variables"]["hangup_cause"])); $hangup_cause_q850 = check_str(urldecode($array["variables"]["hangup_cause_q850"])); if (!isset($array["callflow"][0])) { $tmp = $array["callflow"]; unset($array["callflow"]); $array["callflow"][0] = $tmp; } $x = 0; if (is_array($array["callflow"])) foreach ($array["callflow"] as $row) { if ($x == 0) { $destination_number = check_str(urldecode($row["caller_profile"]["destination_number"])); $context = check_str(urldecode($row["caller_profile"]["context"])); $network_addr = check_str(urldecode($row["caller_profile"]["network_addr"])); } $caller_id_name = check_str(urldecode($row["caller_profile"]["caller_id_name"])); $caller_id_number = check_str(urldecode($row["caller_profile"]["caller_id_number"])); $x++; } unset($x); $tmp_year = date("Y", strtotime($start_stamp)); $tmp_month = date("M", strtotime($start_stamp)); $tmp_day = date("d", strtotime($start_stamp)); $c = 0; $row_style["0"] = "row_style0"; $row_style["1"] = "row_style1"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
".$text['label-summary']." 
\n"; echo "\n"; echo "\n"; echo "\n"; //echo "\n"; //echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo " \n"; //echo " \n"; //echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
".$text['table-direction']."LanguageContext".$text['table-name']."".$text['table-download']."".$text['label-destination']."".$text['label-start']."".$text['table-end']."".$text['label-duration']."".$text['label-status']."
".$direction."".$language."".$context.""; if (file_exists($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day.'/'.$uuid.'.wav')) { //echo " \n"; //echo " "; echo " \n"; //$tmp_file_array = explode("\.",$file); echo $caller_id_name.' '; echo " "; } else { echo $caller_id_name.' '; } echo " "; if (file_exists($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day.'/'.$uuid.'.wav')) { echo " \n"; echo $caller_id_number.' '; echo " "; } else { echo $caller_id_number.' '; } echo " ".$destination_number."".$start_stamp."".$end_stamp."".$duration."".$hangup_cause."
"; echo "

\n"; //channel data loop $c = 0; $row_style["0"] = "row_style0"; $row_style["1"] = "row_style1"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
".$text['label-channel']." 
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; if (is_array($array["channel_data"])) foreach($array["channel_data"] as $key => $value) { $value = urldecode($value); echo "\n"; echo " \n"; echo " \n"; echo "\n"; if ($c==0) { $c=1; } else { $c=0; } } echo "
".$text['label-name']."".$text['label-value']."
".$key." ".wordwrap($value,75,"
\n", TRUE)." 
"; echo "

\n"; //variable loop $c = 0; $row_style["0"] = "row_style0"; $row_style["1"] = "row_style1"; echo "\n"; echo "\n"; echo " \n"; echo "\n"; echo "\n"; echo "
".$text['label-variables']." 
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; if (is_array($array["variables"])) foreach($array["variables"] as $key => $value) { if (is_array($value)) { $value = implode($value); } $value = urldecode($value); if ($key != "digits_dialed" && $key != "dsn") { echo "\n"; echo " \n"; if ($key == "bridge_uuid" || $key == "signal_bond") { echo " \n"; } else { echo " \n"; } echo "\n"; } if ($c==0) { $c=1; } else { $c=0; } } echo "
".$text['label-name']."".$text['label-value']."
".$key."\n"; echo " ".$value." \n"; $tmp_dir = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day; $tmp_name = ''; if (file_exists($tmp_dir.'/'.$value.'.wav')) { $tmp_name = $value.".wav"; } elseif (file_exists($tmp_dir.'/'.$value.'_1.wav')) { $tmp_name = $value."_1.wav"; } elseif (file_exists($tmp_dir.'/'.$value.'.mp3')) { $tmp_name = $value.".mp3"; } elseif (file_exists($tmp_dir.'/'.$value.'_1.mp3')) { $tmp_name = $value."_1.mp3"; } if (strlen($tmp_name) > 0 && file_exists($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day.'/'.$tmp_name)) { echo " \n"; echo " play"; echo "  "; } if (strlen($tmp_name) > 0 && file_exists($_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day.'/'.$tmp_name)) { echo " \n"; echo " download"; echo " "; } echo "".wordwrap($value,75,"
\n", TRUE)." 
"; echo "

\n"; //app_log $c = 0; $row_style["0"] = "row_style0"; $row_style["1"] = "row_style1"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
".$text['label-application-log']." 
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; //foreach($array["variables"] as $key => $value) { if (is_array($array["app_log"]["application"])) foreach ($array["app_log"]["application"] as $row) { $app_name = $row["@attributes"]["app_name"]; $app_data = urldecode($row["@attributes"]["app_data"]); echo "\n"; echo " \n"; echo " \n"; echo "\n"; if ($c==0) { $c=1; } else { $c=0; } } echo "
".$text['label-name']."".$text['label-data']."
".$app_name." ".wordwrap($app_data,75,"
\n", TRUE)." 
"; echo "

\n"; //call flow $c = 0; $row_style["0"] = "row_style0"; $row_style["1"] = "row_style1"; if (is_array($array["callflow"])) foreach ($array["callflow"] as $row) { echo "\n"; echo "\n"; echo " \n"; echo "\n"; echo "
\n"; //attributes echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
".$text['label-call-flow']."  
\n"; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; if (is_array($row["@attributes"])) foreach($row["@attributes"] as $key => $value) { $value = urldecode($value); echo " \n"; echo " \n"; echo " \n"; echo " \n"; if ($c==0) { $c=1; } else { $c=0; } } echo " \n"; echo " \n"; echo " \n"; echo "
".$text['label-name']."".$text['label-value']."
".$key." ".wordwrap($value,75,"
\n", TRUE)." 


\n"; //extension attributes echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
".$text['label-call-flow-2']."  
\n"; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; if (is_array($row["extension"]["@attributes"])) foreach($row["extension"]["@attributes"] as $key => $value) { $value = urldecode($value); echo " \n"; echo " \n"; echo " \n"; echo " \n"; if ($c==0) { $c=1; } else { $c=0; } } echo " \n"; echo " \n"; echo " \n"; echo "
".$text['label-name']."".$text['label-value']."
".$key." ".wordwrap($value,75,"
\n", TRUE)." 


\n"; //extension application echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
".$text['label-call-flow-3']."  
\n"; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; if (is_array($row["extension"]["application"])) foreach ($row["extension"]["application"] as $tmp_row) { $app_name = $tmp_row["@attributes"]["app_name"]; $app_data = urldecode($tmp_row["@attributes"]["app_data"]); echo " \n"; echo " \n"; echo " \n"; echo " \n"; if ($c==0) { $c=1; } else { $c=0; } } echo " \n"; echo " \n"; echo " \n"; echo "
".$text['label-name']."".$text['label-data']."
".$app_name." ".wordwrap($app_data,75,"
\n", TRUE)." 


\n"; //caller profile echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
".$text['label-call-flow-4']."  
\n"; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; if (is_array($row["caller_profile"])) foreach($row["caller_profile"] as $key => $value) { if (is_array($value)) { $value = implode($value); } $value = urldecode($value); echo " \n"; if ($key != "originatee") { if (is_array($value)) { $value = implode($value); } $value = urldecode($value); echo " \n"; echo " \n"; } else { echo " \n"; echo " \n"; } echo "\n"; if ($c==0) { $c=1; } else { $c=0; } } echo " \n"; echo " \n"; echo " \n"; echo "
".$text['label-name']."".$text['label-value']."
".$key." ".wordwrap($value,75,"
\n", TRUE)." 
".$key." \n"; echo " \n"; if (isset($child["originatee_caller_profile"])) foreach($child["originatee_caller_profile"] as $key => $value) { //print_r($tmp_child); echo " \n"; echo " \n"; if ($key != "uuid") { echo " \n"; } else { echo " \n"; } echo " \n"; } echo "
".$key." ".wordwrap($value,75,"
\n", TRUE)." 
".$value." 
\n"; echo "


\n"; //times echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; if (is_array($row["times"])) foreach($row["times"] as $key => $value) { $value = urldecode($value); echo " \n"; echo " \n"; echo " \n"; echo " \n"; if ($c==0) { $c=1; } else { $c=0; } } echo " \n"; echo " \n"; echo " \n"; echo "
".$text['label-call-flow-5']." 
".$text['label-name']."".$text['label-value']."
".$key." ".wordwrap($value,75,"
\n", TRUE)." 


"; echo "

\n"; echo "
"; } //get the footer require_once "resources/footer.php"; ?>