Fixed help display for dozens of reports

Added more call detail stats for calls to DIDs and what happened to them
Fixed issue with User Group permissions in Inbound summary hourly report and the agent status detail report.

git-svn-id: svn://192.168.202.10@3448 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
mattf
2021-06-05 13:10:27 +00:00
parent d12a970313
commit 34694579b8
30 changed files with 426 additions and 143 deletions
+82 -16
View File
@@ -64,6 +64,7 @@
# 190508-1900 - Streamlined DID check to optimize page load
# 190930-1345 - Fixed PHP7 array issue
# 200924-0917 - Added two new drop calculations
# 210525-1715 - Fixed help display, modification for more call details
#
$startMS = microtime();
@@ -426,8 +427,8 @@ while ($i < $statcats_to_print)
$i++;
}
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
$HEADER.="<HTML>\n";
$HEADER.="<HEAD>\n";
@@ -443,6 +444,8 @@ $HEADER.=" </STYLE>\n";
$HEADER.="<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"calendar.css\">\n";
$HEADER.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
$HEADER.="<link rel=\"stylesheet\" href=\"verticalbargraph.css\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"wz_jsgraphics.js\"></script>\n";
@@ -452,6 +455,7 @@ $HEADER.="<script src='chart/Chart.js'></script>\n";
$HEADER.="<script language=\"JavaScript\" src=\"vicidial_chart_functions.js\"></script>\n";
$HEADER.="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
$HEADER.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
$HEADER.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$JS_text="<script language=\"JavaScript\">\n";
@@ -626,6 +630,7 @@ else
$did_id=array();
$did_calls=array();
if ($DID=='Y')
{
$stmt="select did_id from vicidial_inbound_dids where did_pattern IN($group_SQL) $LOGadmin_viewable_groupsSQL;";
@@ -645,7 +650,7 @@ if ($DID=='Y')
if ($dids_to_print>0)
{
$stmt="select uniqueid from ".$vicidial_did_log_table." where did_id IN($did_SQL);";
$stmt="select uniqueid, did_route from ".$vicidial_did_log_table." where call_date >= '$query_date_BEGIN' and call_date <= '$query_date_END' and did_id IN($did_SQL);";
$rslt=mysql_to_mysqli($stmt, $link);
if ($DB) {$MAIN.="$stmt\n";}
$unids_to_print = mysqli_num_rows($rslt);
@@ -655,6 +660,7 @@ if ($DID=='Y')
$row=mysqli_fetch_row($rslt);
$unid_SQL .= "'$row[0]',";
$i++;
$did_calls["$row[0]"]="$row[1]";
}
}
@@ -667,6 +673,10 @@ if ($DID=='Y')
}
$graph_data_ary=array();
$CALLStoDID=count($did_calls);
$TOTALsec=0;
if ($group_ct > 1)
{
$ASCII_text.="\n";
@@ -737,14 +747,32 @@ if ($group_ct > 1)
if ($DB) {$ASCII_text.="$stmt\n";}
$row=mysqli_fetch_row($rslt);
$stmt="select count(*) from ".$live_inbound_log_table." where start_time >= '$query_date_BEGIN' and start_time <= '$query_date_END' and comment_a='$group[$i]' and comment_b='START';";
$stmt="select uniqueid, length_in_sec from ".$vicidial_closer_log_table." where call_date >= '$query_date_BEGIN' and call_date <= '$query_date_END' and campaign_id='$group[$i]';";
if ($DID=='Y')
{
$stmt="select count(*) from ".$live_inbound_log_table." where start_time >= '$query_date_BEGIN' and start_time <= '$query_date_END' and uniqueid IN($DIDunid_SQL);";
$stmt="select uniqueid, length_in_sec from ".$vicidial_closer_log_table." where call_date >= '$query_date_BEGIN' and call_date <= '$query_date_END' and uniqueid IN($DIDunid_SQL);";
}
$rslt=mysql_to_mysqli($stmt, $link);
if ($DB) {$ASCII_text.="$stmt\n";}
$rowx=mysqli_fetch_row($rslt);
$TOTALcalls=mysqli_num_rows($rslt);
while ($row=mysqli_fetch_row($rslt))
{
unset($did_calls["$row[0]"]);
$TOTALsec+=$row[1];
}
$stmt="select distinct uniqueid from ".$live_inbound_log_table." where start_time >= '$query_date_BEGIN' and start_time <= '$query_date_END' and comment_a='$group[$i]' and comment_b='START';";
if ($DID=='Y')
{
$stmt="select distinct uniqueid from ".$live_inbound_log_table." where start_time >= '$query_date_BEGIN' and start_time <= '$query_date_END' and uniqueid IN($DIDunid_SQL);";
}
$rslt=mysql_to_mysqli($stmt, $link);
if ($DB) {$ASCII_text.="6 $stmt\n";}
$TOTALivrs=mysqli_num_rows($rslt);
while ($rowx=mysqli_fetch_row($rslt))
{
unset($did_calls["$rowx[0]"]);
}
$stmt="select count(*),sum(length_in_sec) from ".$vicidial_closer_log_table." where call_date >= '$query_date_BEGIN' and call_date <= '$query_date_END' and campaign_id='$group[$i]' and status IN('DROP','XDROP') and (length_in_sec <= 49999 or length_in_sec is null);";
if ($DID=='Y')
@@ -754,11 +782,11 @@ if ($group_ct > 1)
$rslt=mysql_to_mysqli($stmt, $link);
if ($DB) {$ASCII_text.="$stmt\n";}
$rowy=mysqli_fetch_row($rslt);
if ($row[0]>$max_value) {$max_value=$row[0];}
if ($TOTALcalls>$max_value) {$max_value=$TOTALcalls;}
$groupDISPLAY = sprintf("%20s", $group[$i]);
$gTOTALcalls = sprintf("%7s", $row[0]);
$gIVRcalls = sprintf("%7s", $rowx[0]);
$gTOTALcalls = sprintf("%7s", $TOTALcalls);
$gIVRcalls = sprintf("%7s", $TOTALivrs);
$gDROPcalls = sprintf("%7s", $rowy[0]);
$gDROPpercent = (MathZDC($gDROPcalls, $gTOTALcalls) * 100);
$gDROPpercent = round($gDROPpercent, 2);
@@ -856,7 +884,9 @@ $rowx=mysqli_fetch_row($rslt);
$TOTALcalls = sprintf("%10s", $row[0]);
$IVRcalls = sprintf("%10s", $rowx[0]);
$TOTALsec = $row[1];
$UNSENTcalls=count($did_calls);
$ROUTEcounts=array_count_values($did_calls);
$average_call_seconds = MathZDC($TOTALsec, $row[0]);
$average_call_seconds = round($average_call_seconds, 0);
@@ -887,17 +917,53 @@ if ($EMAIL=='Y')
}
else
{
$MAIN.=_QXZ("Total calls taken in to this In-Group:",47)."$TOTALcalls\n";
$MAIN.=_QXZ("Average Call Length for all Calls:",47)."$average_call_seconds "._QXZ("seconds")."\n";
if ($DID=='Y')
{
$CALLStoDID=sprintf("%10s", $CALLStoDID);
$UNSENTcalls=sprintf("%10s", $UNSENTcalls);
$MAIN.=_QXZ("Total calls to DIDs:",47)."$CALLStoDID\n";
$MAIN.=_QXZ("Calls transferred or lost before routing:",47)."$UNSENTcalls\n";
$CSV_text1.="\""._QXZ("Total calls to DIDs").":\",\"$CALLStoDID\"\n";
$CSV_text1.="\""._QXZ("Calls transferred or lost before routing").":\",\"$CALLStoDID\"\n";
if ($UNSENTcalls>0)
{
foreach ($ROUTEcounts as $route => $calls_to_route)
{
$calls_to_route=sprintf("%10s", $calls_to_route);
$MAIN.=" - "._QXZ("Before reaching $route:",44)."$calls_to_route\n";
$CSV_text1.="\" - "._QXZ("Calls transferred or lost before reaching $route").":\",\"$calls_to_route\"\n";
}
$call_logUIDSQL="";
foreach($did_calls as $uniqueid => $route)
{
$call_logUIDSQL.="'$uniqueid',";
}
$call_logUIDSQL=preg_replace('/,$/', '', $call_logUIDSQL);
$call_log_stmt="select sum(length_in_sec), avg(length_in_sec) from call_log where uniqueid in ($call_logUIDSQL)";
$call_log_rslt=mysql_to_mysqli($call_log_stmt, $link);
if ($DB) {$MAIN.="8b $call_log_stmt\n";}
$call_log_row=mysqli_fetch_row($call_log_rslt);
$avg_lost_secs=round($call_log_row[1], 2);
$avg_lost_secs=sprintf("%10s", $avg_lost_secs);
$MAIN.=_QXZ("Average length of lost calls:",47)."$avg_lost_secs "._QXZ("seconds")."\n";
$CSV_text1.="\""._QXZ("Average length of lost calls").":\",\"$avg_lost_secs "._QXZ("seconds")."\"\n";
}
$MAIN.="\n";
$CSV_text1.="\n";
}
$MAIN.=_QXZ("Total calls routed:",47)."$TOTALcalls\n";
$MAIN.=_QXZ("Average Call Length for routed Calls:",47)."$average_call_seconds "._QXZ("seconds")."\n";
$MAIN.=_QXZ("Answered Calls:",47)."$ANSWEREDcalls $ANSWEREDpercent%\n";
$MAIN.=_QXZ("Average queue time for Answered Calls:",47)."$average_answer_seconds "._QXZ("seconds")."\n";
$MAIN.=_QXZ("Calls taken into the IVR for this In-Group:",47)."$IVRcalls\n";
$MAIN.=_QXZ("Calls taken into the IVR:",47)."$IVRcalls\n";
$CSV_text1.="\""._QXZ("Total calls taken in to this In-Group").":\",\"$TOTALcalls\"\n";
$CSV_text1.="\""._QXZ("Average Call Length for all Calls").":\",\"$average_call_seconds "._QXZ("seconds")."\"\n";
$CSV_text1.="\""._QXZ("Total calls routed").":\",\"$TOTALcalls\"\n";
$CSV_text1.="\""._QXZ("Average Call Length for routed Calls").":\",\"$average_call_seconds "._QXZ("seconds")."\"\n";
$CSV_text1.="\""._QXZ("Answered Calls").":\",\"$ANSWEREDcalls\",\"$ANSWEREDpercent%\"\n";
$CSV_text1.="\""._QXZ("Average queue time for Answered Calls").":\",\"$average_answer_seconds "._QXZ("seconds")."\"\n";
$CSV_text1.="\""._QXZ("Calls taken into the IVR for this In-Group").":\",\"$IVRcalls\"\n";
$CSV_text1.="\""._QXZ("Calls taken into the IVR").":\",\"$IVRcalls\"\n";
}
$MAIN.="\n";
@@ -436,8 +436,8 @@ while ($i < $statcats_to_print)
require("screen_colors.php");
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
$HEADER.="<HTML>\n";
$HEADER.="<HEAD>\n";
@@ -451,6 +451,8 @@ $HEADER.="-->\n";
$HEADER.=" </STYLE>\n";
$HEADER.="<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"calendar.css\">\n";
$HEADER.="<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
$HEADER.="<link rel=\"stylesheet\" href=\"verticalbargraph.css\">\n";
@@ -461,6 +463,7 @@ $HEADER.="<script language=\"JavaScript\" src=\"wz_jsgraphics.js\"></script>\n";
$HEADER.="<script language=\"JavaScript\" src=\"line.js\"></script>\n";
$HEADER.="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
$HEADER.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
$HEADER.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$JS_text="<script language=\"JavaScript\">\n";
@@ -32,6 +32,7 @@
# 170829-0040 - Added screen color settings
# 171012-2015 - Fixed javascript/apache errors with graphs
# 191013-0831 - Fixes for PHP7
# 200605-1100 - user_group bug fix
#
$startMS = microtime();
@@ -329,6 +330,7 @@ $groups_string='|';
#$LISTgroups[$i]='---NONE---';
#$i++;
#$groups_to_print++;
while ($i < $groups_to_print)
{
$row=mysqli_fetch_row($rslt);
@@ -397,8 +399,8 @@ while ($i < $times_to_print)
}
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
$HEADER.="<HTML>\n";
$HEADER.="<HEAD>\n";
@@ -413,6 +415,8 @@ $HEADER.="</STYLE>\n";
$HEADER.="<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"calendar.css\">\n";
$HEADER.="<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
require("chart_button.php");
@@ -421,6 +425,7 @@ $HEADER.="<script language=\"JavaScript\" src=\"vicidial_chart_functions.js\"></
$HEADER.="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
$HEADER.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
$HEADER.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
if ($bareformat < 1)
{
@@ -682,7 +687,7 @@ else
$hTOTmax_queue_seconds = 0;
$hTOTdrop_count = 0;
$stmt = "SELECT status,length_in_sec,queue_seconds,call_date,UNIX_TIMESTAMP(call_date),phone_number,campaign_id from ".$vicidial_closer_log_table." where call_date >= '$query_date_BEGIN' and call_date <= '$query_date_END' and campaign_id='$group[$i]';";
$stmt = "SELECT status,length_in_sec,queue_seconds,call_date,UNIX_TIMESTAMP(call_date),phone_number,campaign_id from ".$vicidial_closer_log_table." where call_date >= '$query_date_BEGIN' and call_date <= '$query_date_END' and campaign_id='$group[$i]' $LOGadmin_viewable_groupsSQL;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($DB) {$ASCII_text.="$stmt\n";}
$calls_to_parse = mysqli_num_rows($rslt);
+136 -63
View File
@@ -36,6 +36,7 @@
# 170829-0040 - Added screen color settings
# 171012-2015 - Fixed javascript/apache errors with graphs
# 191013-0850 - Fixes for PHP7
# 210525-1715 - Fixed help display, modification for more call details
#
$startMS = microtime();
@@ -99,17 +100,25 @@ if (strlen($report_display_type)<2) {$report_display_type = $SSreport_default_fo
### ARCHIVED DATA CHECK CONFIGURATION
$archives_available="N";
$table_name="vicidial_did_log";
$archive_table_name=use_archive_table($table_name);
if ($archive_table_name!=$table_name) {$archives_available="Y";}
$log_tables_array=array("vicidial_did_log", "vicidial_closer_log", "live_inbound_log");
for ($t=0; $t<count($log_tables_array); $t++)
{
$table_name=$log_tables_array[$t];
$archive_table_name=use_archive_table($table_name);
if ($archive_table_name!=$table_name) {$archives_available="Y";}
}
if ($search_archived_data)
{
$vicidial_did_log_table=use_archive_table("vicidial_did_log");
$vicidial_closer_log_table=use_archive_table("vicidial_closer_log");
$live_inbound_log_table=use_archive_table("live_inbound_log");
}
else
{
$vicidial_did_log_table="vicidial_did_log";
$vicidial_closer_log_table="vicidial_closer_log";
$live_inbound_log_table="live_inbound_log";
}
#############
@@ -348,8 +357,8 @@ if ( (strlen($slave_db_server)>5) and (preg_match("/$report_name/",$reports_use_
require("screen_colors.php");
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
$HEADER.="<HTML>\n";
$HEADER.="<HEAD>\n";
@@ -375,6 +384,8 @@ $HEADER.="-->\n";
$HEADER.="</style>\n";
$HEADER.="<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"calendar.css\">\n";
$HEADER.="<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
require("chart_button.php");
@@ -383,6 +394,7 @@ $HEADER.="<script language=\"JavaScript\" src=\"vicidial_chart_functions.js\"></
$HEADER.="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
$HEADER.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
$HEADER.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$short_header=1;
@@ -744,7 +756,7 @@ else
### GRAB ALL RECORDS WITHIN RANGE FROM THE DATABASE ###
$stmt="select UNIX_TIMESTAMP(call_date),extension,server_ip from ".$vicidial_did_log_table." where call_date >= '$query_date_BEGIN' and call_date <= '$query_date_END' and did_id IN($group_SQL);";
$stmt="select UNIX_TIMESTAMP(call_date),extension,server_ip,uniqueid,did_route,did_id from ".$vicidial_did_log_table." where call_date >= '$query_date_BEGIN' and call_date <= '$query_date_END' and did_id IN($group_SQL) order by extension;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($DB) {$MAIN.="$stmt\n";}
$records_to_grab = mysqli_num_rows($rslt);
@@ -753,6 +765,7 @@ else
$dt=array();
$extension=array();
$did_server_ip=array();
$unique_ids=array();
$extension[0]='';
$did_server_ip[0]='';
while ($i < $records_to_grab)
@@ -762,6 +775,9 @@ else
$ut[$i] = ($row[0] - $SQepochDAY);
$extension[$i] = $row[1];
$did_server_ip[$i] =$row[2];
$unique_ids["$row[1]"]["$row[4]"].="$row[3]|";
while($ut[$i] >= 86400)
{
$ut[$i] = ($ut[$i] - 86400);
@@ -792,12 +808,12 @@ else
if (strlen($extension[0]) > 0)
{
$ASCII_text.=_QXZ("DID Summary").":\n";
$ASCII_text.="+--------------------+--------------------------------+------------+------------+\n";
$ASCII_text.="| "._QXZ("DID",18)." | "._QXZ("DESCRIPTION",30)." | "._QXZ("ROUTE",10)." | "._QXZ("CALLS",10)." |\n";
$ASCII_text.="+--------------------+--------------------------------+------------+------------+\n";
$ASCII_text.="+--------------------+--------------------------------+----------------------+------------+------------+------------+------------+\n";
$ASCII_text.="| "._QXZ("DID",18)." | "._QXZ("DESCRIPTION",30)." | "._QXZ("CURRENT ROUTE",20)." | "._QXZ("CALLS",10)." | "._QXZ("LOST", 10)." | "._QXZ("TRANSFER", 10)." | "._QXZ("ROUTED", 10)." |\n";
$ASCII_text.="+--------------------+--------------------------------+----------------------+------------+------------+------------+------------+\n";
$CSV_text1.="\""._QXZ("DID Summary").":\"\n";
$CSV_text1.="\""._QXZ("DID")."\",\""._QXZ("DESCRIPTION")."\",\""._QXZ("ROUTE")."\",\""._QXZ("CALLS")."\"\n";
$CSV_text1.="\""._QXZ("DID")."\",\""._QXZ("DESCRIPTION")."\",\""._QXZ("CURRENT ROUTE")."\",\""._QXZ("CALLS")."\",\""._QXZ("LOST")."\",\""._QXZ("TRANSFER")."\",\""._QXZ("ROUTED")."\"\n";
$GRAPH_text.="</PRE>";
@@ -811,13 +827,16 @@ else
{
$stat_description = ' *** default *** ';
$stat_route = $default_route;
$lost_calls=0;
$transferred_calls=0;
$routed_calls=0;
$stat_record_array = explode(' ',$stats_array[$d]);
$stat_count = ($stat_record_array[0] + 0);
$stat_pattern = $stat_record_array[1];
if ($stat_count>$max_calls) {$max_calls=$stat_count;}
$graph_stats[$d][0]=$stat_count;
$graph_stats[$d][1]=$stat_pattern;
$graph_stats[$d][0]=$stat_pattern;
$graph_stats[$d][1]=$stat_count;
$stmt="select did_description,did_route from vicidial_inbound_dids where did_pattern='$stat_pattern';";
$rslt=mysql_to_mysqli($stmt, $link);
@@ -827,20 +846,60 @@ else
$row=mysqli_fetch_row($rslt);
$stat_description = $row[0];
$stat_route = $row[1];
$did_activity=$unique_ids["$stat_pattern"];
# print_r($did_activity);
foreach ($did_activity as $keyroute => $uid_str)
{
$uid_str=preg_replace('/\|$/', '', $uid_str);
$did_activity_uid_array=explode("|", $uid_str);
$did_activity_call_count=count($did_activity_uid_array);
if (preg_match('/EXTEN|PHONE|VOICEMAIL/', $keyroute))
{
$transferred_calls+=$did_activity_call_count;
}
else
{
if (preg_match('/CALLMENU/', $keyroute))
{
$did_lookup_stmt="select count(distinct uniqueid) from ".$live_inbound_log_table." where start_time >= '$query_date_BEGIN' and start_time <= '$query_date_END' and uniqueid IN('".implode("','", $did_activity_uid_array)."');";
}
else
{
$did_lookup_stmt="select count(distinct uniqueid) from ".$vicidial_closer_log_table." where call_date >= '$query_date_BEGIN' and call_date <= '$query_date_END' and uniqueid IN('".implode("','", $did_activity_uid_array)."')";
}
$did_lookup_rslt=mysql_to_mysqli($did_lookup_stmt, $link);
if ($DB) {$MAIN.="$did_lookup_stmt<BR>\n";}
$did_lookup_row=mysqli_fetch_row($did_lookup_rslt);
$routed_calls+=$did_lookup_row[0];
}
}
}
$lost_calls=$stat_count-$transferred_calls-$routed_calls;
$graph_stats[$d][2]=$lost_calls;
$graph_stats[$d][3]=$transferred_calls;
$graph_stats[$d][4]=$routed_calls;
$totCALLS = ($totCALLS + $stat_count);
$totLOSTCALLS = ($totLOSTCALLS + $lost_calls);
$totTRANSFERREDCALLS = ($totTRANSFERREDCALLS + $transferred_calls);
$totROUTEDCALLS = ($totROUTEDCALLS + $routed_calls);
$stat_pattern = sprintf("%-18s", $stat_pattern);
$stat_description = sprintf("%-30s", $stat_description);
while (strlen($stat_description) > 30) {$stat_description = preg_replace('/.$/i', '',$stat_description);}
$stat_route = sprintf("%-10s", $stat_route);
$stat_route = sprintf("%-20s", $stat_route);
$stat_count = sprintf("%10s", $stat_count);
$lost_calls = sprintf("%10s", $lost_calls);
$transferred_calls = sprintf("%10s", $transferred_calls);
$routed_calls = sprintf("%10s", $routed_calls);
$CSV_text1.="\"$stat_pattern\",\"$stat_description\",\"$stat_route\",\"$stat_count\"\n";
$stat_pattern = "<a href=\"admin.php?ADD=3311&did_pattern=$stat_pattern\">$stat_pattern</a>";
$ASCII_text.="| $stat_pattern | $stat_description | $stat_route | $stat_count |\n";
$ASCII_text.="| $stat_pattern | $stat_description | $stat_route | $stat_count | $lost_calls | $transferred_calls | $routed_calls |\n";
$d++;
}
@@ -852,7 +911,8 @@ else
$graph_totals_array=array();
$graph_totals_rawdata=array();
for ($q=0; $q<count($graph_array); $q++) {
for ($q=0; $q<count($graph_array); $q++)
{
$graph_info=explode("|", $graph_array[$q]);
$current_graph_total=0;
$dataset_name=$graph_info[0];
@@ -863,51 +923,61 @@ else
# $JS_text.="\ttype: \"\",\n";
# $JS_text.="\t\tdata: {\n";
$datasets="\t\tdatasets: [\n";
$datasets.="\t\t\t{\n";
$datasets.="\t\t\t\tlabel: \"\",\n";
$datasets.="\t\t\t\tfill: false,\n";
$labels="\t\tlabels:[";
$data="\t\t\t\tdata: [";
$graphConstantsA="\t\t\t\tbackgroundColor: [";
$graphConstantsB="\t\t\t\thoverBackgroundColor: [";
$graphConstantsC="\t\t\t\thoverBorderColor: [";
for ($d=0; $d<count($graph_stats); $d++) {
$labels.="\"".$graph_stats[$d][1]."\",";
$data.="\"".$graph_stats[$d][0]."\",";
$current_graph_total+=$graph_stats[$d][0];
$bgcolor=$backgroundColor[($d%count($backgroundColor))];
$hbgcolor=$hoverBackgroundColor[($d%count($hoverBackgroundColor))];
$hbcolor=$hoverBorderColor[($d%count($hoverBorderColor))];
$graphConstantsA.="\"$bgcolor\",";
$graphConstantsB.="\"$hbgcolor\",";
$graphConstantsC.="\"$hbcolor\",";
}
$graphConstantsA.="],\n";
$graphConstantsB.="],\n";
$graphConstantsC.="],\n";
$labels=preg_replace('/,$/', '', $labels)."],\n";
$data=preg_replace('/,$/', '', $data)."],\n";
$graph_totals_rawdata[$q]=$current_graph_total;
switch($dataset_type) {
case "time":
$graph_totals_array[$q]=" <caption align=\"bottom\">"._QXZ("TOTAL")." - ".sec_convert($current_graph_total, 'H')." </caption>\n";
$chart_options="options: {tooltips: {callbacks: {label: function(tooltipItem, data) {var value = Math.round(data.datasets[0].data[tooltipItem.index]); return value.toHHMMSS();}}}, legend: { display: false }},";
break;
case "percent":
$graph_totals_array[$q]="";
$chart_options="options: {tooltips: {callbacks: {label: function(tooltipItem, data) {var value = data.datasets[0].data[tooltipItem.index]; return value + '%';}}}, legend: { display: false }},";
break;
default:
$graph_totals_array[$q]=" <caption align=\"bottom\">"._QXZ("TOTAL").": $current_graph_total</caption>\n";
$chart_options="options: { legend: { display: false }},";
break;
}
$graph_labels=array("", "CALLS", "LOST", "TRANSFER", "ROUTED");
for ($n=1; $n<count($graph_stats[0]); $n++)
{
$datasets.="\t\t\t{\n";
$datasets.="\t\t\t\tlabel: \"".$graph_labels[$n]."\",\n";
$datasets.="\t\t\t\tfill: false,\n";
$labels="\t\tlabels:[";
$data="\t\t\t\tdata: [";
$graphConstantsA="\t\t\t\tbackgroundColor: [";
$graphConstantsB="\t\t\t\thoverBackgroundColor: [";
$graphConstantsC="\t\t\t\thoverBorderColor: [";
for ($d=0; $d<count($graph_stats); $d++)
{
$labels.="\"".$graph_stats[$d][0]."\",";
$data.="\"".$graph_stats[$d][$n]."\",";
$current_graph_total+=$graph_stats[$d][$n];
$bgcolor=$backgroundColor[($d%count($backgroundColor))];
$hbgcolor=$hoverBackgroundColor[($d%count($hoverBackgroundColor))];
$hbcolor=$hoverBorderColor[($d%count($hoverBorderColor))];
$graphConstantsA.="\"$bgcolor\",";
$graphConstantsB.="\"$hbgcolor\",";
$graphConstantsC.="\"$hbcolor\",";
}
$graphConstantsA.="],\n";
$graphConstantsB.="],\n";
$graphConstantsC.="],\n";
$labels=preg_replace('/,$/', '', $labels)."],\n";
$data=preg_replace('/,$/', '', $data)."],\n";
$graph_totals_rawdata[$q]=$current_graph_total;
switch($dataset_type)
{
case "time":
$graph_totals_array[$q]=" <caption align=\"bottom\">"._QXZ("TOTAL")." - ".sec_convert($current_graph_total, 'H')." </caption>\n";
$chart_options="options: {tooltips: {callbacks: {label: function(tooltipItem, data) {var value = Math.round(data.datasets[0].data[tooltipItem.index]); return value.toHHMMSS();}}}, legend: { display: false }},";
break;
case "percent":
$graph_totals_array[$q]="";
$chart_options="options: {tooltips: {callbacks: {label: function(tooltipItem, data) {var value = data.datasets[0].data[tooltipItem.index]; return value + '%';}}}, legend: { display: false }},";
break;
default:
$graph_totals_array[$q]=" <caption align=\"bottom\">"._QXZ("TOTAL").": $current_graph_total</caption>\n";
$chart_options="options: { legend: { display: false }},";
break;
}
$datasets.=$data;
$datasets.=$graphConstantsA.$graphConstantsB.$graphConstantsC.$graphConstants; # SEE TOP OF SCRIPT
$datasets.="\t\t\t},\n";
}
$datasets.=$data;
$datasets.=$graphConstantsA.$graphConstantsB.$graphConstantsC.$graphConstants; # SEE TOP OF SCRIPT
$datasets.="\t\t\t}\n";
$datasets.="\t\t]\n";
$datasets.="\t}\n";
@@ -916,7 +986,7 @@ else
# $JS_text.="prepChart('$default_graph', $graph_id, $q, $dataset_name);\n";
$JS_text.="var main_ctx = document.getElementById(\"CanvasID".$graph_id."_".$q."\");\n";
$JS_text.="var GraphID".$graph_id."_".$q." = new Chart(main_ctx, {type: '$default_graph', $chart_options data: $dataset_name});\n";
}
}
$graph_count=count($graph_array);
$graph_title=_QXZ("DID Summary");
@@ -926,11 +996,14 @@ else
$FtotCALLS = sprintf("%10s", $totCALLS);
$FtotLOSTCALLS = sprintf("%10s", $totLOSTCALLS);
$FtotTRANSFERREDCALLS = sprintf("%10s", $totTRANSFERREDCALLS);
$FtotROUTEDCALLS = sprintf("%10s", $totROUTEDCALLS);
$ASCII_text.="+--------------------+--------------------------------+------------+------------+\n";
$ASCII_text.="| "._QXZ("TOTALS",64,"r")." | $FtotCALLS |\n";
$ASCII_text.="+------------------------------------------------------------------+------------+\n";
$CSV_text1.="\"\",\"\",\""._QXZ("TOTALS")."\",\"$FtotCALLS\"\n";
$ASCII_text.="+--------------------+--------------------------------+----------------------+------------+------------+------------+------------+\n";
$ASCII_text.="| "._QXZ("TOTALS",74,"r")." | $FtotCALLS | $FtotLOSTCALLS | $FtotTRANSFERREDCALLS | $FtotROUTEDCALLS |\n";
$ASCII_text.="+----------------------------------------------------------------------------+------------+------------+------------+------------+\n";
$CSV_text1.="\"\",\"\",\""._QXZ("TOTALS")."\",\"$FtotCALLS\",\"$FtotLOSTCALLS\",\"$FtotTRANSFERREDCALLS\",\"$FtotROUTEDCALLS\"\n";
#$MAIN.=$GRAPH;
}
@@ -321,8 +321,8 @@ if ( (strlen($slave_db_server)>5) and (preg_match("/$report_name/",$reports_use_
$MAIN.="<!-- Using slave server $slave_db_server $db_source -->\n";
}
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
$HEADER.="<HTML>\n";
$HEADER.="<HEAD>\n";
@@ -348,6 +348,8 @@ $HEADER.="-->\n";
$HEADER.="</style>\n";
$HEADER.="<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"calendar.css\">\n";
$HEADER.="<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
require("chart_button.php");
@@ -356,6 +358,7 @@ $HEADER.="<script language=\"JavaScript\" src=\"vicidial_chart_functions.js\"></
$HEADER.="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
$HEADER.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
$HEADER.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$short_header=1;
@@ -368,7 +371,7 @@ if ($DB > 0)
$MAIN.="<BR>\n";
}
$MAIN.="<b>"._QXZ("$report_name")."</b> $NWB#DIDstats$NWE\n";
$MAIN.="<b>"._QXZ("$report_name")."</b> $NWB#DIDsummary$NWE\n";
$MAIN.="<TABLE CELLPADDING=3 CELLSPACING=0><TR><TD>";
$MAIN.="<FORM ACTION=\"$PHP_SELF\" METHOD=POST name=vicidial_report id=vicidial_report>\n";
@@ -223,6 +223,8 @@ $STARTtime = date("U");
if (!isset($query_date)) {$query_date = "$NOW_DATE 00:00:00";}
if (!isset($end_date)) {$end_date = "$NOW_DATE 23:59:59";}
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
?>
@@ -238,7 +240,10 @@ if (!isset($end_date)) {$end_date = "$NOW_DATE 23:59:59";}
<?php
echo "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
echo "<script language=\"JavaScript\" src=\"help.js\"></script>\n";
echo "<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
echo "<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$short_header=1;
@@ -251,6 +256,7 @@ if ($DB > 0)
echo "<BR>\n";
}
echo "<b>"._QXZ("$report_name")."</b> $NWB#LISTUPDATE_stats$NWE\n";
echo "<TABLE CELLPADDING=4 CELLSPACING=0><TR><TD>";
echo "<FORM ACTION=\"$PHP_SELF\" METHOD=GET>\n";
@@ -316,8 +316,8 @@ if ( (strlen($slave_db_server)>5) and (preg_match("/$report_name/",$reports_use_
require("screen_colors.php");
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
$HEADER.="<HTML>\n";
$HEADER.="<HEAD>\n";
@@ -344,6 +344,8 @@ $HEADER.="</style>\n";
$HEADER.="<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"calendar.css\">\n";
$HEADER.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
require("chart_button.php");
$HEADER.="<script src='chart/Chart.js'></script>\n";
@@ -351,6 +353,7 @@ $HEADER.="<script language=\"JavaScript\" src=\"vicidial_chart_functions.js\"></
$HEADER.="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
$HEADER.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
$HEADER.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$short_header=1;
@@ -391,8 +391,8 @@ if (strlen($customer_interactive_statuses)>0)
$LINKbase = "$PHP_SELF?query_date=$query_date&end_date=$end_date&shift=$shift&DB=$DB&user=$user$groupQS&search_archived_data=$search_archived_data&report_display_type=$report_display_type";
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
if ($file_download < 1)
{
@@ -412,6 +412,8 @@ if ($file_download < 1)
<?php
echo "<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
echo "<script language=\"JavaScript\" src=\"help.js\"></script>\n";
echo "<link rel=\"stylesheet\" href=\"calendar.css\">\n";
echo "<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
require("chart_button.php");
@@ -420,6 +422,7 @@ if ($file_download < 1)
echo "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
echo "<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=white marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
echo "<div id='HelpDisplayDiv' class='help_info' style='display:none;z-index:21;'></div>";
echo "<span style=\"position:absolute;left:0px;top:0px;z-index:20;\" id=admin_header>";
$short_header=1;
@@ -367,8 +367,8 @@ if (strlen($customer_interactive_statuses)>0)
$LINKbase = "$PHP_SELF?query_date=$query_date&end_date=$end_date&shift=$shift&DB=$DB&user=$user$groupQS&search_archived_data=$search_archived_data&report_display_type=$report_display_type";
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
if ($file_download < 1)
{
@@ -388,11 +388,14 @@ if ($file_download < 1)
<?php
echo "<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
echo "<script language=\"JavaScript\" src=\"help.js\"></script>\n";
echo "<link rel=\"stylesheet\" href=\"calendar.css\">\n";
echo "<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
echo "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
echo "<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=white marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
echo "<div id='HelpDisplayDiv' class='help_info' style='display:none;z-index:21;'></div>";
echo "<span style=\"position:absolute;left:0px;top:0px;z-index:20;\" id=admin_header>";
$short_header=1;
@@ -386,8 +386,8 @@ if (strlen($customer_interactive_statuses)>0)
$LINKbase = "$PHP_SELF?query_date=$query_date&end_date=$end_date$groupQS$user_groupQS&shift=$shift&search_archived_data=$search_archived_data&show_defunct_users=$show_defunct_users&report_display_type=$report_display_type&DB=$DB";
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
if ($file_download < 1)
{
@@ -407,6 +407,8 @@ if ($file_download < 1)
<?php
echo "<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
echo "<script language=\"JavaScript\" src=\"help.js\"></script>\n";
echo "<link rel=\"stylesheet\" href=\"calendar.css\">\n";
echo "<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
require("chart_button.php");
@@ -415,6 +417,7 @@ if ($file_download < 1)
echo "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
echo "<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=white marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
echo "<div id='HelpDisplayDiv' class='help_info' style='display:none;z-index:21;'></div>";
echo "<span style=\"position:absolute;left:0px;top:0px;z-index:20;\" id=admin_header>";
$short_header=1;
@@ -512,8 +512,8 @@ $LINKbase = "$PHP_SELF?query_date=$query_date&end_date=$end_date&query_time=$que
require("screen_colors.php");
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
$HTML_head.="<HTML>\n";
$HTML_head.="<HEAD>\n";
@@ -528,6 +528,8 @@ $HTML_head.=" </STYLE>\n";
$HTML_head.="<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
$HTML_head.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HTML_head.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HTML_head.="<link rel=\"stylesheet\" href=\"calendar.css\">\n";
$HTML_head.="<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
require("chart_button.php");
@@ -536,6 +538,7 @@ $HTML_head.="<script language=\"JavaScript\" src=\"vicidial_chart_functions.js\"
$HTML_head.="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
$HTML_head.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
$HTML_head.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$short_header=1;
@@ -37,6 +37,7 @@
# 170829-0040 - Added screen color settings
# 171012-2015 - Fixed javascript/apache errors with graphs
# 191013-0904 - Fixes for PHP7
# 200605-1100 - user_group bug fix
#
$startMS = microtime();
@@ -321,11 +322,11 @@ $rslt=mysql_to_mysqli($stmt, $link);
if ($DB) {echo "$stmt\n";}
$user_groups_to_print = mysqli_num_rows($rslt);
$i=0;
$user_groups=array();
$allowed_user_groups=array();
while ($i < $user_groups_to_print)
{
$row=mysqli_fetch_row($rslt);
$user_groups[$i] =$row[0];
$allowed_user_groups[$i] =$row[0];
if ($all_user_groups) {$user_group[$i]=$row[0];}
$i++;
}
@@ -362,9 +363,18 @@ while($i < $user_group_ct)
$i++;
}
if ( (preg_match('/\-\-ALL\-\-/',$user_group_string) ) or ($user_group_ct < 1) )
{$user_group_SQL = "";}
else
{
$i=0;
$user_group_SQL = "";
$user_groupQS = "";
$user_groups_ct = count($allowed_user_groups);
while($i < $user_groups_ct)
{
# $user_group_string .= "$user_groups[$i]|";
$user_group_SQL .= "'$allowed_user_groups[$i]',";
$user_groupQS .= "&user_group[]=$allowed_user_groups[$i]";
$i++;
}
$user_group_SQL = preg_replace('/,$/i', '',$user_group_SQL);
$user_group_SQL = "and ".$agent_log_table.".user_group IN($user_group_SQL)";
}
@@ -420,8 +430,8 @@ if (strlen($customer_interactive_statuses)>0)
$LINKbase = "$PHP_SELF?query_date=$query_date&end_date=$end_date$groupQS$user_groupQS&shift=$shift&search_archived_data=$search_archived_data&show_defunct_users=$show_defunct_users&report_display_type=$report_display_type&DB=$DB";
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
if ($file_download < 1)
{
@@ -441,6 +451,8 @@ if ($file_download < 1)
<?php
echo "<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
echo "<script language=\"JavaScript\" src=\"help.js\"></script>\n";
echo "<link rel=\"stylesheet\" href=\"calendar.css\">\n";
echo "<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
require("chart_button.php");
@@ -449,6 +461,7 @@ if ($file_download < 1)
echo "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
echo "<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=white marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
echo "<div id='HelpDisplayDiv' class='help_info' style='display:none;z-index:21;'></div>";
echo "<span style=\"position:absolute;left:0px;top:0px;z-index:20;\" id=admin_header>";
$short_header=1;
@@ -1125,8 +1138,8 @@ else
$o=0;
while ($user_groups_to_print > $o)
{
if (preg_match("/$user_groups[$o]\|/i",$user_group_string)) {echo "<option selected value=\"$user_groups[$o]\">$user_groups[$o]</option>\n";}
else {echo "<option value=\"$user_groups[$o]\">$user_groups[$o]</option>\n";}
if (preg_match("/$allowed_user_groups[$o]\|/i",$user_group_string)) {echo "<option selected value=\"$allowed_user_groups[$o]\">$allowed_user_groups[$o]</option>\n";}
else {echo "<option value=\"$allowed_user_groups[$o]\">$allowed_user_groups[$o]</option>\n";}
$o++;
}
echo "</SELECT>\n";
@@ -378,8 +378,8 @@ while ($i < $statha_to_print)
$LINKbase = "$PHP_SELF?query_date=$query_dateURL&end_date=$end_dateURL$groupQS$user_groupQS&shift=$shift&DB=$DB";
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
if ($file_download < 1)
{
@@ -397,6 +397,8 @@ if ($file_download < 1)
</STYLE>
<script language="JavaScript" src="calendar_db.js"></script>
<link rel="stylesheet" type="text/css" href="vicidial_stylesheet.php">
<script language="JavaScript" src="help.js"></script>
<link rel="stylesheet" href="calendar.css">
<link rel="stylesheet" href="horizontalbargraph.css">
<?php require("chart_button.php"); ?>
@@ -412,6 +414,7 @@ window.open(url,"",'width=620,height=300,scrollbars=yes,menubar=yes,address=yes'
<?php
echo "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
echo "<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=white marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
echo "<div id='HelpDisplayDiv' class='help_info' style='display:none;z-index:21;'></div>";
echo "<span style=\"position:absolute;left:0px;top:0px;z-index:20;\" id=admin_header>";
$short_header=1;
@@ -332,8 +332,8 @@ $end_date="$end_date_D $end_date_T";
require("screen_colors.php");
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
$HTML_head.="<HTML>\n";
$HTML_head.="<HEAD>\n";
@@ -347,6 +347,8 @@ $HTML_head.="-->\n";
$HTML_head.=" </STYLE>\n";
$HTML_head.="<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
$HTML_head.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HTML_head.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HTML_head.="<link rel=\"stylesheet\" href=\"calendar.css\">\n";
$HTML_head.="<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
require("chart_button.php");
@@ -355,6 +357,8 @@ $HTML_head.="<script language=\"JavaScript\" src=\"vicidial_chart_functions.js\"
$HTML_head.="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
$HTML_head.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>$group_S\n";
$HTML_head.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$short_header=1;
# require("admin_header.php");
@@ -305,6 +305,9 @@ if ($agent_screen_colors != 'default')
}
}
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
$HEADER.="<HTML>\n";
$HEADER.="<HEAD>\n";
$HEADER.="<STYLE type=\"text/css\">\n";
@@ -317,15 +320,19 @@ $HEADER.="-->\n";
$HEADER.=" </STYLE>\n";
$HEADER.="<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"calendar.css\">\n";
$HEADER.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
$HEADER.="<link rel=\"stylesheet\" href=\"verticalbargraph.css\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"wz_jsgraphics.js\"></script>\n";
$HEADER.="<script language=\"JavaScript\" src=\"line.js\"></script>\n";
$HEADER.="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
$HEADER.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
$HEADER.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$short_header=1;
$MAIN.="<b>"._QXZ("$report_name")."</b> $NWB#carrier_log_report$NWE\n";
$MAIN.="<TABLE CELLPADDING=4 CELLSPACING=0><TR><TD>";
$MAIN.="<FORM ACTION=\"$PHP_SELF\" METHOD=GET name=vicidial_report id=vicidial_report>\n";
$MAIN.="<TABLE BORDER=0 cellspacing=5 cellpadding=5><TR><TD VALIGN=TOP align=center>\n";
@@ -430,6 +430,9 @@ else
$sip_hangup_cause_SQL = preg_replace('/,$/i', '',$sip_hangup_cause_SQL);
if (strlen($sip_hangup_cause_SQL)>0) {$sip_hangup_cause_SQL="and sip_hangup_cause in ($sip_hangup_cause_SQL)";}
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
require("screen_colors.php");
$HEADER.="<HTML>\n";
@@ -444,15 +447,19 @@ $HEADER.="-->\n";
$HEADER.=" </STYLE>\n";
$HEADER.="<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"calendar.css\">\n";
$HEADER.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
$HEADER.="<link rel=\"stylesheet\" href=\"verticalbargraph.css\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"wz_jsgraphics.js\"></script>\n";
$HEADER.="<script language=\"JavaScript\" src=\"line.js\"></script>\n";
$HEADER.="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
$HEADER.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
$HEADER.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$short_header=1;
$MAIN.="<b>"._QXZ("$report_name")."</b> $NWB#dial_log_report$NWE\n";
$MAIN.="<TABLE CELLPADDING=4 CELLSPACING=0><TR><TD>";
$MAIN.="<FORM ACTION=\"$PHP_SELF\" METHOD=GET name=vicidial_report id=vicidial_report>\n";
$MAIN.="<TABLE BORDER=0 cellspacing=5 cellpadding=5><TR><TD VALIGN=TOP align=center>\n";
@@ -369,11 +369,13 @@ $snapshot_span_txt.="</SELECT>\n";
require("screen_colors.php");
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
$HTML_header.="<HTML>\n";
$HTML_header.="<HEAD>\n";
$HTML_header.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HTML_header.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HTML_header.="<STYLE type='text/css'>\n";
$HTML_header.="<!--\n";
$HTML_header.=" .green {color: white; background-color: green}\n";
@@ -399,6 +401,7 @@ $HTML_header.="</script>\n";
$HTML_header.="\n";
$HTML_header.="<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=utf-8'>\n";
$HTML_header.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY $onload BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
$HTML_header.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$HTML_header.="<PRE>\n";
$rpt_header="";
@@ -352,8 +352,8 @@ if (strlen($group_SQL)<3) {$group_SQL="''";}
require("screen_colors.php");
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
$HEADER.="<HTML>\n";
$HEADER.="<HEAD>\n";
@@ -368,12 +368,13 @@ $HEADER.=" </STYLE>\n";
$HEADER.="<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"calendar.css\">\n";
$HEADER.="<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
$HEADER.="<link rel=\"stylesheet\" href=\"verticalbargraph.css\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"wz_jsgraphics.js\"></script>\n";
$HEADER.="<script language=\"JavaScript\" src=\"line.js\"></script>\n";
$HEADER.="<script language=\"JavaScript\" src=\"line.js\"></script>\n";
$HEADER.="<script language=\"JavaScript\">\n";
$HEADER.="function openNewWindow(url)\n";
$HEADER.=" {\n";
@@ -399,6 +400,7 @@ $HEADER.="}\n";
$HEADER.="</script>\n";
$HEADER.="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
$HEADER.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
$HEADER.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$short_header=1;
@@ -569,6 +569,9 @@ $hangup_cause_SQL=preg_replace('/ OR$/', '', $hangup_cause_SQL);
$hangup_cause_SQL = preg_replace('/,$/i', '',$hangup_cause_SQL);
$hangup_cause_SQL = "and ($hangup_cause_SQL)";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
require("screen_colors.php");
if (strlen($hangup_cause_SQL)<7) {$hangup_cause_SQL="";}
@@ -585,6 +588,8 @@ $HEADER.=" .purple {color: white; background-color: purple}\n";
$HEADER.="-->\n";
$HEADER.=" </STYLE>\n";
$HEADER.="<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"calendar.css\">\n";
$HEADER.="<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
$HEADER.="<link rel=\"stylesheet\" href=\"verticalbargraph.css\">\n";
@@ -592,9 +597,11 @@ $HEADER.="<script language=\"JavaScript\" src=\"wz_jsgraphics.js\"></script>\n";
$HEADER.="<script language=\"JavaScript\" src=\"line.js\"></script>\n";
$HEADER.="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
$HEADER.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
$HEADER.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$short_header=1;
$MAIN.="<b>"._QXZ("$report_name")."</b> $NWB#hangup_cause_report$NWE\n";
$MAIN.="<TABLE CELLPADDING=4 CELLSPACING=0><TR><TD>";
$MAIN.="<FORM ACTION=\"$PHP_SELF\" METHOD=GET name=vicidial_report id=vicidial_report>\n";
$MAIN.="<TABLE BORDER=0 cellspacing=5 cellpadding=5><TR><TD VALIGN=TOP align=center>\n";
@@ -449,8 +449,8 @@ while ($i < $times_to_print)
$i++;
}
$NWB = " &nbsp; <a href=\"javascript:openNewWindow('help.php?ADD=99999";
$NWE = "')\"><IMG SRC=\"help.gif\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP></A>";
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
$HEADER.="<HTML>\n";
$HEADER.="<HEAD>\n";
@@ -468,6 +468,8 @@ $HEADER.=" </STYLE>\n";
# }
$HEADER.="<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"calendar.css\">\n";
$HEADER.="<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
require("chart_button.php");
@@ -476,6 +478,7 @@ $HEADER.="<script language=\"JavaScript\" src=\"vicidial_chart_functions.js\"></
$HEADER.="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
$HEADER.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
$HEADER.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$short_header=1;
@@ -260,6 +260,10 @@ while ($i < $servers_to_print)
$groups[$i] =$row[0];
$i++;
}
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
?>
<HTML>
@@ -275,12 +279,19 @@ while ($i < $servers_to_print)
<?php
echo "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
echo "<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
echo "<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0></TITLE>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
echo "<script language=\"JavaScript\" src=\"help.js\"></script>\n";
echo "<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
echo "</head>";
$short_header=1;
require("admin_header.php");
echo "<b>"._QXZ("$report_name")."</b> $NWB#serverperformance$NWE\n";
echo "<TABLE CELLPADDING=4 CELLSPACING=0><TR><TD>";
@@ -224,8 +224,13 @@ if (!isset($RR)) {$RR=4;}
require("screen_colors.php");
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
$HEADER.="<HTML>\n";
$HEADER.="<HEAD>\n";
$HEADER.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HEADER.="<STYLE type=\"text/css\">\n";
$HEADER.="<!--\n";
$HEADER.=" .green {color: white; background-color: green}\n";
@@ -255,6 +260,7 @@ $HEADER.=" </STYLE>\n";
$HEADER.="<META HTTP-EQUIV=Refresh CONTENT=\"$RR; URL=$PHP_SELF?RR=$RR&DB=$DB&adastats=$adastats&types=$types\">\n";
$HEADER.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
$HEADER.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$short_header=1;
@@ -262,7 +268,7 @@ $HEADER.="<TITLE>"._QXZ("$report_name")."</TITLE></HEAD><BODY BGCOLOR=WHITE marg
$MAIN.="<FORM action=$PHP_SELF method=POST><TABLE CELLPADDING=4 CELLSPACING=0><TR><TD>";
$MAIN.="<b>"._QXZ("$report_name")."</b> &nbsp; &nbsp; &nbsp; \n";
$MAIN.="<b>"._QXZ("$report_name")."</b> $NWB#CampaignSUMMARY$NWE &nbsp; \n";
$MAIN.="<a href=\"$PHP_SELF?group=$group&RR=4000&DB=$DB&adastats=$adastats&types=$types\">"._QXZ("STOP")."</a> | ";
$MAIN.="<a href=\"$PHP_SELF?group=$group&RR=40&DB=$DB&adastats=$adastats&types=$types\">"._QXZ("SLOW")."</a> | ";
$MAIN.="<a href=\"$PHP_SELF?group=$group&RR=4&DB=$DB&adastats=$adastats&types=$types\">"._QXZ("GO")."</a> ";
@@ -1518,8 +1518,12 @@ else
echo "<HTML><HEAD>\n";
echo "<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
echo "<script language=\"JavaScript\" src=\"help.js\"></script>\n";
echo "<link rel=\"stylesheet\" href=\"calendar.css\">\n";
echo "<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
echo "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
echo "<TITLE>"._QXZ("ADMINISTRATION").": "._QXZ("$report_name");
if ($ivr_export == 'YES')
@@ -1543,6 +1547,8 @@ else
$lists_color = '#E6E6E6';
$subcamp_color = '#C6C6C6';
##### END Set variables to make header show properly #####
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
require("admin_header.php");
@@ -1551,7 +1557,7 @@ else
echo "<FONT SIZE=3 FACE=\"Arial,Helvetica\"><B>"._QXZ("Export Calls Report");
if ($ivr_export == 'YES')
{echo " "._QXZ("IVR");}
echo "</B></FONT><BR><BR>\n";
echo "</B></FONT> $NWB#call_export_report$NWE<BR><BR>\n";
echo "<FORM ACTION=\"$PHP_SELF\" METHOD=GET name=vicidial_report id=vicidial_report>\n";
echo "<INPUT TYPE=HIDDEN NAME=DB VALUE=\"$DB\">";
echo "<INPUT TYPE=HIDDEN NAME=run_export VALUE=\"1\">";
@@ -1592,17 +1598,17 @@ else
echo "<BR><BR>\n";
echo "<B>"._QXZ("Date Field").":</B><BR>\n";
echo "<B>"._QXZ("Date Field").":</B> $NWB#call_export_report-date_field$NWE<BR>\n";
echo "<select size=1 name=date_field><option selected value=\"call_date\">"._QXZ("Call date")."</option><option value=\"entry_date\">"._QXZ("Entry date")."</option></select>\n";
echo "<BR><BR>\n";
echo "<B>"._QXZ("Header Row").":</B><BR>\n";
echo "<B>"._QXZ("Header Row").":</B> $NWB#call_export_report-header_row$NWE<BR>\n";
echo "<select size=1 name=header_row><option selected value=\"YES\">"._QXZ("YES")."</option><option value=\"NO\">"._QXZ("NO")."</option></select>\n";
echo "<BR><BR>\n";
echo "<B>"._QXZ("Recording Fields").":</B><BR>\n";
echo "<B>"._QXZ("Recording Fields").":</B> $NWB#call_export_report-rec_fields$NWE<BR>\n";
echo "<select size=1 name=rec_fields>";
echo "<option value=\"ID\">"._QXZ("ID")."</option>";
echo "<option value=\"FILENAME\">"._QXZ("FILENAME")."</option>";
@@ -1615,24 +1621,24 @@ else
{
echo "<BR><BR>\n";
echo "<B>"._QXZ("Custom Fields").":</B><BR>\n";
echo "<B>"._QXZ("Custom Fields").":</B> $NWB#call_export_report-custom_fields$NWE<BR>\n";
echo "<select size=1 name=custom_fields><option value=\"YES\">"._QXZ("YES")."</option><option selected value=\"NO\">"._QXZ("NO")."</option></select>\n";
}
echo "<BR><BR>\n";
echo "<B>"._QXZ("Per Call Notes").":</B><BR>\n";
echo "<B>"._QXZ("Per Call Notes").":</B> $NWB#call_export_report-call_notes$NWE<BR>\n";
echo "<select size=1 name=call_notes><option value=\"YES\">"._QXZ("YES")."</option><option selected value=\"NO\">"._QXZ("NO")."</option></select>\n";
echo "<BR><BR>\n";
echo "<B>"._QXZ("Export Fields").":</B><BR>\n";
echo "<B>"._QXZ("Export Fields").":</B> $NWB#call_export_report-export_fields$NWE<BR>\n";
echo "<select size=1 name=export_fields><option selected value=\"STANDARD\">"._QXZ("STANDARD")."</option><option value=\"EXTENDED\">"._QXZ("EXTENDED")."</option><option value=\"EXTENDED_2\">"._QXZ("EXTENDED_2")."</option><option value=\"EXTENDED_3\">"._QXZ("EXTENDED_3")."</option><option value=\"EXTENDED_4\">"._QXZ("EXTENDED_4")."</option><option value=\"ALTERNATE_1\">ALTERNATE_1</option><option value=\"ALTERNATE_2\">ALTERNATE_2</option></select>\n";
if ($archives_available=="Y")
{
echo "<BR><BR><input type='checkbox' name='search_archived_data' value='checked' $search_archived_data><B>"._QXZ("Search archived data")."</B><BR>\n";
echo "<BR><BR><input type='checkbox' name='search_archived_data' value='checked' $search_archived_data><B>"._QXZ("Search archived data")."</B> $NWB#call_export_report-search_archived_data$NWE<BR>\n";
}
### bottom of first column
@@ -614,11 +614,10 @@ if ($file_exported < 1)
echo "<CENTER><BR>\n";
echo "<FONT SIZE=3 FACE=\"Arial,Helvetica\"><B>"._QXZ("Caller ID Log Report");
echo "<FONT SIZE=3 FACE=\"Arial,Helvetica\"><B>"._QXZ("$report_name");
if ($ivr_export == 'YES')
{echo " IVR";}
echo "</B></FONT><BR>\n";
echo "<FONT SIZE=3 FACE=\"Arial,Helvetica\">"._QXZ("This report will provide a breakdown by caller ID of calls from specified campaigns and specified statuses within a date range. Its primary purpose is to show if particular caller IDs have been flagged by carriers as being scam numbers.")."</FONT><BR><BR>\n";
echo "</B></FONT> $NWB#cid_log_report$NWE<BR>\n";
echo "<FORM ACTION=\"$PHP_SELF\" METHOD=GET name=vicidial_report id=vicidial_report>\n";
echo "<INPUT TYPE=HIDDEN NAME=DB VALUE=\"$DB\">";
echo "<INPUT TYPE=HIDDEN NAME=run_export VALUE=\"1\">";
@@ -224,6 +224,9 @@ while ($i < $campaigns_to_print)
$campaign_name[$i] =$row[1];
$i++;
}
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
?>
<HTML>
@@ -239,12 +242,17 @@ while ($i < $campaigns_to_print)
<?php
echo "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
echo "<script language=\"JavaScript\" src=\"help.js\"></script>\n";
echo "<TITLE>"._QXZ("Campaign Debug")."</TITLE></HEAD><BODY BGCOLOR=WHITE marginheight=0 marginwidth=0 leftmargin=0 topmargin=0>\n";
echo "<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
$short_header=1;
require("admin_header.php");
echo "<b>"._QXZ("Campaign Debug")."</b> $NWB#campaign_debug$NWE\n";
echo "<TABLE CELLPADDING=4 CELLSPACING=0><TR><TD>";
echo "<FORM ACTION=\"$PHP_SELF\" METHOD=GET>\n";
echo "<SELECT SIZE=1 NAME=group>\n";
@@ -1,4 +1,4 @@
# version: 20210429163201
# version: 20210605085501
users-user User ID <QXZ>This field is where you put the users ID number, can be up to 8 digits in length, Must be at least 2 characters in length.</QXZ>
users-pass Password <QXZ>This field is where you put the users password. Must be at least 2 characters in length. Only letters and numbers are allowed in user passwords. A medium strength user password will be at least 10 characters in length, and a strong user password will be at least 20 characters in length and have letters as well as at least one number. It is recommended that you use a longer password if possible, stringing together several unrelated words with no spaces, and a number somewhere in the string. The maximum size of a password is 100 characters.</QXZ>
users-force_change_password Force Change Password <QXZ>If this option is set to Y then the user will be prompted to change their password the next time they log in to the administration webpage or the agent screen. Default is N.</QXZ>
@@ -149,7 +149,7 @@ settings-daily_limit_manual Daily Call Limit Manual <QXZ>If the Daily Call Count
campaigns-hopper_drop_run_trigger Hopper Drop-Run Trigger <QXZ>This setting, if activated, will ignore all hopper loading criteria for a single hopper run for this campaign and it will only load the DROP status leads from the active lists for the campaign into the hopper at the highest hopper priority, and once this single hopper run has happened, this setting will reset to N for this campaign and the hopper loading will go back to normal for the next minute when it runs. This process will also update any DROPs already in the hopper to the highest hopper priority if they are not already there. If the -All Drops- checkbox is checked, then any status with -DROP- in the status or status name will be selected, including all system statuses and campaign statuses whether they are for outbound or inbound calls. WARNING, when this runs it will not check to see if the lists have been reset, so you may be calling back DROP leads that were recently called. However, if the Drop Lockout Time has been enabled, that setting will be honored. Default is N, unselected, for inactive.</QXZ>
campaigns-drop_lockout_time Drop Lockout Time <QXZ>This is a number of hours that DROP abandon calls will be prevented from being dialed, to disable set to 0. This setting is very useful in countries like the UK where there are regulations preventing the attempted calling of customers within 72 hours of an Abandon, or DROP. Default is 0.</QXZ>
campaigns-force_reset_hopper Force Reset of Hopper <QXZ>This allows you to wipe out the hopper contents upon form submission. It should be filled again when the VDhopper script runs.</QXZ>
campaigns-dial_method Dial Method <QXZ>This field is the way to define how dialing is to take place. If MANUAL then the auto_dial_level will be locked at 0 unless Dial Method is changed. If RATIO then the normal dialing a number of lines for Active agents. ADAPT_HARD_LIMIT will dial predictively up to the dropped percentage and then not allow aggressive dialing once the drop limit is reached until the percentage goes down again. ADAPT_TAPERED allows for running over the dropped percentage in the first half of the shift -as defined by call_time selected for campaign- and gets more strict as the shift goes on. ADAPT_AVERAGE tries to maintain an average or the dropped percentage not imposing hard limits as aggressively as the other two methods. You cannot change the Auto Dial Level if you are in any of the ADAPT dial methods. Only the Dialer can change the dial level when in predictive dialing mode. INBOUND_MAN allows the agent to place manual dial calls from a campaign list while being able to take inbound calls between manual dial calls.</QXZ>
campaigns-dial_method Dial Method <QXZ>This field is the way to define how dialing is to take place. If MANUAL then the auto_dial_level will be locked at 0 unless Dial Method is changed. If RATIO then the normal dialing a number of lines for Active agents. ADAPT_HARD_LIMIT will dial predictively up to the dropped percentage and then not allow aggressive dialing once the drop limit is reached until the percentage goes down again. ADAPT_TAPERED allows for running over the dropped percentage in the beginning of the shift -as defined by Latest Server Time set for campaign- and gets more strict as the shift goes on, for example, if there are 10 hours or more left in the shift, the TAPERED feature will not affect the adaptive dial level at all, as the number of hours left in the shift drops below 10 hours and gets closer to 0, the dial level will be dropped closer and closer to 1.0 as time goes on. ADAPT_AVERAGE tries to maintain an average or the dropped percentage not imposing hard limits as aggressively as the other two methods. You cannot change the Auto Dial Level if you are in any of the ADAPT dial methods. Only the Dialer can change the dial level when in predictive dialing mode. INBOUND_MAN allows the agent to place manual dial calls from a campaign list while being able to take inbound calls between manual dial calls.</QXZ>
campaigns-auto_dial_level Auto Dial Level <QXZ>This is where you set how many lines the system should use per active agent. zero 0 means auto dialing is off and the agents will click to dial each number. Otherwise the system will keep dialing lines equal to active agents multiplied by the dial level to arrive at how many lines this campaign on each server should allow. The ADAPT OVERRIDE checkbox allows you to force a new dial level even though the dial method is in an ADAPT mode. This is useful if there is a dramatic shift in the quality of leads and you want to drastically change the dial_level manually.</QXZ>
campaigns-dial_level_threshold Auto Dial Level Threshold <QXZ>This setting only works with an ADAPT or RATIO Dial Method, and it must be set to something other than DISABLED and the number of agents setting must be above 0. This feature allows you to set a minimum number agents that predictive algorithm will work at. If the number of agents falls below the number that you have set, then the dial level will go to 1.0 until more agents log in or go into the selected state. LOGGED-IN_AGENTS will count all agents logged into the campaign, NON-PAUSED_AGENTS will only count agents that are waiting or talking, and WAITING_AGENTS will only count agents that are waiting for a call. Default is DISABLED.</QXZ>
campaigns-available_only_ratio_tally Available Only Tally <QXZ>This field if set to Y will leave out INCALL and QUEUE status agents when calculating the number of calls to dial when not in MANUAL dial mode. Default is N.</QXZ>
@@ -1292,13 +1292,20 @@ single_agent_time Single Agent Daily Time <QXZ>This report is similar to the Age
usergroup_login User Group Login Report <QXZ>This report includes information on all of the users within a user group related to agent screen activity.</QXZ><BR><QXZ><U>FIRST LOGIN DATE</U> = The earliest date this user logged in to the agent screen.</QXZ><BR><QXZ><U>LAST LOGIN DATE</U> = The most recent date this user logged in to the agent screen.</QXZ><BR><QXZ><U>CAMPAIGN</U> = The most recent campaign this user was logged in to.</QXZ><BR><QXZ><U>SERVER IP</U> = The most recent server this user logged in to.</QXZ><BR><QXZ><U>COMPUTER IP</U> = The most recent computer this user used to log in to the agent screen.</QXZ><BR><QXZ><U>EXTENSION</U> = The most recent phone this user used to log in to the agent screen.</QXZ><BR><QXZ><U>BROWSER</U> = The most recent web browser version this user used to log in to the agent screen.</QXZ><BR><QXZ><U>PHONE LOGIN</U> = The most recent phone login this user used to log in to the agent screen.</QXZ><BR><QXZ><U>SERVER PHONE</U> = The most recent server phone account this user was logged in through.</QXZ><BR><QXZ><U>PHONE IP</U> = The IP address of the phone during the most recent agent screen session.</QXZ>
agent_timeclock_detail User Timeclock Detail Report <QXZ>Pulls all timeclock records for agents meeting the selected parameters.</QXZ><BR><QXZ><U>TIME CLOCK</U> = Total amount of time agent spent logged in.</QXZ><BR><QXZ><U>TIME CLOCK PUNCHES</U> = A list of the punch-in and punch-out times for each agent. Punch-out times marked with an asterisk (*) denotes AUTOLOGOUT from timeclock.</QXZ>
campaign_status_list_report Campaign Status List Report <QXZ>This report is designed to show the breakdown by list_id of the calls and their statuses for all lists within a campaign for a set time period.</QXZ><BR><QXZ><U>DISPOSITION</U> = The distinct dispositions made for the list within the time frame specified.</QXZ><BR><QXZ><U>CALLS</U> = The number of calls ending with the disposition listed.</QXZ><BR><QXZ><U>DURATION</U> = Sum of the length of the calls ending with the disposition listed.</QXZ><BR><QXZ><U>HANDLE TIME</U> = Sum of the time the calls ending with the disposition listed were handled by an agent (<U>TALK</U> + <U>DEAD</U>).</QXZ><BR><BR><QXZ><U>TOTAL CALLS</U> = Number of calls placed to leads belonging to lists in this campaign within the time frame specified.</QXZ><BR><QXZ><U>STATUS FLAGS BREAKDOWN</U> = Breakdown of the total calls into status categories, including counts per category and percentage relative to the number of calls to leads in the list within the time frame specified.</QXZ>
campaign_debug Campaign Debug <QXZ>Shows campaign stats and debug output for a selected campaign.</QXZ>
carrier_log_report Carrier Log Report <QXZ>This report will show dial status breakdowns, SIP error reason breakdowns, and carrier log records for a selected date, and can be filtered by server.</QXZ>
cid_log_report Caller ID Log Report <QXZ>This report will provide a breakdown by caller ID of calls from specified campaigns and specified statuses within a date range. Its primary purpose is to show if particular caller IDs have been flagged by carriers as being scam numbers.</QXZ>
dial_log_report Dial Log Report <QXZ>This report will show individial dial log records for a single date, allowing filtering by server and SIP code.</QXZ>
hangup_cause_report Hangup Cause Report <QXZ>This report will show dial status breakdowns and individual carrier log records for a given date, with options to filter by server, hangup cause, dial status, and SIP response.</QXZ>
source_vlc_status_report Outbound Lead Source Report <QXZ>This report is designed to show the breakdown by either vendor_lead_code or source_id, choice of the user, of the calls and their statuses for all lists within a campaign for a set time period</QXZ>
CampaignSUMMARY Real-Time Campaign Summary <QXZ>The report shows condensed live statistics for all campaigns currently in the dialer.</QXZ>
CLOSER_service_level Inbound Service Level Report <QXZ>This report is designed to give a daily breakdown of the number of calls, holds, and drop within the specified date range for the selected inbound group.</QXZ><BR><QXZ><U>DROPS</U> = The number of dropped calls to the inbound group within the time frame specified for that time interval.</QXZ><BR><QXZ><U>DROP %</U> = The percentage of calls ending in DROPS.</QXZ><BR><QXZ><U>AVG DROP(S)</U> = Average length in seconds of the calls ending in DROPS.</QXZ><BR><QXZ><U>HOLDS</U> = The number of calls to the inbound group that were held in queue for that time interval.</QXZ><BR><QXZ><U>HOLD %</U> = The percentage of calls that went to queue relative to the total calls.</QXZ><BR><QXZ><U>AVG HOLD(S) HOLD</U> = Average length in seconds of the queue time for only the calls in queue.</QXZ><BR><QXZ><U>AVG HOLD(S) TOTAL</U> = Average length in seconds of the queue time for ALL calls for the time interval.</QXZ><BR><QXZ><U>CALLS</U> = Number of calls received by the ingroup within the time interval.</QXZ><BR><QXZ><U>TOTAL CALLTIME MIN:SEC</U> = Total length of all calls received.</QXZ><BR><QXZ><U>AVG CALLTIME SECONDS</U> = Average length of all calls received.</QXZ>
CLOSERstats Inbound Report (by DID) <QXZ>This report is designed to give several different statistical breakdowns of calls received within the specified time frame, by either ingroup or by DID (refer to the title of the report).</QXZ><BR><QXZ><B>MULTI-GROUP BREAKDOWN</B></QXZ><BR><QXZ><U>CALLS</U> = The number of calls to the inbound groups or DIDs within the time frame specified for that time interval.</QXZ><BR><QXZ><U>DROPS</U> = The number of dropped calls to the inbound groups or DIDs within the time frame specified for that time interval.</QXZ><BR><QXZ><U>DROP %</U> = The percentage of calls ending in DROPS.</QXZ><BR><QXZ><U>IVR</U> = The number of calls to the inbound group or DID that went to an IVR within the time frame specified for that time interval.</QXZ><BR><QXZ><B>CALL HANGUP REASON STATS</B></QXZ><BR><QXZ><U>HANGUP REASON</U> = The reason the call terminated.</QXZ><BR><QXZ><U>HOLDS</U> = The number of calls terminated from the aforementioned reason.</QXZ><BR><QXZ><B>CALL STATUS STATS</B></QXZ><BR><QXZ><U>STATUS</U> = The call disposition.</QXZ><BR><QXZ><U>DESCRIPTION</U> = A description of the call disposition.</QXZ><BR><QXZ><U>CATEGORY</U> = The call category that the disposition currently belongs to.</QXZ><BR><QXZ><U>CALLS</U> = The number of calls taken by the ingroups or DIDs that were dispositioned as the listed disposition.</QXZ><BR><QXZ><U>TOTAL TIME</U> = The total amount of time that was spent on calls that ended as the listed disposition.</QXZ><BR><QXZ><U>AVG TIME</U> = The average amount of time that was spent on calls that ended as the listed disposition.</QXZ><BR><QXZ><U>CALLS /HOUR</U> = The number of calls per hour to the ingroups or DIDs that ended as the listed disposition.</QXZ><BR><QXZ><B>CUSTOM STATUS CATEGORY STATS</B></QXZ><BR><QXZ><U>CATEGORY</U> = The custom call category that a call was dispositioned under the selected report parameters.</QXZ><BR><QXZ><U>CALLS</U> = The number of calls dispositioned under the custom status category.</QXZ><BR><QXZ><U>DESCRIPTION</U> = A description of the custom call category.</QXZ><BR><QXZ><B>AGENT STATS</B></QXZ><BR><QXZ><U>AGENT</U> = The agent who received a call to the specified inbound groups or DIDs.</QXZ><BR><QXZ><U>CALLS</U> = The number of calls fielded by the agent.</QXZ><BR><QXZ><U>DESCRIPTION</U> = The total time the agent spent in calls to the specified inbound groups or DIDs.</QXZ><BR><QXZ><U>DESCRIPTION</U> = The average time the agent spent in calls to the specified inbound groups or DIDs.</QXZ>
CLOSERstats_v2 Inbound Report (by DID), v2 <QXZ>This report is designed to give several different statistical breakdowns of calls received within the specified time frame, by either ingroup or by DID (refer to the title of the report).</QXZ><BR><QXZ><B>MULTI-GROUP BREAKDOWN</B></QXZ><BR><QXZ><U>CALLS</U> = The number of calls to the inbound groups or DIDs within the time frame specified for that time interval.</QXZ><BR><QXZ><U>DROPS</U> = The number of dropped calls to the inbound groups or DIDs within the time frame specified for that time interval.</QXZ><BR><QXZ><U>DROP %</U> = The percentage of calls ending in DROPS.</QXZ><BR><QXZ><U>IVR</U> = The number of calls to the inbound group or DID that went to an IVR within the time frame specified for that time interval.</QXZ><BR><QXZ><B>CALL HANGUP REASON STATS</B></QXZ><BR><QXZ><U>HANGUP REASON</U> = The reason the call terminated.</QXZ><BR><QXZ><U>HOLDS</U> = The number of calls terminated from the aforementioned reason.</QXZ><BR><QXZ><B>CALL STATUS STATS</B></QXZ><BR><QXZ><U>STATUS</U> = The call disposition.</QXZ><BR><QXZ><U>DESCRIPTION</U> = A description of the call disposition.</QXZ><BR><QXZ><U>CATEGORY</U> = The call category that the disposition currently belongs to.</QXZ><BR><QXZ><U>CALLS</U> = The number of calls taken by the ingroups or DIDs that were dispositioned as the listed disposition.</QXZ><BR><QXZ><U>TOTAL TIME</U> = The total amount of time that was spent on calls that ended as the listed disposition.</QXZ><BR><QXZ><U>AVG TIME</U> = The average amount of time that was spent on calls that ended as the listed disposition.</QXZ><BR><QXZ><U>CALLS /HOUR</U> = The number of calls per hour to the ingroups or DIDs that ended as the listed disposition.</QXZ><BR><QXZ><B>CUSTOM STATUS CATEGORY STATS</B></QXZ><BR><QXZ><U>CATEGORY</U> = The custom call category that a call was dispositioned under the selected report parameters.</QXZ><BR><QXZ><U>CALLS</U> = The number of calls dispositioned under the custom status category.</QXZ><BR><QXZ><U>DESCRIPTION</U> = A description of the custom call category.</QXZ><BR><QXZ><B>AGENT STATS</B></QXZ><BR><QXZ><U>AGENT</U> = The agent who received a call to the specified inbound groups or DIDs.</QXZ><BR><QXZ><U>CALLS</U> = The number of calls fielded by the agent.</QXZ><BR><QXZ><U>TIME H:M:S</U> = The total time the agent spent in calls to the specified inbound groups or DIDs.</QXZ><BR><QXZ><U>AVERAGE</U> = The average time the agent spent in calls to the specified inbound groups or DIDs.</QXZ>
CLOSERsummary_hourly Inbound Summary Hourly Report <QXZ>This report is designed to give several different statistical breakdowns of calls received within the specified time frame, by either ingroup or by DID (refer to the title of the report).</QXZ><BR><QXZ><U>TOTAL CALLS</U> = Total calls taken by the in-group.</QXZ><BR><QXZ><U>TOTAL ANSWER</U> = Total calls answered by the in-group.</QXZ><BR><QXZ><U>TOTAL TALK</U> = Total amount of time spent in calls answered by the in-group.</QXZ><BR><QXZ><U>AVERAGE TALK</U> = Average amount of time spent in calls answered by the in-group.</QXZ><BR><QXZ><U>TOTAL QUEUE TIME</U> = Total amount of time calls handled by the in-group spent in queue.</QXZ><BR><QXZ><U>TOTAL QUEUE TIME</U> = Average amount of time calls handled by the in-group spent in queue.</QXZ><BR><QXZ><U>MAXIMUM QUEUE TIME</U> = The longest amount of time any single call handled by the in-group spent in queue.</QXZ><BR><QXZ><U>TOTAL ABANDON CALLS</U> = The number of calls to the in-group that were unanswered and abandoned by the caller.</QXZ>
dialer_inventory_report Dialer Inventory Report <QXZ>This report gives statistical information, including a status breakdown, of a single list or all lists in a single campaign.</QXZ><BR><QXZ><U>Start Inv</U> = Total leads currently in list.</QXZ><BR><QXZ><U>Call Inv Total</U> = Total leads currently dialable in list based on the campaign settings it belongs to.</QXZ><BR><QXZ><U>Call Inv No filtr</U> = Total leads currently dialable in list based on the campaign settings EXCLUDING any filters.</QXZ><BR><QXZ><U>Call Inv One-off</U> = Total leads currently dialable in list based on the campaign settings that are at least one dial attempt below the call count limit.</QXZ><BR><QXZ><U>Call Inv Inactive</U> = Total leads currently in list that belong to INCOMPLETE statuses that are NOT currently selected as dialable for the campaign.</QXZ><BR><QXZ><U>Dial Avg</U> = Total calls made on the list divided by the <U>Start Inv</U> of that list.</QXZ><BR><QXZ><U>Pen. pct</U> = Percentage of leads in the list that are no longer dialable, Start Inv - Call Inv Total divided-by Start Inv.</QXZ>
DIDstats Inbound DID Report <QXZ>This report breaks down activity for a DID or a list of DIDs over a given time interval.</QXZ><BR><QXZ><U>ROUTE</U> = Where the DID is currently directed when a call reaches it.</QXZ><BR><QXZ><U>CALLS</U> = Number of calls the DIDs/servers/time frames (depending on which sub-report you are viewing) received during the specific date range.</QXZ>
DIDstats Inbound DID Report <QXZ>This report breaks down activity for a DID or a list of DIDs over a given time interval.</QXZ><BR><BR><QXZ><U>CURRENT ROUTE</U> = Where the DID is currently directed when a call reaches it.</QXZ><BR><BR><QXZ><U>CALLS</U> = Number of calls the DIDs/servers/time frames (depending on which sub-report you are viewing) received during the specific date range.</QXZ><BR><BR><QXZ><U>LOST</U> = Number of calls that were supposed to be routed to an INGROUP/AGENT/CALLMENU but do not show log records in the appropriate log tables, suggesting the caller hung up.</QXZ><BR><BR><QXZ><U>TRANSFERS</U> = Number of calls sent to PHONE/VOICEMAIL/EXTEN during the specific date range.</QXZ><BR><BR><QXZ><U>ROUTED</U> = Number of calls sent to INGROUP/AGENT/CALLMENU with corresponding log records showing outcome.</QXZ>
DIDsummary Inbound DID Summary Report <QXZ>This report breaks down activity for a DID or a list of DIDs over a given time interval.</QXZ><BR><BR><QXZ><U>CALLS</U> = Number of calls the DIDs/servers/time frames (depending on which sub-report you are viewing) received during the specific date range.</QXZ><BR><BR><QXZ><U>MINUTES</U> = Cumulative length of time of all calls made to the DID.<QXZ><BR><BR><QXZ><U>ROUTE</U> = Where the DID is currently directed when a call reaches it.</QXZ>
agentDIDstats Agent DID Report <QXZ>This report breaks down agent call handling activity for a DID or a group of DIDs over a given time interval. The results will show the number of calls handled for each agent per day and per week, with column breakdowns for each DID using the DID name for the column header.</QXZ>
email_log_report Email Log Report <QXZ>This report gives a detailed log report of any emails handled by the dialer, including links to the full text of received emails. It will display the date the email was received, the address and name of the sender, a bit of the beginning of the emails text (with a link to the full text), and the status that the agent dispositioned the email as.</QXZ>
inbound_daily_report Inbound Daily Report <QXZ>This report will give a daily or hourly, weekly, monthly, and quarterly count on all calls received by the in-groups selected for the given date range.</QXZ><BR><QXZ><U>TOTAL CALLS OFFERED</U> = Total calls taken by the in-group.</QXZ><BR><QXZ><U>TOTAL CALLS ANSWERED</U> = Total calls answered by the in-group.</QXZ><BR><QXZ><U>TOTAL AGENTS ANSWERED</U> = Total number of distinct agents who fielded calls to this in-group.</QXZ><BR><QXZ><U>TOTAL CALLS ABANDONED</U> = Total calls ended in queue (dropped).</QXZ><BR><QXZ><U>TOTAL ABANDON PERCENT</U> = Percentage of calls abandoned (<U>TOTAL CALLS ABANDONED</U> / <U>TOTAL CALLS OFFERED</U>).</QXZ><BR><QXZ><U>AVG ABANDON TIME</U> = Average amount of time a caller waited in queue before abandoning the call.</QXZ><BR><QXZ><U>AVG ANSWER SPEED</U> = Average amount of time a caller waited in queue before an agent answered.</QXZ><BR><QXZ><U>AVG TALK TIME</U> = Average amount of time an agent remained on the line with the caller before the call was hung up - does not include caller queue time.</QXZ><BR><QXZ><U>TOTAL TALK TIME</U> = Total amount of time agents remained on the line with callers before calls ended - does not include caller queue time.</QXZ><BR><QXZ><U>TOTAL WRAP TIME</U> = Total amount of time agents used to -wrap- the call - assumed to be 15 second per answered call.</QXZ><BR><QXZ><U>TOTAL CALL TIME</U> = Total talk time plus total wrap time.</QXZ>
@@ -1319,9 +1326,11 @@ rt_whiteboard_report-report_type Report Type <QXZ>The type of report to display.
rt_whiteboard_report-parameters User Groups,In-groups,Campaigns,Users,DIDs,Status flags <QXZ>Parameters that may or may not be required based on the type of report run. Available options are dependent on the user permissions. Additionally, selecting specific campaigns combined with selecting -ALL- for ingroups will restrict the -ALL- selection to only ingroups for the selected campaigns. Specific campaign selection will also limit the statuses counted if any status flags are selected.</QXZ>
rt_whiteboard_report-target_per_unit Target per unit <QXZ>The target number of sales per -unit-, which refers to users,user groups,ingroups,DIDs,etc depending on the report type selected, displayed as a horizontal line. | unit-, which refers to users,user groups,ingroups,DIDs,etc depending on the report type selected, displayed as a horizontal line.</QXZ>
rt_whiteboard_report-target_gross_sales Target gross sales <QXZ>The target number of total sales for ticker reports, displayed as a horizontal line.</QXZ>
user_group_hourly_detail User Group Hourly Report <QXZ>Gives hourly count of distinct agents per user group, with totals. For single days only.</QXZ>
rt_whiteboard_report-start_date Start date/time <QXZ>If filled out, the starting date and time that the report will use up through the current date and time when compiling the report.</QXZ>
rt_whiteboard_report-show_results Show results for the past X hours <QXZ>If filled out and the start date-time is NOT filled out, the selected report will compile data starting at the time X hours ago up through the current time, which makes it a dynamic starting time as opposed to the set date-time used in the previous parameter.</QXZ>
timeclockstatusreport Timeclock Status Report <QXZ>Shows timeclock status of users belonging to a selected user group.</QXZ>
user_group_hourly_detail User Group Hourly Report <QXZ>Gives hourly count of distinct agents per user group, with totals. For single days only.</QXZ>
usertimeclockreport User Timeclock Report <QXZ>Gives the total hours agents logged in the dialer timeclock, with totals. Can be filtered by user group/user/date range and sorted.</QXZ>
api_log_report API Log report <QXZ>This report shows all records in the API logging table that meet the report criteria. Reports can be run by date range that the API was accessed, the user, agent user, the API function called, and the API result. The report can also be run to include the actual URL of the API that was called and the IP address the request came from.</QXZ><BR><BR><QXZ>Additionally, if this extended version of the report is run, the variables used in the API call can be listed separately if the user creates a system container in the System Containers settings by the name of API_LOG_URL_COLUMNS <B>(name must be exact)</B>. In this container, variable names are listed individually per line, and each listed variable is given it's own column in the detailed URL report.</QXZ>
sip_event_report SIP Event Report <QXZ>This report is only useful if you have enabled SIP Event Logging on your system(see the SIP Event Logging description in the Campaigns section in this manual for more information). This report will allow you to sort the SIP-messages for calls by several criteria. This report was used during the development of the campaign SIP Actions feature to help determine what calls were False Answer Supervision, by sorting the Ring-Time UP and DOWN.</QXZ>
quality_control_report Quality Control Report <QXZ>This report shows quality control call activity within user-selected parameters. If displayed as HTML, it will output each individual call with a header row that shows things like the call date, agent, campaign, call status, QC scorecard and QC result. Underneath that, each checkpoint in the scorecard applied to call will be displayed as individual rows with scores and comments per checkpoint. The report can also be downloaded as a CSV where each call will be a row in the resulting file with the checkpoint data appended toe ach row.</QXZ><BR><BR><QXZ><U>CALL DATE</U> = The date range in which the call was originally made.</QXZ><BR><QXZ><U>FINISH DATE</U> = The date the QC agent who evaluated the call marked it as finished. This will automatically filter out unfinished calls if this is used, regardless of what QC statuses (see below) are selected.</QXZ><BR><QXZ><U>CAMPAIGNS</U> = The campaign the original call was made under.</QXZ><BR><QXZ><U>QC STATUS</U> = The current status of the call in the quality control system - this is NOT the call status from dialing.</QXZ><BR><QXZ><U>USERS</U> = The agent(s) who placed the original calls.</QXZ><BR><QXZ><U>QC AGENTS</U> = The agents who evaluated the call in the quality control system.</QXZ><BR><QXZ><U>SHOW %s</U> = If this box is checked, the scores given by the QC agents will be displayed as percentages instead of points.</QXZ><BR><QXZ><U>SEARCH ARCHIVED DATA</U> = If this is checked, the archived quality control log tables will be searched if they exist.</QXZ>
@@ -1402,6 +1411,18 @@ USERADD User Bulk Copy <QXZ>This will copy a sequential number of users beginnin
USERDELETE User Bulk Delete <QXZ>This will delete the selected users from your system. For obvious reasons, you cannot delete the user you are logged in as. You can also not delete any users that are actively logged in as agents.</QXZ>
ACCIDADD AC-CID Bulk Add <QXZ>This allows you to paste in a listing of CIDs to insert into a campaign AC-CID list or CID Group list. There are three methods to choose from: <ul> <li><b>STATE LOOKUP</b> - This will take a list of CIDs and insert them as Area Code Caller IDs into the selected campaign. The area code lookup is designed to work only with numbers in the North American Numbering Plan as it uses the first three digits of each CID. The description will automatically be filled with the appropriate US state abbreviation corresponding to the given CIDs 3-digit area code. <li><b>CSV</b> - This will take a comma separated list in the format of NPA,CID,DESCRIPTION,ACTIVE and insert each line into the specified campaigns AC-CID list using the supplied values. For example, given a listing of 813,7271234567,Florida,Y will result in an AC-CID entry for area code 813 using the CID 7271234567 and a description of -Florida- with the status being active. Descriptions are limited to 50 characters. For CID Groups of a STATE type, use this format for CSV- STATE,CID,DESCRIPTION,ACTIVE. The -ACTIVE- column will only be used if the Active select list above is set to -Input-.<li><b>STATE FILL</b> - Similar to the STATE LOOKUP method above, this will take a list of CIDs and insert them as AC-CIDs in the specified campaign but will also make an entry for each area code in a state based off the state the CID is in. For example, if given the CID 7271234567, 19 CID entries will be created with the same CID, one each for every area code in Florida. If you are inserting into a CID Group that is a STATE type, then you will not want to use the STATE FILL method.</ul> CIDs must be between 6 and 20 digits in length and only digits 0-9 are allowed. Optionally, you can have the AC-CIDs set to active upon insertion.</QXZ>
ACCIDDELETE AC-CID Bulk Delete <QXZ>This will delete the Areacode Caller ID entries you select from the next screen based on the campaign or CID group you select here. Setting Clear All CIDs to YES will bypass the AC-CID selection and wipe all AC-CIDs for the selected campaign or CID group.</QXZ>
call_export_report Call Export Report <QXZ>This report is for the downloading of leads and their vicidial_log and/or vicidial_closer_log information by status, list_id and date range. Report downloads to a flat text file that is tab delimited.</QXZ>
call_export_report-date_field Date Field <QXZ>This option will determine if the data exported will be by call log date or the entry date of when the lead was added to the system.</QXZ>
call_export_report-header_row Header Row <QXZ>If enabled, the first line in the exported data file will be a list of the headers for the data in the file.</QXZ>
call_export_report-rec_fields Recording Fields <QXZ>If enabled, the recordings for the latest phone call for the selected leads will be included in the export. If there is more than one recording, they will be pipe-delimited.</QXZ>
call_export_report-custom_fields Custom Fields <QXZ>If Custom List Fields is enabled on your system, and the leads you are exporting have custom fields values stored in the database, they will be included in the export.</QXZ>
call_export_report-call_notes Per Call Notes <QXZ>If enabled at the campaign level, any Per Call Notes for the latest phone calls for the selected leads will be included in the export.</QXZ>
call_export_report-did_filter Use DID Filter <QXZ>If enabled, this will only affect selection of leads from inbound calls, and will allow you to have only the leads that have inbound calls that arrived through the selected Inbound DIDs.</QXZ>
call_export_report-vlc_filter VLC Filter <QXZ>If enabled, you will be able to have only the leads with the vendor_lead_code values you have selected be exported. We do not recommend using this option if you have unique VLC values for most of your leads.</QXZ>
call_export_report-export_fields Export Fields <QXZ>STANDARD will include all of the lead fields that agents normally have access to, EXTENDED will include the following extra lead fields: entry_date, called_count, last_local_call_time, modify_date, called_since_last_reset. NOTE: If you have selected to use Entry Date or DID Filtering, EXTENDED will be automaticaly used.</QXZ>
call_export_report-exclude_call_log_data Exclude Call Log Data <QXZ>If you only want to export lead data, and no log or user information associated with the leads, then set this option to YES, change the -Date Field- to Entry Date and select -Lists-, -Statuses- and a -Campaign-, even though the Campaign will be ignored.</QXZ>
call_export_report-search_archived_data Search Archived Data <QXZ>If you want to pull data from older leads and-or call logs that have been archived on your system, then you can select either or both of those options here.</QXZ>
lead_export_report Lead Export Report <QXZ>This report allows downloading of leads and their latest vicidial_log and/or vicidial_closer_log information by status, list_id and date range. It downloads to a flat text file that is tab delimited.</QXZ>
lead_export_report-date_field Date Field <QXZ>This option will determine if the data exported will be by call log date or the entry date of when the lead was added to the system.</QXZ>
lead_export_report-header_row Header Row <QXZ>If enabled, the first line in the exported data file will be a list of the headers for the data in the file.</QXZ>
lead_export_report-rec_fields Recording Fields <QXZ>If enabled, the recordings for the latest phone call for the selected leads will be included in the export. If there is more than one recording, they will be pipe-delimited.</QXZ>
@@ -1436,6 +1436,7 @@ else
echo "<HTML><HEAD>\n";
echo "<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
echo "<script language=\"JavaScript\" src=\"help.js\"></script>\n";
echo "<link rel=\"stylesheet\" href=\"calendar.css\">\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
@@ -1469,7 +1470,7 @@ else
require("admin_header.php");
echo "<CENTER><BR>\n";
echo "<FONT SIZE=3 FACE=\"Arial,Helvetica\"><B>"._QXZ("Export Leads Report")."</B></FONT><BR>\n";
echo "<FONT SIZE=3 FACE=\"Arial,Helvetica\"><B>"._QXZ("Export Leads Report")."</B></FONT> $NWB#lead_export_report$NWE<BR>\n";
echo "<FONT SIZE=2 FACE=\"Arial,Helvetica\">"._QXZ("This report pulls lead information for calls dialed in the selected date range. A lead is only exported once no matter how many calls were handled. The current lead status is used.")."</FONT><BR><BR>\n";
echo "<FORM ACTION=\"$PHP_SELF\" METHOD=GET name=vicidial_report id=vicidial_report>\n";
echo "<INPUT TYPE=HIDDEN NAME=DB VALUE=\"$DB\">";
@@ -1514,7 +1515,6 @@ else
echo "<B>"._QXZ("Date Field").":</B> $NWB#lead_export_report-date_field$NWE<BR>\n";
echo "<select size=1 name=date_field><option selected value=\"call_date\">"._QXZ("Call date")."</option><option value=\"entry_date\">"._QXZ("Entry date")."</option></select>\n";
echo "<BR><BR>\n";
echo "<B>"._QXZ("Header Row").":</B> $NWB#lead_export_report-header_row$NWE<BR>\n";
@@ -422,7 +422,7 @@ if ($claim_QC && $auth==1)
}
if (!$qc_scorecard_id)
{
echo _QXZ("Can't claim this - no QC scorecard found")."\n";
echo _QXZ("Cannot claim this - no QC scorecard found")."\n";
exit;
}
@@ -458,7 +458,7 @@ if ($claim_QC && $auth==1)
}
else
{
echo _QXZ("Can't claim this - there's no QC display method")."\n";
echo _QXZ("Cannot claim this - there is no QC display method")."\n";
exit;
}
@@ -371,6 +371,8 @@ if ( ($SSweb_logo!='default_new') and ($SSweb_logo!='default_old') )
}
}
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
##### START HTML #####
@@ -408,6 +410,8 @@ $HEADER.="-->\n";
$HEADER.="</style>\n";
$HEADER.="<script language=\"JavaScript\" src=\"calendar_db.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"calendar.css\">\n";
$HEADER.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HEADER.="<link rel=\"stylesheet\" href=\"horizontalbargraph.css\">\n";
require("chart_button.php");
$HEADER.="<script src='chart/Chart.js'></script>\n";
@@ -418,6 +422,7 @@ $HEADER.="<TITLE>\n";
$HEADER.= _QXZ("$report_name");
$HEADER.="</TITLE>\n";
$HEADER.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
##### BEGIN Set variables to make header show properly #####
$ADD = '311111';
@@ -469,10 +474,11 @@ if ($DB > 0)
$MAIN.="<BR>\n";
}
$MAIN.="<font class=\"select_bold\">"._QXZ("$report_name")."</font> $NWB#usertimeclockreport$NWE\n<BR><BR>";
$MAIN.="<CENTER>\n";
$MAIN.="<FORM ACTION=\"$PHP_SELF\" METHOD=GET name=vicidial_report id=vicidial_report>\n";
$MAIN.="<INPUT TYPE=HIDDEN NAME=DB VALUE=\"$DB\">";
$MAIN.="<TABLE BORDER=0 CELLSPACING=6><TR><TD ALIGN=LEFT VALIGN=TOP>\n";
$MAIN.="<TABLE BORDER=0 CELLSPACING=4><TR><TD ALIGN=LEFT VALIGN=TOP nowrap>\n";
$MAIN.="<font class=\"select_bold\"><B>"._QXZ("Date Range").":</B></font><BR><CENTER>\n";
$MAIN.="<INPUT TYPE=TEXT NAME=query_date SIZE=10 MAXLENGTH=10 VALUE=\"$query_date\">";
@@ -502,7 +508,7 @@ $MAIN.="o_cal.a_tpl.yearscroll = false;\n";
$MAIN.="// o_cal.a_tpl.weekstart = 1; // Monday week start\n";
$MAIN.="</script>\n";
$MAIN.="</TD><TD ALIGN=LEFT VALIGN=TOP>\n";
$MAIN.="</TD><TD ALIGN=LEFT VALIGN=TOP nowrap>\n";
$MAIN.="<font class=\"select_bold\"><B>"._QXZ("User Groups").":</B></font><BR><CENTER>\n";
$MAIN.="<SELECT SIZE=5 NAME=user_group[] multiple>\n";
$o=0;
@@ -516,7 +522,7 @@ $MAIN.="<SELECT SIZE=5 NAME=user_group[] multiple>\n";
}
$MAIN.="</SELECT>\n";
$MAIN.="</TD></TD><TD ALIGN=LEFT VALIGN=TOP><font class=\"select_bold\">";
$MAIN.="</TD></TD><TD ALIGN=LEFT VALIGN=TOP nowrap><font class=\"select_bold\">";
$MAIN.=_QXZ("Display as").":<BR>";
$MAIN.="<select name='report_display_type'>";
if ($report_display_type) {$MAIN.="<option value='$report_display_type' selected>"._QXZ("$report_display_type")."</option>";}
@@ -544,8 +550,8 @@ $MAIN.="<INPUT TYPE=text NAME=user SIZE=7 MAXLENGTH=20 VALUE=\"$user\">\n";
$MAIN.="<BR><BR><INPUT TYPE=SUBMIT NAME=SUBMIT VALUE='"._QXZ("SUBMIT")."'\n";
$MAIN.="</TD></TD><TD ALIGN=LEFT VALIGN=TOP>\n";
$MAIN.="</TD><TD ALIGN=CENTER VALIGN=TOP ROWSPAN=3>\n";
$MAIN.="<FONT class=\"select_bold\" COLOR=BLACK SIZE=2> &nbsp; &nbsp; <a href=\"$PHP_SELF?DB=$DB$user_groupQS&query_date=$query_date&end_date=$end_date&order=$order&user=$user&SUBMIT=$SUBMIT&file_download=1\">"._QXZ("DOWNLOAD")."</a><FONT class=\"select_bold\" COLOR=BLACK SIZE=2> &nbsp; | &nbsp; <a href=\"./admin.php?ADD=999999\">"._QXZ("REPORTS")."</a> </FONT>\n";
$MAIN.="</TD><TD ALIGN=CENTER VALIGN=TOP ROWSPAN=3 nowrap>\n";
$MAIN.="<FONT class=\"standard\" COLOR=BLACK SIZE=2> &nbsp; &nbsp; <a href=\"$PHP_SELF?DB=$DB$user_groupQS&query_date=$query_date&end_date=$end_date&order=$order&user=$user&SUBMIT=$SUBMIT&file_download=1\">"._QXZ("DOWNLOAD")."</a><FONT class=\"standard\" COLOR=BLACK SIZE=2> &nbsp; | &nbsp; <a href=\"./admin.php?ADD=999999\">"._QXZ("REPORTS")."</a> </FONT>\n";
$MAIN.="</TD></TR></TABLE>\n";
$MAIN.="</FORM>\n\n";
@@ -333,13 +333,18 @@ if ( ($SSweb_logo!='default_new') and ($SSweb_logo!='default_old') )
}
}
$NWB = "<IMG SRC=\"help.png\" onClick=\"FillAndShowHelpDiv(event, '";
$NWE = "')\" WIDTH=20 HEIGHT=20 BORDER=0 ALT=\"HELP\" ALIGN=TOP>";
$HEADER.="<html>\n";
$HEADER.="<head>\n";
$HEADER.="<link rel=\"stylesheet\" type=\"text/css\" href=\"vicidial_stylesheet.php\">\n";
$HEADER.="<script language=\"JavaScript\" src=\"help.js\"></script>\n";
$HEADER.="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n";
$HEADER.="<title>"._QXZ("ADMINISTRATION").": \n";
$HEADER.=_QXZ("$report_name");
$HEADER.="</title>";
$HEADER.="</title></head>";
$HEADER.="<div id='HelpDisplayDiv' class='help_info' style='display:none;'></div>";
##### BEGIN Set variables to make header show properly #####
$ADD = '311111';
@@ -363,6 +368,7 @@ $subcamp_color = '#C6C6C6';
$MAIN.="<font class=\"standard_bold\">"._QXZ("$report_name")."</font> $NWB#timeclockstatusreport$NWE\n<BR><BR>";
$MAIN.="<CENTER>\n";
$MAIN.="<TABLE WIDTH=750 BGCOLOR=#". $SSframe_background ." cellpadding=2 cellspacing=0><TR BGCOLOR=#". $SSmenu_background ."><TD ALIGN=LEFT>\n";
$MAIN.="<FONT FACE=\"ARIAL,HELVETICA\" COLOR=WHITE SIZE=2><B>"._QXZ("Timeclock Status for")." $user_group</TD><TD ALIGN=RIGHT> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\n";