LICENSE: AGPLv2 # Matt Florell # # NOTES: # - For snapshots, the AST_dialer_inventory_snapshot.pl script should be put in # the crontab and run on a nightly basis after-hours # # # CHANGES # 111013-0054 - First build # 111106-1327 - Reformatting, other minor changes # 111230-1145 - Debugging additions and more minor changes # 120221-2237 - Added totals, list options, other small changes # 130414-0131 - Added report logging # 130610-1021 - Finalized changing of all ereg instances to preg # 130621-0800 - Added filtering of input to prevent SQL injection attacks and new user auth # 130902-0735 - Changed to mysqli PHP functions # 140108-0743 - Added webserver and hostname to report logging # 140328-0005 - Converted division calculations to use MathZDC function # 141114-0006 - Finalized adding QXZ translation to all admin files # 141230-1509 - Added code for on-the-fly language translations display # 160227-1933 - Uniform form format # 170409-1538 - Added IP List validation code # 170829-0040 - Added screen color settings # 191013-0845 - Fixes for PHP7 # $startMS = microtime(); error_reporting(0); require("dbconnect_mysqli.php"); require("functions.php"); $PHP_AUTH_USER=$_SERVER['PHP_AUTH_USER']; $PHP_AUTH_PW=$_SERVER['PHP_AUTH_PW']; $PHP_SELF=$_SERVER['PHP_SELF']; $PHP_SELF = preg_replace('/\.php.*/i','.php',$PHP_SELF); if (isset($_GET["group"])) {$group=$_GET["group"];} elseif (isset($_POST["group"])) {$group=$_POST["group"];} if (isset($_GET["report_type"])) {$report_type=$_GET["report_type"];} elseif (isset($_POST["report_type"])) {$report_type=$_POST["report_type"];} if (isset($_GET["selected_list"])) {$selected_list=$_GET["selected_list"];} elseif (isset($_POST["selected_list"])) {$selected_list=$_POST["selected_list"];} if (isset($_GET["SUBMIT"])) {$SUBMIT=$_GET["SUBMIT"];} elseif (isset($_POST["SUBMIT"])) {$SUBMIT=$_POST["SUBMIT"];} if (isset($_GET["time_setting"])) {$time_setting=$_GET["time_setting"];} elseif (isset($_POST["time_setting"])) {$time_setting=$_POST["time_setting"];} if (isset($_GET["file_download"])) {$file_download=$_GET["file_download"];} elseif (isset($_POST["file_download"])) {$file_download=$_POST["file_download"];} if (isset($_GET["report_source"])) {$report_source=$_GET["report_source"];} elseif (isset($_POST["report_source"])) {$report_source=$_POST["report_source"];} if (isset($_GET["DB"])) {$DB=$_GET["DB"];} elseif (isset($_POST["DB"])) {$DB=$_POST["DB"];} if (isset($_GET["DBX"])) {$DBX=$_GET["DBX"];} elseif (isset($_POST["DBX"])) {$DBX=$_POST["DBX"];} if (isset($_GET["snapshot_time"])) {$snapshot_time=$_GET["snapshot_time"];} elseif (isset($_POST["snapshot_time"])) {$snapshot_time=$_POST["snapshot_time"];} if (isset($_GET["override_24hours"])) {$override_24hours=$_GET["override_24hours"];} elseif (isset($_POST["override_24hours"])) {$override_24hours=$_POST["override_24hours"];} $MT[0]=''; $NOW_DATE = date("Y-m-d"); $NOW_TIME = date("Y-m-d H:i:s"); $time_start = microtime(true); $STARTtime = date("U"); if (!isset($group)) {$group = array();} if (!isset($query_date)) {$query_date = $NOW_DATE;} if (!isset($end_date)) {$end_date = $NOW_DATE;} $DB=preg_replace("/[^0-9a-zA-Z]/","",$DB); $report_name = 'Dialer Inventory Report'; $db_source = 'M'; ############################################# ##### START SYSTEM_SETTINGS LOOKUP ##### $stmt = "SELECT use_non_latin,outbound_autodial_active,slave_db_server,reports_use_slave_db,enable_languages,language_method FROM system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {$HTML_header.="$stmt\n";} $qm_conf_ct = mysqli_num_rows($rslt); if ($qm_conf_ct > 0) { $row=mysqli_fetch_row($rslt); $non_latin = $row[0]; $outbound_autodial_active = $row[1]; $slave_db_server = $row[2]; $reports_use_slave_db = $row[3]; $SSenable_languages = $row[4]; $SSlanguage_method = $row[5]; } ##### END SETTINGS LOOKUP ##### ########################################### if ($non_latin < 1) { $PHP_AUTH_USER = preg_replace('/[^-_0-9a-zA-Z]/', '', $PHP_AUTH_USER); $PHP_AUTH_PW = preg_replace('/[^-_0-9a-zA-Z]/', '', $PHP_AUTH_PW); } else { $PHP_AUTH_PW = preg_replace("/'|\"|\\\\|;/","",$PHP_AUTH_PW); $PHP_AUTH_USER = preg_replace("/'|\"|\\\\|;/","",$PHP_AUTH_USER); } $stmt="SELECT selected_language from vicidial_users where user='$PHP_AUTH_USER';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); $sl_ct = mysqli_num_rows($rslt); if ($sl_ct > 0) { $row=mysqli_fetch_row($rslt); $VUselected_language = $row[0]; } $auth=0; $reports_auth=0; $admin_auth=0; $auth_message = user_authorization($PHP_AUTH_USER,$PHP_AUTH_PW,'REPORTS',1,0); if ($auth_message == 'GOOD') {$auth=1;} if ($auth > 0) { $stmt="SELECT count(*) from vicidial_users where user='$PHP_AUTH_USER' and user_level > 7 and view_reports='1';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $admin_auth=$row[0]; $stmt="SELECT count(*) from vicidial_users where user='$PHP_AUTH_USER' and user_level > 6 and view_reports='1';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $reports_auth=$row[0]; if ($reports_auth < 1) { $VDdisplayMESSAGE = _QXZ("You are not allowed to view reports"); Header ("Content-type: text/html; charset=utf-8"); echo "$VDdisplayMESSAGE: |$PHP_AUTH_USER|$auth_message|\n"; exit; } if ( ($reports_auth > 0) and ($admin_auth < 1) ) { $ADD=999999; $reports_only_user=1; } } else { $VDdisplayMESSAGE = _QXZ("Login incorrect, please try again"); if ($auth_message == 'LOCK') { $VDdisplayMESSAGE = _QXZ("Too many login attempts, try again in 15 minutes"); Header ("Content-type: text/html; charset=utf-8"); echo "$VDdisplayMESSAGE: |$PHP_AUTH_USER|$auth_message|\n"; exit; } if ($auth_message == 'IPBLOCK') { $VDdisplayMESSAGE = _QXZ("Your IP Address is not allowed") . ": $ip"; Header ("Content-type: text/html; charset=utf-8"); echo "$VDdisplayMESSAGE: |$PHP_AUTH_USER|$auth_message|\n"; exit; } Header("WWW-Authenticate: Basic realm=\"CONTACT-CENTER-ADMIN\""); Header("HTTP/1.0 401 Unauthorized"); echo "$VDdisplayMESSAGE: |$PHP_AUTH_USER|$PHP_AUTH_PW|$auth_message|\n"; exit; } ##### BEGIN log visit to the vicidial_report_log table ##### $LOGip = getenv("REMOTE_ADDR"); $LOGbrowser = getenv("HTTP_USER_AGENT"); $LOGscript_name = getenv("SCRIPT_NAME"); $LOGserver_name = getenv("SERVER_NAME"); $LOGserver_port = getenv("SERVER_PORT"); $LOGrequest_uri = getenv("REQUEST_URI"); $LOGhttp_referer = getenv("HTTP_REFERER"); $LOGbrowser=preg_replace("/\'|\"|\\\\/","",$LOGbrowser); $LOGrequest_uri=preg_replace("/\'|\"|\\\\/","",$LOGrequest_uri); $LOGhttp_referer=preg_replace("/\'|\"|\\\\/","",$LOGhttp_referer); if (preg_match("/443/i",$LOGserver_port)) {$HTTPprotocol = 'https://';} else {$HTTPprotocol = 'http://';} if (($LOGserver_port == '80') or ($LOGserver_port == '443') ) {$LOGserver_port='';} else {$LOGserver_port = ":$LOGserver_port";} $LOGfull_url = "$HTTPprotocol$LOGserver_name$LOGserver_port$LOGrequest_uri"; $LOGhostname = php_uname('n'); if (strlen($LOGhostname)<1) {$LOGhostname='X';} if (strlen($LOGserver_name)<1) {$LOGserver_name='X';} $stmt="SELECT webserver_id FROM vicidial_webservers where webserver='$LOGserver_name' and hostname='$LOGhostname' LIMIT 1;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $webserver_id_ct = mysqli_num_rows($rslt); if ($webserver_id_ct > 0) { $row=mysqli_fetch_row($rslt); $webserver_id = $row[0]; } else { ##### insert webserver entry $stmt="INSERT INTO vicidial_webservers (webserver,hostname) values('$LOGserver_name','$LOGhostname');"; if ($DB) {echo "$stmt\n";} $rslt=mysql_to_mysqli($stmt, $link); $affected_rows = mysqli_affected_rows($link); $webserver_id = mysqli_insert_id($link); } $stmt="INSERT INTO vicidial_report_log set event_date=NOW(), user='$PHP_AUTH_USER', ip_address='$LOGip', report_name='$report_name', browser='$LOGbrowser', referer='$LOGhttp_referer', notes='$LOGserver_name:$LOGserver_port $LOGscript_name |$group[0], $query_date, $end_date, $shift, $file_download, $report_display_type|', url='$LOGfull_url', webserver='$webserver_id';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); $report_log_id = mysqli_insert_id($link); ##### END log visit to the vicidial_report_log table ##### if ( (strlen($slave_db_server)>5) and (preg_match("/$report_name/",$reports_use_slave_db)) ) { mysqli_close($link); $use_slave_server=1; $db_source = 'S'; require("dbconnect_mysqli.php"); #$HTML_header.="\n"; } $stmt="SELECT user_group from vicidial_users where user='$PHP_AUTH_USER';"; if ($DB) {$HTML_header.="|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $LOGuser_group = $row[0]; $stmt="SELECT allowed_campaigns,allowed_reports from vicidial_user_groups where user_group='$LOGuser_group';"; if ($DB) {$HTML_header.="|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $LOGallowed_campaigns = $row[0]; $LOGallowed_reports = $row[1]; if ( (!preg_match("/$report_name/",$LOGallowed_reports)) and (!preg_match("/ALL REPORTS/",$LOGallowed_reports)) ) { Header("WWW-Authenticate: Basic realm=\"CONTACT-CENTER-ADMIN\""); Header("HTTP/1.0 401 Unauthorized"); echo _QXZ("You are not allowed to view this report").": |$PHP_AUTH_USER|$report_name|\n"; exit; } $inventory_allow_realtime = 0; if (file_exists('options.php')) { require('options.php'); } $LOGallowed_campaignsSQL=''; $whereLOGallowed_campaignsSQL=''; if ( (!preg_match('/\-ALL/i', $LOGallowed_campaigns)) ) { $rawLOGallowed_campaignsSQL = preg_replace("/ -/",'',$LOGallowed_campaigns); $rawLOGallowed_campaignsSQL = preg_replace("/ /","','",$rawLOGallowed_campaignsSQL); $LOGallowed_campaignsSQL = "and campaign_id IN('$rawLOGallowed_campaignsSQL')"; $whereLOGallowed_campaignsSQL = "where campaign_id IN('$rawLOGallowed_campaignsSQL')"; } $regexLOGallowed_campaigns = " $LOGallowed_campaigns "; $i=0; $group_string='|'; $group_ct = count($group); while($i < $group_ct) { $group_string .= "$group[$i]|"; $i++; } $stmt="SELECT campaign_id from vicidial_campaigns where campaign_id in (SELECT distinct campaign_id from vicidial_lists where inventory_report='Y') $LOGallowed_campaignsSQL order by campaign_id;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) { echo "$stmt\n";} $campaigns_to_print = mysqli_num_rows($rslt); $i=0; $groups=array(); while ($i < $campaigns_to_print) { $row=mysqli_fetch_row($rslt); $groups[$i] =$row[0]; if (preg_match('/\-ALL/',$group_string) ) {$group[$i] = $groups[$i];} $i++; } $i=0; $group_string='|'; $group_ct = count($group); while($i < $group_ct) { if ( (preg_match("/ $group[$i] /",$regexLOGallowed_campaigns)) or (preg_match("/-ALL/",$LOGallowed_campaigns)) ) { $group_string .= "$group[$i]|"; $group_SQL .= "'$group[$i]',"; $groupQS .= "&group[]=$group[$i]"; } $i++; } if ( (preg_match('/\-\-ALL\-\-/',$group_string) ) or ($group_ct < 1) ) {$group_SQL = "";} else { $group_SQL = preg_replace('/,$/i', '',$group_SQL); $group_SQL = "and campaign_id IN($group_SQL)"; } $stmt="SELECT list_id, list_name from vicidial_lists where inventory_report='Y' $LOGallowed_campaignsSQL order by list_id, list_name;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {$HTML_header.="$stmt\n";} $lists_to_print = mysqli_num_rows($rslt); $i=0; $lists=array(); $list_names=array(); while ($i < $lists_to_print) { $row=mysqli_fetch_row($rslt); $lists[$i] = $row[0]; $list_names[$i] = $row[1]; $i++; } $campaign_span_txt=_QXZ("Campaigns").":
"; $campaign_span_txt.=""; $list_span_txt=_QXZ("Lists").":
"; $list_span_txt.=""; $snapshot_span_txt=_QXZ("Snapshot time").":
"; $snapshot_stmt="SELECT distinct snapshot_time from dialable_inventory_snapshots order by snapshot_time desc limit 100;"; if ($DBX > 0) {$HTML_header.= "|$snapshot_stmt|\n";} $snapshot_rslt=mysql_to_mysqli($snapshot_stmt, $link); $snapshot_span_txt.="\n"; require("screen_colors.php"); $NWB = "\"HELP\""; $HTML_header.="\n"; $HTML_header.="\n"; $HTML_header.="\n"; $HTML_header.="\n"; $HTML_header.="\n"; if ($report_type=='LIST') {$onload="onload=\"ToggleSpan('list_span', 'campaign_span')\"";} $HTML_header.="\n"; $HTML_header.="\n"; $HTML_header.="\n"; $HTML_header.=""._QXZ("$report_name")."\n"; $HTML_header.=""; $HTML_header.="
\n";

$rpt_header="";
####### STAT GENERATION #######
require("count_functions.inc");
function GetListCount($list_id, $inventory_ptnstr) 
	{
	global $list_start_inv;
	global $new_count;
	global $link;
	global $total_calls;
	$ct_stmt="SELECT status, called_count, count(*) From vicidial_list where list_id='$list_id' group by status, called_count order by status, called_count;";
	if ($DBX > 0) {$HTML_header.= "|$ct_stmt|\n";}
	$ct_rslt=mysql_to_mysqli($ct_stmt, $link);
	$new_count=0; $total_calls=0;
	while ($ct_row=mysqli_fetch_row($ct_rslt)) 
		{
		$list_start_inv+=$ct_row[2];
		$total_calls+=($ct_row[1]*$ct_row[2]);
		if (preg_match('/|$ct_row[0]|/', $inventory_ptnstr) && $ct_row[1]=="0") {$new_count+=$ct_row[2];} 
		}
	}

if ($SUBMIT) 
	{

	$total_list_start_inv=0;
	$total_dialable_count=0;
	$total_dialable_count_nofilter=0;
	$total_dialable_count_oneoff=0;
	$total_dialable_count_inactive=0;
	$total_total_calls=0;
	$total_average_call_count=0;
	$total_penetration=0;

	$shift_ary=array();
	if ($snapshot_time && $report_source=="SNAPSHOT") 
		{
		$rpt_header=_QXZ("SNAPSHOT from")." $snapshot_time\n";
		$stmt="SELECT distinct shift_data from dialable_inventory_snapshots where snapshot_time='$snapshot_time' and time_setting='$time_setting' $time_clause order by campaign_id, list_id;";
		if ($DBX > 0) {$HTML_header.= "|$stmt|\n";}
		$rslt=mysql_to_mysqli($stmt, $link);
		$shift_SQL_str="";
		while ($shift_row=mysqli_fetch_array($rslt)) 
			{
			$shift_data1=explode("|", $shift_row["shift_data"]);
			for ($i=0; $i 0) {$HTML_header.= "|$shift_stmt|\n";}
		$shift_rslt=mysql_to_mysqli($shift_stmt, $link);
		$c=0;
		while($shift_row=mysqli_fetch_array($shift_rslt)) 
			{
			$rpt_header_SHIFTS.=" ".sprintf("%8s", substr($shift_row["shift_id"],0,8))." |";
			$CSV_header_SHIFTS.="\"$shift_row[shift_id]\",";
			$rpt_header_SHIFTS_lower.="          |";
			$rpt_header_BORDER.="----------+";
			$shift_ary[$c]=$shift_row["shift_id"];
			$total_varname="total_".$shift_row["shift_id"];
			$$total_varname=0;
			if ($DB > 0) {echo "
-$c-$shift_ary[$c]-$shift_row[shift_id]-\n";} $c++; } if ($report_type=="CAMPAIGNS") {$time_clause=$group_SQL;} if ($report_type=="LIST") {$time_clause="and list_id='$selected_list'";} $stmt="SELECT snapshot_id,snapshot_time,list_id,list_name,list_description,campaign_id,list_lastcalldate,list_start_inv,dialable_count,dialable_count_nofilter,dialable_count_oneoff,dialable_count_inactive,average_call_count,penetration,shift_data,time_setting from dialable_inventory_snapshots where snapshot_time='$snapshot_time' and time_setting='$time_setting' $time_clause order by campaign_id, list_id;"; if ($DBX > 0) {$HTML_header.= "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); while ($row=mysqli_fetch_array($rslt)) { $row["list_description"]=substr($row["list_description"], 0, 30); if (strlen($row["list_description"])>0) {$list_info=$row["list_description"];} else {$list_info=$row["list_name"];} $rpt_body.="| ".sprintf("%9s", $row["list_id"])." | ".sprintf("%-30s", $list_info)." | ".sprintf("%8s", $row["campaign_id"])." | ".$row["list_lastcalldate"]." | ".sprintf("%9s", $row["list_start_inv"])." | ".sprintf("%8s", $row["dialable_count"])." | ".sprintf("%8s", $row["dialable_count_nofilter"])." | ".sprintf("%8s", $row["dialable_count_oneoff"])." | ".sprintf("%8s", $row["dialable_count_inactive"])." | ".sprintf("%8s", $row["average_call_count"])." | ".sprintf("%6s", $row["penetration"])."% |"; $CSV_body.="\"$row[list_id]\",\"$list_info\",\"$row[last_calldate]\",\"$row[campaign_id]\",\"$row[list_start_inv]\",\"$row[dialable_count]\",\"$row[dialable_count_nofilter]\",\"$row[dialable_count_oneoff]\",\"$row[dialable_count_inactive]\",\"$row[average_call_count]\",\"$row[penetration] %\""; $total_list_start_inv+=$row["list_start_inv"]; $total_dialable_count+=$row["dialable_count"]; $total_dialable_count_nofilter+=$row["dialable_count_nofilter"]; $total_dialable_count_oneoff+=$row["dialable_count_oneoff"]; $total_dialable_count_inactive+=$row["dialable_count_inactive"]; $total_total_calls+=($row["average_call_count"]*$row["list_start_inv"]); $shift_data_a=explode("|", $row["shift_data"]); $b=0; while ($b < count($shift_ary)) { $a=0; $no_match=0; while ($a < count($shift_data_a)) { $shift_data_b=explode(",", $shift_data_a[$a]); $line_match=0; if ($shift_ary[$b] == "$shift_data_b[0]") { $rpt_body.=" ".sprintf("%8s", $shift_data_b[1])." |"; $CSV_body.=",\"$shift_data_b[1]\""; $total_varname="total_".$shift_data_b[0]; $$total_varname+=$shift_data_b[1]; $line_match++; $no_match++; } if ($DB > 0) {echo "
-$a-$b-$shift_ary[$b]-$shift_data_b[0]($shift_data_b[1])-$line_match-\n";} $a++; } if ($no_match==0) { $rpt_body.=" ".sprintf("%8s", "0")." |"; $CSV_body.=",\"0\""; } $b++; } $rpt_body.="\n"; $CSV_body.="\n"; } } else { $single_status=1; ## If time setting is set to 'Local', compile a list of time zone offsets and make an array of those offsets with the amount of time that needs to be added or subtracted if ($time_setting=="LOCAL") { $gmt_stmt="SELECT default_local_gmt from system_settings;"; $gmt_rslt=mysql_to_mysqli($gmt_stmt, $link); $gmt_row=mysqli_fetch_row($gmt_rslt); $local_offset=$gmt_row[0]; if ($report_type=="CAMPAIGNS") {$time_clause="where list_id in (SELECT list_id from vicidial_lists where inventory_report='Y' ".substr($group_SQL,4).")";} if ($report_type=="LIST") {$time_clause="where list_id='$selected_list'";} $gmt_stmt="SELECT distinct gmt_offset_now, gmt_offset_now-($local_offset) from vicidial_list $time_clause ;"; if ($DB) {$HTML_header.=$gmt_stmt."
\n";} $gmt_rslt=mysql_to_mysqli($gmt_stmt, $link); while ($gmt_row=mysqli_fetch_row($gmt_rslt)) { $gmt_row[1]=preg_replace('/25$/', '15', $gmt_row[1]); $gmt_row[1]=preg_replace('/75$/', '45', $gmt_row[1]); $gmt_row[1]=preg_replace('/\.5$/', '.30', $gmt_row[1]); $gmt_row[1]=preg_replace('/\./', ':', $gmt_row[1]); $gri = $gmt_row[0]; $gmt_array[$gri]=$gmt_row[1]; } } # Get shift information $shift_stmt="SELECT shift_id, shift_name, str_to_date(shift_start_time, '%H%i') as shift_start_time, addtime(str_to_date(shift_start_time, '%H%i'), shift_length) as shift_end_time, if(addtime(str_to_date(shift_start_time, '%H%i'), shift_length)>'23:59:59', '1', '0') as day_offset, shift_weekdays from vicidial_shifts where report_option='Y' order by report_rank, shift_start_time asc;"; if ($DB) {$HTML_header.="$shift_stmt;\n";} $shift_rslt=mysql_to_mysqli($shift_stmt, $link); while($shift_row=mysqli_fetch_array($shift_rslt)) { $rpt_header_SHIFTS.=" ".sprintf("%8s", substr($shift_row["shift_id"],0,8))." |"; $rpt_header_SHIFTS_lower.=" |"; $CSV_header_SHIFTS.="\"$shift_row[shift_id]\","; $rpt_header_BORDER.="----------+"; $shift_ary[$shift_row["shift_id"]][0]=$shift_row["shift_name"]; $shift_ary[$shift_row["shift_id"]][1]=$shift_row["shift_start_time"]; $shift_ary[$shift_row["shift_id"]][2]=$shift_row["shift_end_time"]; $shift_ary[$shift_row["shift_id"]][3]=$shift_row["day_offset"]; $shift_ary[$shift_row["shift_id"]][4]=$shift_row["shift_weekdays"]; } $rpt_body=""; if ($group_ct>0 && $report_type=="CAMPAIGNS") { for ($i=0; $i<$group_ct; $i++) { $campaign_stmt="SELECT call_count_limit, call_count_target, dial_statuses, local_call_time, drop_lockout_time from vicidial_campaigns where campaign_id='$group[$i]' $LOGallowed_campaignsSQL;"; if ($DB) {$HTML_header.="$campaign_stmt;\n";} $campaign_rslt=mysql_to_mysqli($campaign_stmt, $link); $campaign_row=mysqli_fetch_row($campaign_rslt); $call_count_limit=$campaign_row[0]; $call_count_target=$campaign_row[1]; $active_dial_statuses=$campaign_row[2]; $local_call_time=$campaign_row[3]; if ($override_24hours) {$local_call_time="24hours";} $drop_lockout_time=$campaign_row[4]; $stmt="SELECT distinct status from vicidial_statuses where completed='N' UNION SELECT distinct status from vicidial_campaign_statuses where completed='N' and campaign_id='$group[$i]' $LOGallowed_campaignsSQL"; if ($DB) {$HTML_header.="$stmt\n";} $rslt=mysql_to_mysqli($stmt, $link); $dial_statuses=" "; $inventory_statuses=" "; $inventory_ptnstr="|"; $inactive_dial_statuses=" "; while ($row=mysqli_fetch_row($rslt)) { $dial_statuses.="$row[0] "; $inventory_statuses.="'$row[0]',"; $inventory_ptnstr.="$row[0]|"; if (!preg_match("/ $row[0] /", "$active_dial_statuses")) {$inactive_dial_statuses.="$row[0] ";} } $inventory_statuses=substr($inventory_statuses, 0, -1); if ($DB) {$HTML_header.= " "._QXZ("CAMPAIGN DIAL STATUSES",30,"r").": |$active_dial_statuses|\n";} if ($DB) {$HTML_header.= " "._QXZ("INVENTORY STATUSES RESULTS",30,"r").": |$inventory_statuses|\n";} if ($DB) {$HTML_header.= " "._QXZ("INACTIVE STATUSES RESULTS",30,"r").": |$inactive_dial_statuses|\n";} $filter_stmt="SELECT lead_filter_sql from vicidial_campaigns v, vicidial_lead_filters vlf where v.campaign_id='$group[$i]' and v.lead_filter_id=vlf.lead_filter_id limit 1;"; if ($DB) {$HTML_header.="$filter_stmt;\n";} $filter_rslt=mysql_to_mysqli($filter_stmt, $link); $filter_row=mysqli_fetch_row($filter_rslt); if (strlen($filter_row[0])>0) {$filter_SQL=" and $filter_row[0]";} else {$filter_SQL="";} $filter_SQL = preg_replace("/\\\/",'',$filter_SQL); $lists_stmt="SELECT list_id, list_name, list_description, if(list_lastcalldate is null, '*** Not called *** ', list_lastcalldate) as list_lastcalldate from vicidial_lists where campaign_id='$group[$i]' and inventory_report='Y' $LOGallowed_campaignsSQL order by list_id asc;"; if ($DB) {$HTML_header.="$lists_stmt;\n";} $lists_rslt=mysql_to_mysqli($lists_stmt, $link); while ($lists_row=mysqli_fetch_array($lists_rslt)) { $list_id=$lists_row["list_id"]; $list_name=$lists_row["list_name"]; $lists_row["list_description"]=substr($lists_row["list_description"], 0, 30); $list_description=$lists_row["list_description"]; $last_calldate=$lists_row["list_lastcalldate"]; if (strlen($list_description)>0) {$list_info=$list_description;} else {$list_info=$list_name;} $list_start_inv=0; $only_return=1; GetListCount($list_id, $inventory_ptnstr); $average_calls=sprintf("%.1f", MathZDC($total_calls, $list_start_inv)); $Xdialable_count_nofilter = dialable_leads($DB,$link,$local_call_time,"$dial_statuses",$list_id,$drop_lockout_time,$call_count_limit,$single_status,"",$only_return); if (strlen($inactive_dial_statuses)>1) { $Xdialable_inactive_count = dialable_leads($DB,$link,$local_call_time,"$inactive_dial_statuses",$list_id,$drop_lockout_time,$call_count_limit,$single_status,"$filter_SQL",$only_return); } else { $Xdialable_inactive_count = 0; } $oneoff_SQL=$filter_SQL." and (called_count < $call_count_limit-1) "; $oneoff_count = dialable_leads($DB,$link,$local_call_time,"$dial_statuses",$list_id,$drop_lockout_time,$call_count_limit,$single_status,"$oneoff_SQL",$only_return); $full_dialable_SQL=""; $Xdialable_count = dialable_leads($DB,$link,$local_call_time,"$dial_statuses",$list_id,$drop_lockout_time,$call_count_limit,$single_status,"$filter_SQL",$only_return); $penetration=sprintf("%.2f", (MathZDC(100*($list_start_inv-$Xdialable_count), $list_start_inv))); $rpt_body.="| ".sprintf("%9s", $list_id)." | ".sprintf("%-30s", $list_info)." | ".sprintf("%8s", $group[$i])." | ".$last_calldate." | ".sprintf("%9s", $list_start_inv)." | ".sprintf("%8s", $Xdialable_count)." | ".sprintf("%8s", $Xdialable_count_nofilter)." | ".sprintf("%8s", $oneoff_count)." | ".sprintf("%8s", $Xdialable_inactive_count)." | ".sprintf("%8s", $average_calls)." | ".sprintf("%6s", $penetration)."% |"; $CSV_body.="\"$list_id\",\"$list_info\",\"$last_calldate\",\"$group[$i]\",\"$list_start_inv\",\"$Xdialable_count\",\"$Xdialable_count_nofilter\",\"$oneoff_count\",\"$Xdialable_inactive_count\",\"$average_calls\",\"$penetration %\""; $total_list_start_inv+=$list_start_inv; $total_dialable_count+=$Xdialable_count; $total_dialable_count_nofilter+=$Xdialable_count_nofilter; $total_dialable_count_oneoff+=$oneoff_count; $total_dialable_count_inactive+=$Xdialable_inactive_count; $total_total_calls+=$total_calls; # $stat_stmt="SELECT call_date, dayofweek(call_date) from vicidial_log where lead_id in (SELECT lead_id from vicidial_list where list_id='$list_id' and called_count<='$called_count_limit' and status in ($inventory_statuses) $filter_SQL"; # SELECT lead_id, count(*) as count from vicidial_log where extract(HOUR_MINUTE FROM call_date)>='900' and extract(HOUR_MINUTE FROM call_date)<='1700' and dayofweek(call_date) in (2,3,4,5,6) and lead_id in (SELECT lead_id from vicidial_list where list_id=41073) group by lead_id order by lead_id; $shift_ary2=$shift_ary; # while (list($key, $val)=each($shift_ary2)) foreach ($shift_ary2 as $key => $val) { $total_shift_count=0; $gmt_stmt="SELECT distinct gmt_offset_now from vicidial_list where list_id='$list_id';"; if ($DB) {$HTML_header.="$gmt_stmt\n";} $gmt_rslt=mysql_to_mysqli($gmt_stmt, $link); while ($gmt_row=mysqli_fetch_row($gmt_rslt)) { if ($time_setting=="LOCAL") { $gri = $gmt_row[0]; $offset_hours=$gmt_array[$gri]; } else { $offset_hours=0; } if (strlen($val[4])>0) { if ($val[3]==0) { $shift_days_SQL=" and time(addtime(call_date, '$offset_hours'))>='$val[1]' and time(addtime(call_date, '$offset_hours'))<='$val[2]' "; $day_str=""; for ($j=0; $j=addtime('09:00', '00:04:00') } $shift_days_SQL=substr($shift_days_SQL, 0, -3).")"; } } else { $shift_days_SQL=""; } $shift_stmt="SELECT count(*) from (SELECT lead_id, count(*) as count from vicidial_log where lead_id in (SELECT lead_id from vicidial_list where $full_dialable_SQL and gmt_offset_now='$gmt_row[0]' $filter_SQL) $shift_days_SQL group by lead_id) as count_table where count_table.count>='$call_count_target';"; $shift_rslt=mysql_to_mysqli($shift_stmt, $link); $shift_row=mysqli_fetch_row($shift_rslt); if ($DB) {$HTML_header.="$shift_stmt
$shift_row[0]
\n";} $total_shift_count+=$shift_row[0]; } $shift_count=$Xdialable_count-$total_shift_count; $rpt_body.=" ".sprintf("%8s", $shift_count)." |"; $total_varname="total_".$key; $$total_varname+=$shift_count; $CSV_body.=",\"$shift_count\""; } $rpt_body.="\n"; $CSV_body.="\n"; if (!$file_download) {echo $HTML_header; $HTML_header=""; flush();} } } } else if ($selected_list && $report_type=="LIST") { $campaign_stmt="SELECT call_count_limit, call_count_target, dial_statuses, local_call_time, drop_lockout_time, v.campaign_id from vicidial_campaigns v, vicidial_lists vl where inventory_report='Y' and vl.list_id='$selected_list' and vl.campaign_id=v.campaign_id;"; if ($DB) {$HTML_header.="$campaign_stmt;\n";} $campaign_rslt=mysql_to_mysqli($campaign_stmt, $link); $campaign_row=mysqli_fetch_row($campaign_rslt); $call_count_limit=$campaign_row[0]; $call_count_target=$campaign_row[1]; $active_dial_statuses=$campaign_row[2]; $local_call_time=$campaign_row[3]; if ($override_24hours) {$local_call_time="24hours";} $drop_lockout_time=$campaign_row[4]; $campaign_id=$campaign_row[5]; $stmt="SELECT distinct status from vicidial_statuses where completed='N' UNION SELECT distinct status from vicidial_campaign_statuses where completed='N' and campaign_id=(SELECT campaign_id from vicidial_lists where list_id='$selected_list' and inventory_report='Y' $LOGallowed_campaignsSQL);"; if ($DB) {$HTML_header.="$stmt\n";} $rslt=mysql_to_mysqli($stmt, $link); $inactive_dial_statuses=" "; $dial_statuses=" "; $inventory_statuses=""; $inventory_ptnstr="|"; while ($row=mysqli_fetch_row($rslt)) { $dial_statuses.="$row[0] "; $inventory_statuses.="'$row[0]',"; $inventory_ptnstr.="$row[0]|"; if (!preg_match("/ $row[0] /", "$active_dial_statuses")) {$inactive_dial_statuses.="$row[0] ";} } $inventory_statuses=substr($inventory_statuses, 0, -1); if ($DB) {$HTML_header.= " "._QXZ("CAMPAIGN DIAL STATUSES",30,"r").": |$active_dial_statuses|\n";} if ($DB) {$HTML_header.= " "._QXZ("DIAL STATUSES",30,"r").": |$dial_statuses|\n";} if ($DB) {$HTML_header.= " "._QXZ("INVENTORY STATUSES RESULTS",30,"r").": |$inventory_statuses|\n";} if ($DB) {$HTML_header.= " "._QXZ("INACTIVE STATUSES RESULTS",30,"r").": |$inactive_dial_statuses|\n";} if ($DB) {$HTML_header.="$campaign_stmt; - $dial_statuses\n";} $filter_stmt="SELECT lead_filter_sql from vicidial_campaigns v, vicidial_lead_filters vlf where v.campaign_id='$campaign_id' and v.lead_filter_id=vlf.lead_filter_id limit 1;"; if ($DB) {$HTML_header.="$filter_stmt;\n";} $filter_rslt=mysql_to_mysqli($filter_stmt, $link); $filter_row=mysqli_fetch_row($filter_rslt); if (strlen($filter_row[0])>0) {$filter_SQL=" and $filter_row[0]";} else {$filter_SQL="";} $filter_SQL = preg_replace("/\\\/",'',$filter_SQL); $lists_stmt="SELECT list_id, list_name, list_description, if(list_lastcalldate is null, '*** "._QXZ("Not called")." *** ', list_lastcalldate) as list_lastcalldate, campaign_id from vicidial_lists where list_id='$selected_list' and inventory_report='Y' $LOGallowed_campaignsSQL order by list_id asc;"; if ($DB) {$HTML_header.="$lists_stmt;\n";} $lists_rslt=mysql_to_mysqli($lists_stmt, $link); while ($lists_row=mysqli_fetch_array($lists_rslt)) { $list_id=$lists_row["list_id"]; $list_name=$lists_row["list_name"]; $lists_row["list_description"]=substr($lists_row["list_description"], 0, 30); $list_description=$lists_row["list_description"]; $last_calldate=$lists_row["list_lastcalldate"]; $campaign_id=$lists_row["campaign_id"]; if (strlen($list_description)>0) {$list_info=$list_description;} else {$list_info=$list_name;} $list_call_inv=0; GetListCount($list_id, $inventory_ptnstr); $average_calls=sprintf("%.1f", MathZDC($total_calls, $list_start_inv)); ### For TOTAL counts, needs to be here instead of with other "total" variables further down in this particular report $total_total_calls+=$total_calls; $only_return=1; $Xdialable_count_nofilter = dialable_leads($DB,$link,$local_call_time,"$dial_statuses",$selected_list,$drop_lockout_time,$call_count_limit,$single_status,"",$only_return); if (strlen($inactive_dial_statuses)>1) { $Xdialable_inactive_count = dialable_leads($DB,$link,$local_call_time,"$inactive_dial_statuses",$selected_list,$drop_lockout_time,$call_count_limit,$single_status,"$filter_SQL",$only_return); } else { $Xdialable_inactive_count = 0; } $oneoff_SQL=$filter_SQL." and (called_count < $call_count_limit-1) "; $oneoff_count = dialable_leads($DB,$link,$local_call_time,"$dial_statuses",$selected_list,$drop_lockout_time,$call_count_limit,$single_status,"$oneoff_SQL",$only_return); $full_dialable_SQL=""; $Xdialable_count = dialable_leads($DB,$link,$local_call_time,"$dial_statuses",$selected_list,$drop_lockout_time,$call_count_limit,$single_status,"$filter_SQL",$only_return); if ($DB > 0) {echo _QXZ("FULL DIALABLE SQL").": |$full_dialable_SQL|";} } $penetration=sprintf("%.2f", (MathZDC(100*($list_start_inv-$Xdialable_count), $list_start_inv))); $rpt_body.="| ".sprintf("%9s", $list_id)." | ".sprintf("%-30s", $list_info)." | ".sprintf("%8s", $campaign_id)." | ".$last_calldate." | ".sprintf("%9s", $list_start_inv)." | ".sprintf("%8s", $Xdialable_count)." | ".sprintf("%8s", $Xdialable_count_nofilter)." | ".sprintf("%8s", $oneoff_count)." | ".sprintf("%8s", $Xdialable_inactive_count)." | ".sprintf("%8s", $average_calls)." | ".sprintf("%6s", $penetration)."% |"; $CSV_body.="\"$list_id\",\"$list_info\",\"$last_calldate\",\"$campaign_id\",\"$list_start_inv\",\"$Xdialable_count\",\"$Xdialable_count_nofilter\",\"$oneoff_count\",\"$Xdialable_inactive_count\",\"$average_calls\",\"$penetration %\""; $total_list_start_inv+=$list_start_inv; $total_dialable_count+=$Xdialable_count; $total_dialable_count_nofilter+=$Xdialable_count_nofilter; $total_dialable_count_oneoff+=$oneoff_count; $total_dialable_count_inactive+=$Xdialable_inactive_count; $shift_ary2=$shift_ary; # while (list($key, $val)=each($shift_ary2)) foreach ($shift_ary2 as $key => $val) { $total_shift_count=0; $total_nofilter_shift_count=0; $total_oneoff_shift_count=0; $total_undialable_shift_count=0; $total_nofilter_undialable_shift_count=0; $gmt_stmt="SELECT distinct gmt_offset_now from vicidial_list where list_id='$list_id';"; if ($DB) {$HTML_header.="$gmt_stmt\n";} $gmt_rslt=mysql_to_mysqli($gmt_stmt, $link); while ($gmt_row=mysqli_fetch_row($gmt_rslt)) { if ($time_setting=="LOCAL") { $gri = $gmt_row[0]; $offset_hours=$gmt_array[$gri]; } else { $offset_hours=0; } if (strlen($val[4])>0) { if ($val[3]==0) { $shift_days_SQL=" and time(addtime(call_date, '$offset_hours'))>='$val[1]' and time(addtime(call_date, '$offset_hours'))<='$val[2]' "; $day_str=""; for ($i=0; $i=addtime('09:00', '00:04:00') } $shift_days_SQL=substr($shift_days_SQL, 0, -3).")"; } } else { $shift_days_SQL=""; } # $dialable_stmt="SELECT count(*) from (SELECT lead_id, count(*) as count from vicidial_log where lead_id in (SELECT lead_id from vicidial_list where $full_dialable_SQL and gmt_offset_now='$gmt_row[0]' $filter_SQL) $shift_days_SQL group by lead_id) as count_table where count_table.count>='$call_count_target'"; # $dialable_nofilter_stmt="SELECT count(*) from (SELECT lead_id, count(*) as count from vicidial_log where lead_id in (SELECT lead_id from vicidial_list where $full_dialable_SQL and gmt_offset_now='$gmt_row[0]') $shift_days_SQL group by lead_id) as count_table where count_table.count>='$call_count_target'"; # $undialable_stmt="SELECT count(*) from (SELECT lead_id, count(*) as count from vicidial_log where lead_id in (SELECT lead_id from vicidial_list where $full_dialable_SQL and gmt_offset_now='$gmt_row[0]' $filter_SQL) $shift_days_SQL group by lead_id) as count_table where count_table.count>='$call_count_target'"; # $undialable_nofilter_stmt="SELECT count(*) from (SELECT lead_id, count(*) as count from vicidial_log where lead_id in (SELECT lead_id from vicidial_list where $full_dialable_SQL and gmt_offset_now='$gmt_row[0]') $shift_days_SQL group by lead_id) as count_table where count_table.count>='$call_count_target'"; # $oneoff_stmt="SELECT count(*) from (SELECT lead_id, count(*) as count from vicidial_log where lead_id in (SELECT lead_id from vicidial_list where $full_dialable_SQL and gmt_offset_now='$gmt_row[0]' $filter_SQL) $shift_days_SQL group by lead_id) as count_table where count_table.count>='($call_count_target-1)'"; $shift_stmt="SELECT count(*) from (SELECT lead_id, count(*) as count from vicidial_log where lead_id in (SELECT lead_id from vicidial_list where $full_dialable_SQL and gmt_offset_now='$gmt_row[0]' $filter_SQL) $shift_days_SQL group by lead_id) as count_table where count_table.count>='$call_count_target';"; $shift_rslt=mysql_to_mysqli($shift_stmt, $link); $shift_row=mysqli_fetch_row($shift_rslt); if ($DB) {$HTML_header.="$shift_stmt;
$shift_row[0]
\n";} $total_shift_count+=$shift_row[0]; } $shift_count=$Xdialable_count-$total_shift_count; $rpt_body.=" ".sprintf("%8s", $shift_count)." |"; $total_varname="total_".$key; $$total_varname+=$shift_count; $CSV_body.=",\"$shift_count\""; } $rpt_body.="\n"; $CSV_body.="\n"; if (!$file_download) {echo $HTML_header; $HTML_header=""; flush();} } } $rpt_header.=_QXZ("Date").": ".date("m/d/Y")." -- "._QXZ("Time").": ".date("H:i a")."\n\n"; $rpt_header.="+-----------+--------------------------------+----------+---------------------+-----------+----------+----------+----------+----------+----------+---------+$rpt_header_BORDER\n"; $rpt_header.="| "._QXZ("Call list",9)." | "._QXZ("List description",30)." | "._QXZ("Campaign",8)." | "._QXZ("Last call date",19)." | "._QXZ("Start Inv",9)." | "._QXZ("Call Inv",8)." | "._QXZ("Call Inv",8)." | "._QXZ("Call Inv",8)." | "._QXZ("Call Inv",8)." | "._QXZ("Dial Avg",8)." | "._QXZ("Pen.",5)." % |$rpt_header_SHIFTS\n"; $rpt_header.="| | | | | | "._QXZ("Total",8)." | "._QXZ("No filtr",8)." | "._QXZ("One-off",8)." | "._QXZ("Inactive",8)." | | |$rpt_header_SHIFTS_lower\n"; $rpt_header.="+-----------+--------------------------------+----------+---------------------+-----------+----------+----------+----------+----------+----------+---------+$rpt_header_BORDER\n"; $CSV_header="\""._QXZ("$report_name")."\"\n"; $CSV_header.="\"Date: ".date("m/d/Y")."\",\"\",\"Time: ".date("H:i a")."\"\n\n"; $CSV_header.="\""._QXZ("Call list")."\",\""._QXZ("List description")."\",\""._QXZ("Campaign")."\",\""._QXZ("Last call date")."\",\""._QXZ("Start Inv")."\",\""._QXZ("Call Inv Total")."\",\""._QXZ("Call Inv - No filter")."\",\""._QXZ("Call Inv - One-offs")."\",\""._QXZ("Call Inv - Inactive dialable statuses")."\",\""._QXZ("Dial Avg")."\",\""._QXZ("Pen.")." %\",".substr($CSV_header_SHIFTS,0,-1)."\n"; $rpt_footer ="+-----------+--------------------------------+----------+---------------------+-----------+----------+----------+----------+----------+----------+---------+$rpt_header_BORDER\n"; #### PRINT TOTALS #### $total_average_call_count=sprintf("%.1f", MathZDC($total_total_calls, $total_list_start_inv)); $total_penetration=sprintf("%.2f", (MathZDC(100*($total_list_start_inv-$total_dialable_count), $total_list_start_inv))); $rpt_footer.="|"._QXZ("TOTALS",76)." | ".sprintf("%9s", $total_list_start_inv)." | ".sprintf("%8s", $total_dialable_count)." | ".sprintf("%8s", $total_dialable_count_nofilter)." | ".sprintf("%8s", $total_dialable_count_oneoff)." | ".sprintf("%8s", $total_dialable_count_inactive)." | ".sprintf("%8s", $total_average_call_count)." | ".sprintf("%6s", $total_penetration)."% |"; $CSV_body.="\"\",\"\",\"\",\""._QXZ("TOTALS")."\",\"$total_list_start_inv\",\"$total_dialable_count\",\"$total_dialable_count_nofilter\",\"$total_dialable_count_oneoff\",\"$total_dialable_count_inactive\",\"$total_average_call_count\",\"$total_penetration\""; $b=0; while ($b < count($shift_ary)) { $total_varname="total_".$shift_ary[$b]; $rpt_footer.=" ".sprintf("%8s", $$total_varname)." |"; $CSV_body.=",\"".$$total_varname."\""; $b++; } $CSV_body.="\n"; $rpt_footer.="\n"; ###################### $rpt_footer.="+-----------+--------------------------------+----------+---------------------+-----------+----------+----------+----------+----------+----------+---------+$rpt_header_BORDER\n"; } $HTML_header.="
\n"; ############################### $HTML_text=""._QXZ("$report_name")." $NWB#dialer_inventory_report$NWE\n"; $HTML_text.="
"; $HTML_text.="\n"; $HTML_text.="
\n"; $HTML_text.="\n"; $HTML_text.="\n"; $HTML_text.="\n"; $HTML_text.="\n"; $HTML_text.="\n"; $HTML_text.="\n"; $HTML_text.="\n"; $HTML_text.="\n"; $HTML_text.="
\n"; $HTML_text.=" \n"; $HTML_text.=" \n"; if ($report_type=='LIST') {$cmp_checked=""; $list_checked="checked";} else {$cmp_checked="checked"; $list_checked="";} $HTML_text.=" \n"; $HTML_text.=" \n"; $HTML_text.="
"._QXZ("Report type").":
"._QXZ("Campaigns")."
"._QXZ("List")."
\n"; $HTML_text.="
 \n"; $HTML_text.="$campaign_span_txt\n"; $HTML_text.="\n"; $HTML_text.="\n"; $HTML_text.=" \n"; $HTML_text.=" \n"; if ($time_setting=='LOCAL') {$svr_checked=""; $local_checked="checked";} else {$svr_checked="checked"; $local_checked="";} if ($override_24hours) {$override_checked="checked";} $HTML_text.=" \n"; $HTML_text.=" \n"; $HTML_text.=" \n"; $HTML_text.="
"._QXZ("Time setting").":
"._QXZ("Server")."
"._QXZ("Local")."
"._QXZ("Ignore local campaign call time")."
("._QXZ("default to 24 hours").")
\n"; $HTML_text.="
\n"; $HTML_text.=" \n"; $HTML_text.=" \n"; if ($report_source=='REALTIME') {$ss_checked=""; $rt_checked="checked";} else {$ss_checked="checked"; $rt_checked="";} $HTML_text.=" \n"; if ($inventory_allow_realtime > 0) { $HTML_text.=" \n"; } else { $HTML_text.=" \n"; } $HTML_text.="
"._QXZ("Report source").":
"._QXZ("Snapshot")."
"._QXZ("Real-time")."
 
$snapshot_span_txt\n"; $HTML_text.="
\n"; $HTML_text.="
\n"; $HTML_text.="           "._QXZ("DOWNLOAD")." | "._QXZ("REPORTS")."

\n"; $HTML_text.="\n"; $HTML_text.="
\n"; $HTML_text.="
\n\n";

$HTML_text.="$rpt_header";
$HTML_text.="$rpt_body";
$HTML_text.="$rpt_footer";

$time_end = microtime(true);
$ENDtime = date("U");
$time = $ENDtime - $STARTtime;

$HTML_text.=_QXZ("Executed in")." $time "._QXZ("seconds")."\n";
$HTML_text.="
\n"; $HTML_text.="\n"; $HTML_text.="\n"; if ($file_download>0) { $FILE_TIME = date("Ymd-His"); $CSVfilename = "AST_DIALERinventory_$US$FILE_TIME.csv"; $CSV_text=$CSV_header.$CSV_body; $CSV_text=preg_replace('/^\s+/', '', $CSV_text); $CSV_text=preg_replace('/\s+,/', ',', $CSV_text); $CSV_text=preg_replace('/,\s+/', ',', $CSV_text); // We'll be outputting a TXT file header('Content-type: application/octet-stream'); header("Content-Disposition: attachment; filename=\"$CSVfilename\""); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); ob_clean(); flush(); echo "$CSV_text"; } else { $short_header=1; echo $HTML_header; require("admin_header.php"); echo $HTML_text; } if ($db_source == 'S') { mysqli_close($link); $use_slave_server=0; $db_source = 'M'; require("dbconnect_mysqli.php"); } $endMS = microtime(); $startMSary = explode(" ",$startMS); $endMSary = explode(" ",$endMS); $runS = ($endMSary[0] - $startMSary[0]); $runM = ($endMSary[1] - $startMSary[1]); $TOTALrun = ($runS + $runM); $stmt="UPDATE vicidial_report_log set run_time='$TOTALrun' where report_log_id='$report_log_id';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); exit; ?>