Increase the indention to improve code consistency.

This commit is contained in:
Mark Crane
2013-04-30 15:50:46 +00:00
parent 2729b902c9
commit b7827c38e6

View File

@@ -53,208 +53,189 @@
//set pdo attribute that enables exception handling
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
function process_xml_cdr($db, $leg, $xml_string) {
//set global variable
global $debug;
//define the process_xml_cdr function
function process_xml_cdr($db, $leg, $xml_string) {
//set global variable
global $debug;
//parse the xml to get the call detail record info
try {
$xml = simplexml_load_string($xml_string);
}
catch(Exception $e) {
echo $e->getMessage();
}
//prepare the database object
require_once "includes/classes/database.php";
$database = new database;
$database->table = "v_xml_cdr";
//misc
$uuid = check_str(urldecode($xml->variables->uuid));
$database->fields['uuid'] = $uuid;
$database->fields['accountcode'] = check_str(urldecode($xml->variables->accountcode));
$database->fields['default_language'] = check_str(urldecode($xml->variables->default_language));
$database->fields['bridge_uuid'] = check_str(urldecode($xml->variables->bridge_uuid));
$database->fields['digits_dialed'] = check_str(urldecode($xml->variables->digits_dialed));
$database->fields['sip_hangup_disposition'] = check_str(urldecode($xml->variables->sip_hangup_disposition));
//time
$database->fields['start_epoch'] = check_str(urldecode($xml->variables->start_epoch));
$start_stamp = check_str(urldecode($xml->variables->start_stamp));
$database->fields['start_stamp'] = $start_stamp;
$database->fields['answer_stamp'] = check_str(urldecode($xml->variables->answer_stamp));
$database->fields['answer_epoch'] = check_str(urldecode($xml->variables->answer_epoch));
$database->fields['end_epoch'] = check_str(urldecode($xml->variables->end_epoch));
$database->fields['end_stamp'] = check_str(urldecode($xml->variables->end_stamp));
$database->fields['duration'] = check_str(urldecode($xml->variables->duration));
$database->fields['mduration'] = check_str(urldecode($xml->variables->mduration));
$database->fields['billsec'] = check_str(urldecode($xml->variables->billsec));
$database->fields['billmsec'] = check_str(urldecode($xml->variables->billmsec));
//codecs
$database->fields['read_codec'] = check_str(urldecode($xml->variables->read_codec));
$database->fields['read_rate'] = check_str(urldecode($xml->variables->read_rate));
$database->fields['write_codec'] = check_str(urldecode($xml->variables->write_codec));
$database->fields['write_rate'] = check_str(urldecode($xml->variables->write_rate));
$database->fields['remote_media_ip'] = check_str(urldecode($xml->variables->remote_media_ip));
$database->fields['hangup_cause'] = check_str(urldecode($xml->variables->hangup_cause));
$database->fields['hangup_cause_q850'] = check_str(urldecode($xml->variables->hangup_cause_q850));
//call center
$database->fields['cc_side'] = check_str(urldecode($xml->variables->cc_side));
$database->fields['cc_member_uuid'] = check_str(urldecode($xml->variables->cc_member_uuid));
$database->fields['cc_queue_joined_epoch'] = check_str(urldecode($xml->variables->cc_queue_joined_epoch));
$database->fields['cc_queue'] = check_str(urldecode($xml->variables->cc_queue));
$database->fields['cc_member_session_uuid'] = check_str(urldecode($xml->variables->cc_member_session_uuid));
$database->fields['cc_agent'] = check_str(urldecode($xml->variables->cc_agent));
$database->fields['cc_agent_type'] = check_str(urldecode($xml->variables->cc_agent_type));
$database->fields['waitsec'] = check_str(urldecode($xml->variables->waitsec));
//app info
$database->fields['last_app'] = check_str(urldecode($xml->variables->last_app));
$database->fields['last_arg'] = check_str(urldecode($xml->variables->last_arg));
//conference
$database->fields['conference_name'] = check_str(urldecode($xml->variables->conference_name));
$database->fields['conference_uuid'] = check_str(urldecode($xml->variables->conference_uuid));
$database->fields['conference_member_id'] = check_str(urldecode($xml->variables->conference_member_id));
//get the values from the callflow.
$x = 0;
foreach ($xml->callflow as $row) {
if ($x == 0) {
$context = check_str(urldecode($row->caller_profile->context));
$database->fields['destination_number'] = check_str(urldecode($row->caller_profile->destination_number));
$database->fields['context'] = $context;
$database->fields['network_addr'] = check_str(urldecode($row->caller_profile->network_addr));
//parse the xml to get the call detail record info
try {
$xml = simplexml_load_string($xml_string);
}
$database->fields['caller_id_name'] = check_str(urldecode($row->caller_profile->caller_id_name));
$database->fields['caller_id_number'] = check_str(urldecode($row->caller_profile->caller_id_number));
$x++;
}
unset($x);
//store the call leg
$database->fields['leg'] = $leg;
//store the call direction
$database->fields['direction'] = check_str(urldecode($xml->variables->call_direction));
//store post dial delay, in milliseconds
$database->fields['pdd_ms'] = check_str(urldecode($xml->variables->progress_mediamsec) + urldecode($xml->variables->progressmsec));
//get break down the date to year, month and day
$tmp_time = strtotime($start_stamp);
$tmp_year = date("Y", $tmp_time);
$tmp_month = date("M", $tmp_time);
$tmp_day = date("d", $tmp_time);
//get the domain values from the xml
$domain_name = check_str(urldecode($xml->variables->domain_name));
$domain_uuid = check_str(urldecode($xml->variables->domain_uuid));
//get the domain_uuid with the domain_name
if (strlen($domain_uuid) == 0) {
$sql = "select domain_uuid from v_domains ";
if (strlen($domain_name) == 0 && $context != 'public' && $context != 'default') {
$sql .= "where domain_name = '".$context."' ";
catch(Exception $e) {
echo $e->getMessage();
}
else {
$sql .= "where domain_name = '".$domain_name."' ";
//prepare the database object
require_once "includes/classes/database.php";
$database = new database;
$database->table = "v_xml_cdr";
//misc
$uuid = check_str(urldecode($xml->variables->uuid));
$database->fields['uuid'] = $uuid;
$database->fields['accountcode'] = check_str(urldecode($xml->variables->accountcode));
$database->fields['default_language'] = check_str(urldecode($xml->variables->default_language));
$database->fields['bridge_uuid'] = check_str(urldecode($xml->variables->bridge_uuid));
$database->fields['digits_dialed'] = check_str(urldecode($xml->variables->digits_dialed));
$database->fields['sip_hangup_disposition'] = check_str(urldecode($xml->variables->sip_hangup_disposition));
//time
$database->fields['start_epoch'] = check_str(urldecode($xml->variables->start_epoch));
$start_stamp = check_str(urldecode($xml->variables->start_stamp));
$database->fields['start_stamp'] = $start_stamp;
$database->fields['answer_stamp'] = check_str(urldecode($xml->variables->answer_stamp));
$database->fields['answer_epoch'] = check_str(urldecode($xml->variables->answer_epoch));
$database->fields['end_epoch'] = check_str(urldecode($xml->variables->end_epoch));
$database->fields['end_stamp'] = check_str(urldecode($xml->variables->end_stamp));
$database->fields['duration'] = check_str(urldecode($xml->variables->duration));
$database->fields['mduration'] = check_str(urldecode($xml->variables->mduration));
$database->fields['billsec'] = check_str(urldecode($xml->variables->billsec));
$database->fields['billmsec'] = check_str(urldecode($xml->variables->billmsec));
//codecs
$database->fields['read_codec'] = check_str(urldecode($xml->variables->read_codec));
$database->fields['read_rate'] = check_str(urldecode($xml->variables->read_rate));
$database->fields['write_codec'] = check_str(urldecode($xml->variables->write_codec));
$database->fields['write_rate'] = check_str(urldecode($xml->variables->write_rate));
$database->fields['remote_media_ip'] = check_str(urldecode($xml->variables->remote_media_ip));
$database->fields['hangup_cause'] = check_str(urldecode($xml->variables->hangup_cause));
$database->fields['hangup_cause_q850'] = check_str(urldecode($xml->variables->hangup_cause_q850));
//call center
$database->fields['cc_side'] = check_str(urldecode($xml->variables->cc_side));
$database->fields['cc_member_uuid'] = check_str(urldecode($xml->variables->cc_member_uuid));
$database->fields['cc_queue_joined_epoch'] = check_str(urldecode($xml->variables->cc_queue_joined_epoch));
$database->fields['cc_queue'] = check_str(urldecode($xml->variables->cc_queue));
$database->fields['cc_member_session_uuid'] = check_str(urldecode($xml->variables->cc_member_session_uuid));
$database->fields['cc_agent'] = check_str(urldecode($xml->variables->cc_agent));
$database->fields['cc_agent_type'] = check_str(urldecode($xml->variables->cc_agent_type));
$database->fields['waitsec'] = check_str(urldecode($xml->variables->waitsec));
//app info
$database->fields['last_app'] = check_str(urldecode($xml->variables->last_app));
$database->fields['last_arg'] = check_str(urldecode($xml->variables->last_arg));
//conference
$database->fields['conference_name'] = check_str(urldecode($xml->variables->conference_name));
$database->fields['conference_uuid'] = check_str(urldecode($xml->variables->conference_uuid));
$database->fields['conference_member_id'] = check_str(urldecode($xml->variables->conference_member_id));
//get the values from the callflow.
$x = 0;
foreach ($xml->callflow as $row) {
if ($x == 0) {
$context = check_str(urldecode($row->caller_profile->context));
$database->fields['destination_number'] = check_str(urldecode($row->caller_profile->destination_number));
$database->fields['context'] = $context;
$database->fields['network_addr'] = check_str(urldecode($row->caller_profile->network_addr));
}
$database->fields['caller_id_name'] = check_str(urldecode($row->caller_profile->caller_id_name));
$database->fields['caller_id_number'] = check_str(urldecode($row->caller_profile->caller_id_number));
$x++;
}
$row = $db->query($sql)->fetch();
$domain_uuid = $row['domain_uuid'];
unset($x);
//store the call leg
$database->fields['leg'] = $leg;
//store the call direction
$database->fields['direction'] = check_str(urldecode($xml->variables->call_direction));
//store post dial delay, in milliseconds
$database->fields['pdd_ms'] = check_str(urldecode($xml->variables->progress_mediamsec) + urldecode($xml->variables->progressmsec));
//get break down the date to year, month and day
$tmp_time = strtotime($start_stamp);
$tmp_year = date("Y", $tmp_time);
$tmp_month = date("M", $tmp_time);
$tmp_day = date("d", $tmp_time);
//get the domain values from the xml
$domain_name = check_str(urldecode($xml->variables->domain_name));
$domain_uuid = check_str(urldecode($xml->variables->domain_uuid));
//get the domain_uuid with the domain_name
if (strlen($domain_uuid) == 0) {
$sql = "select domain_name, domain_uuid from v_domains ";
$sql = "select domain_uuid from v_domains ";
if (strlen($domain_name) == 0 && $context != 'public' && $context != 'default') {
$sql .= "where domain_name = '".$context."' ";
}
else {
$sql .= "where domain_name = '".$domain_name."' ";
}
$row = $db->query($sql)->fetch();
$domain_uuid = $row['domain_uuid'];
if (strlen($domain_name) == 0) { $domain_name = $row['domain_name']; }
}
}
//set values in the database
$database->domain_uuid = $domain_uuid;
$database->fields['domain_uuid'] = $domain_uuid;
$database->fields['domain_name'] = $domain_name;
//check whether a recording exists
$recording_relative_path = '/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day;
if (file_exists($_SESSION['switch']['recordings']['dir'].$recording_relative_path.'/'.$uuid.'.wav')) {
$recording_file = $recording_relative_path.'/'.$uuid.'.wav';
}
elseif (file_exists($_SESSION['switch']['recordings']['dir'].$recording_relative_path.'/'.$uuid.'.mp3')) {
$recording_file = $recording_relative_path.'/'.$uuid.'.mp3';
}
if(isset($recording_file) && !empty($recording_file)) {
$database->fields['recording_file'] = $recording_file;
}
//determine where the xml cdr will be archived
$sql = "select * from v_vars ";
$sql .= "where var_name = 'xml_cdr_archive' ";
$row = $db->query($sql)->fetch();
$var_value = trim($row["var_value"]);
switch ($var_value) {
case "dir":
$xml_cdr_archive = 'dir';
break;
case "db":
$xml_cdr_archive = 'db';
break;
case "none":
$xml_cdr_archive = 'none';
break;
default:
$xml_cdr_archive = 'dir';
break;
}
//if xml_cdr_archive is set to db then insert it.
if ($xml_cdr_archive == "db") {
$database->fields['xml_cdr'] = check_str($xml_string);
}
//insert the check_str($extension_uuid)
if (strlen($xml->variables->extension_uuid) > 0) {
$database->fields['extension_uuid'] = check_str(urldecode($xml->variables->extension_uuid));
}
//insert xml_cdr into the db
if (strlen($start_stamp) > 0) {
$database->add();
if ($debug) {
echo $database->sql."\n";
}
}
//insert the values
if (strlen($uuid) > 0) {
if ($debug) {
$time5_insert = microtime(true);
//echo $sql."<br />\n";
}
try {
$error = "false";
//$db->exec(check_sql($sql));
}
catch(PDOException $e) {
$tmp_dir = $_SESSION['switch']['log']['dir'].'/xml_cdr/failed/';
if(!file_exists($tmp_dir)) {
mkdir($tmp_dir, 0777, true);
if (strlen($domain_uuid) == 0) {
$sql = "select domain_name, domain_uuid from v_domains ";
$row = $db->query($sql)->fetch();
$domain_uuid = $row['domain_uuid'];
if (strlen($domain_name) == 0) { $domain_name = $row['domain_name']; }
}
$tmp_file = $uuid.'.xml';
$fh = fopen($tmp_dir.'/'.$tmp_file, 'w');
fwrite($fh, $xml_string);
fclose($fh);
}
//set values in the database
$database->domain_uuid = $domain_uuid;
$database->fields['domain_uuid'] = $domain_uuid;
$database->fields['domain_name'] = $domain_name;
//check whether a recording exists
$recording_relative_path = '/archive/'.$tmp_year.'/'.$tmp_month.'/'.$tmp_day;
if (file_exists($_SESSION['switch']['recordings']['dir'].$recording_relative_path.'/'.$uuid.'.wav')) {
$recording_file = $recording_relative_path.'/'.$uuid.'.wav';
}
elseif (file_exists($_SESSION['switch']['recordings']['dir'].$recording_relative_path.'/'.$uuid.'.mp3')) {
$recording_file = $recording_relative_path.'/'.$uuid.'.mp3';
}
if(isset($recording_file) && !empty($recording_file)) {
$database->fields['recording_file'] = $recording_file;
}
//determine where the xml cdr will be archived
$sql = "select * from v_vars ";
$sql .= "where var_name = 'xml_cdr_archive' ";
$row = $db->query($sql)->fetch();
$var_value = trim($row["var_value"]);
switch ($var_value) {
case "dir":
$xml_cdr_archive = 'dir';
break;
case "db":
$xml_cdr_archive = 'db';
break;
case "none":
$xml_cdr_archive = 'none';
break;
default:
$xml_cdr_archive = 'dir';
break;
}
//if xml_cdr_archive is set to db then insert it.
if ($xml_cdr_archive == "db") {
$database->fields['xml_cdr'] = check_str($xml_string);
}
//insert the check_str($extension_uuid)
if (strlen($xml->variables->extension_uuid) > 0) {
$database->fields['extension_uuid'] = check_str(urldecode($xml->variables->extension_uuid));
}
//insert xml_cdr into the db
if (strlen($start_stamp) > 0) {
$database->add();
if ($debug) {
echo $e->getMessage();
echo $database->sql."\n";
}
$error = "true";
}
//if xml_cdr_archive is set to dir, then store it.
if ($xml_cdr_archive == "dir" && $error != "true") {
if (strlen($uuid) > 0) {
$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;
//insert the values
if (strlen($uuid) > 0) {
if ($debug) {
$time5_insert = microtime(true);
//echo $sql."<br />\n";
}
try {
$error = "false";
//$db->exec(check_sql($sql));
}
catch(PDOException $e) {
$tmp_dir = $_SESSION['switch']['log']['dir'].'/xml_cdr/failed/';
if(!file_exists($tmp_dir)) {
mkdir($tmp_dir, 0777, true);
}
@@ -262,18 +243,38 @@ function process_xml_cdr($db, $leg, $xml_string) {
$fh = fopen($tmp_dir.'/'.$tmp_file, 'w');
fwrite($fh, $xml_string);
fclose($fh);
if ($debug) {
echo $e->getMessage();
}
$error = "true";
}
//if xml_cdr_archive is set to dir, then store it.
if ($xml_cdr_archive == "dir" && $error != "true") {
if (strlen($uuid) > 0) {
$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)) {
mkdir($tmp_dir, 0777, true);
}
$tmp_file = $uuid.'.xml';
$fh = fopen($tmp_dir.'/'.$tmp_file, 'w');
fwrite($fh, $xml_string);
fclose($fh);
}
}
unset($error);
if ($debug) {
GLOBAL $insert_time,$insert_count;
$insert_time+=microtime(true)-$time5_insert;//add this current query.
$insert_count++;
}
}
unset($error);
if ($debug) {
GLOBAL $insert_time,$insert_count;
$insert_time+=microtime(true)-$time5_insert;//add this current query.
$insert_count++;
}
}
unset($sql);
}
unset($sql);
}
//get cdr details from the http post
if (strlen($_POST["cdr"]) > 0) {
@@ -375,7 +376,7 @@ function process_xml_cdr($db, $leg, $xml_string) {
ob_end_clean(); //clean the buffer
$time = "\n\n$insert_count inserts in: ".number_format($insert_time,5). " seconds.\n";
$time .= "Other processing time: ".number_format((microtime(true)-$time5-$insert_time),5). " seconds.\n";
$fp = fopen(sys_get_temp_dir().'/xml_cdr_post.log', 'w');
$fp = fopen($_SESSION['server']['temp']['dir'].'/xml_cdr.log', 'w');
fwrite($fp, $content.$time);
fclose($fp);
}