diff --git a/agc_2-X/trunk/UPGRADE b/agc_2-X/trunk/UPGRADE index e909b05e..99e46490 100644 --- a/agc_2-X/trunk/UPGRADE +++ b/agc_2-X/trunk/UPGRADE @@ -218,6 +218,8 @@ OTHER CHANGES: to agents when scheduled callbacks are triggered while they are logged in to the agent screen. Read the HELP for instructions to set up. +55. Added new Real-Time Whiteboard multi-report + diff --git a/agc_2-X/trunk/www/vicidial/AST_rt_whiteboard_rpt.php b/agc_2-X/trunk/www/vicidial/AST_rt_whiteboard_rpt.php new file mode 100644 index 00000000..ccd7df77 --- /dev/null +++ b/agc_2-X/trunk/www/vicidial/AST_rt_whiteboard_rpt.php @@ -0,0 +1,856 @@ +, Joe Johnson LICENSE: AGPLv2 +# +# Real-time report that allows users to create a customized, graphical display of various data sets +# +# 171027-2352 - First build +# + +$startMS = microtime(); + +require("dbconnect_mysqli.php"); +require("functions.php"); + +if (file_exists('options.php')) + { + require('options.php'); + } + +$PHP_AUTH_USER=$_SERVER['PHP_AUTH_USER']; +$PHP_AUTH_PW=$_SERVER['PHP_AUTH_PW']; +$PHP_SELF=$_SERVER['PHP_SELF']; +if (isset($_GET["query_date"])) {$query_date=$_GET["query_date"];} + elseif (isset($_POST["query_date"])) {$query_date=$_POST["query_date"];} +if (isset($_GET["end_date"])) {$end_date=$_GET["end_date"];} + elseif (isset($_POST["end_date"])) {$end_date=$_POST["end_date"];} +if (isset($_GET["query_time"])) {$query_time=$_GET["query_time"];} + elseif (isset($_POST["query_time"])) {$query_time=$_POST["query_time"];} +if (isset($_GET["end_time"])) {$end_time=$_GET["end_time"];} + elseif (isset($_POST["end_time"])) {$end_time=$_POST["end_time"];} +if (isset($_GET["campaigns"])) {$campaigns=$_GET["campaigns"];} + elseif (isset($_POST["campaigns"])) {$campaigns=$_POST["campaigns"];} +if (isset($_GET["users"])) {$users=$_GET["users"];} + elseif (isset($_POST["users"])) {$users=$_POST["users"];} +if (isset($_GET["user_groups"])) {$user_groups=$_GET["user_groups"];} + elseif (isset($_POST["user_groups"])) {$user_groups=$_POST["user_groups"];} +if (isset($_GET["groups"])) {$groups=$_GET["groups"];} + elseif (isset($_POST["groups"])) {$groups=$_POST["groups"];} +if (isset($_GET["dids"])) {$dids=$_GET["dids"];} + elseif (isset($_POST["dids"])) {$dids=$_POST["dids"];} +if (isset($_GET["file_download"])) {$file_download=$_GET["file_download"];} + elseif (isset($_POST["file_download"])) {$file_download=$_POST["file_download"];} +if (isset($_GET["submit"])) {$submit=$_GET["submit"];} + elseif (isset($_POST["submit"])) {$submit=$_POST["submit"];} +if (isset($_GET["SUBMIT"])) {$SUBMIT=$_GET["SUBMIT"];} + elseif (isset($_POST["SUBMIT"])) {$SUBMIT=$_POST["SUBMIT"];} +if (isset($_GET["DB"])) {$DB=$_GET["DB"];} + elseif (isset($_POST["DB"])) {$DB=$_POST["DB"];} +if (isset($_GET["report_display_type"])) {$report_display_type=$_GET["report_display_type"];} + elseif (isset($_POST["report_display_type"])) {$report_display_type=$_POST["report_display_type"];} + +if (!$query_date) {$query_date=date("Y-m-d");} +if (!$end_date) {$end_date=date("Y-m-d");} +if (!$query_time) {$query_time="08:00:00";} +if (!$end_time) {$end_time="17:00:00";} + +if (strlen($shift)<2) {$shift='ALL';} +$report_name="Real-Time Whiteboard Report"; + +############################################# +##### START SYSTEM_SETTINGS LOOKUP ##### +$stmt = "SELECT use_non_latin,outbound_autodial_active,slave_db_server,reports_use_slave_db,enable_languages,language_method,admin_screen_colors FROM system_settings;"; +$rslt=mysql_to_mysqli($stmt, $link); +if ($DB) {$MAIN.="$stmt\n";} +$qm_conf_ct = mysqli_num_rows($rslt); +if ($qm_conf_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $non_latin = $row[0]; + $outbound_autodial_active = $row[1]; + $slave_db_server = $row[2]; + $reports_use_slave_db = $row[3]; + $SSenable_languages = $row[4]; + $SSlanguage_method = $row[5]; + $admin_screen_colors = $row[6]; + } +##### END SETTINGS LOOKUP ##### +########################################### + +$stmt = "SELECT local_gmt FROM servers where active='Y' limit 1;"; +$rslt=mysql_to_mysqli($stmt, $link); +if ($DB) {$MAIN.="$stmt\n";} +$gmt_conf_ct = mysqli_num_rows($rslt); +$dst = date("I"); +if ($gmt_conf_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $local_gmt = $row[0]; + $epoch_offset = (($local_gmt + $dst) * 3600); + } + +if ($non_latin < 1) + { + $PHP_AUTH_USER = preg_replace('/[^-_0-9a-zA-Z]/', '', $PHP_AUTH_USER); + $PHP_AUTH_PW = preg_replace('/[^-_0-9a-zA-Z]/', '', $PHP_AUTH_PW); + } +else + { + $PHP_AUTH_PW = preg_replace("/'|\"|\\\\|;/","",$PHP_AUTH_PW); + $PHP_AUTH_USER = preg_replace("/'|\"|\\\\|;/","",$PHP_AUTH_USER); + } + +$stmt="SELECT selected_language from vicidial_users where user='$PHP_AUTH_USER';"; +if ($DB) {echo "|$stmt|\n";} +$rslt=mysql_to_mysqli($stmt, $link); +$sl_ct = mysqli_num_rows($rslt); +if ($sl_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $VUselected_language = $row[0]; + } + +$auth=0; +$reports_auth=0; +$admin_auth=0; +$auth_message = user_authorization($PHP_AUTH_USER,$PHP_AUTH_PW,'REPORTS',1); +if ($auth_message == 'GOOD') + {$auth=1;} + +if ($auth > 0) + { + $stmt="SELECT count(*) from vicidial_users where user='$PHP_AUTH_USER' and user_level > 7 and view_reports='1';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $admin_auth=$row[0]; + + $stmt="SELECT count(*) from vicidial_users where user='$PHP_AUTH_USER' and user_level > 6 and view_reports='1';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $reports_auth=$row[0]; + + if ($reports_auth < 1) + { + $VDdisplayMESSAGE = _QXZ("You are not allowed to view reports"); + Header ("Content-type: text/html; charset=utf-8"); + echo "$VDdisplayMESSAGE: |$PHP_AUTH_USER|$auth_message|\n"; + exit; + } + if ( ($reports_auth > 0) and ($admin_auth < 1) ) + { + $ADD=999999; + $reports_only_user=1; + } + } +else + { + $VDdisplayMESSAGE = _QXZ("Login incorrect, please try again"); + if ($auth_message == 'LOCK') + { + $VDdisplayMESSAGE = _QXZ("Too many login attempts, try again in 15 minutes"); + Header ("Content-type: text/html; charset=utf-8"); + echo "$VDdisplayMESSAGE: |$PHP_AUTH_USER|$auth_message|\n"; + exit; + } + Header("WWW-Authenticate: Basic realm=\"CONTACT-CENTER-ADMIN\""); + Header("HTTP/1.0 401 Unauthorized"); + echo "$VDdisplayMESSAGE: |$PHP_AUTH_USER|$PHP_AUTH_PW|$auth_message|\n"; + exit; + } + +$stmt="SELECT user_group from vicidial_users where user='$PHP_AUTH_USER';"; +if ($DB) {$MAIN.="|$stmt|\n";} +$rslt=mysql_to_mysqli($stmt, $link); +$row=mysqli_fetch_row($rslt); +$LOGuser_group = $row[0]; + +$stmt="SELECT allowed_campaigns,allowed_reports,admin_viewable_groups,admin_viewable_call_times from vicidial_user_groups where user_group='$LOGuser_group';"; +if ($DB) {$MAIN.="|$stmt|\n";} +$rslt=mysql_to_mysqli($stmt, $link); +$row=mysqli_fetch_row($rslt); +$LOGallowed_campaigns = $row[0]; +$LOGallowed_reports = $row[1]; +$LOGadmin_viewable_groups = $row[2]; +$LOGadmin_viewable_call_times = $row[3]; + +if ( (!preg_match("/$report_name,/",$LOGallowed_reports)) and (!preg_match("/ALL REPORTS/",$LOGallowed_reports)) ) + { + Header("WWW-Authenticate: Basic realm=\"CONTACT-CENTER-ADMIN\""); + Header("HTTP/1.0 401 Unauthorized"); + echo _QXZ("You are not allowed to view this report").": |$PHP_AUTH_USER|$report_name|\n"; + exit; + } + +$LOGadmin_viewable_groupsSQL=''; +$whereLOGadmin_viewable_groupsSQL=''; +if ( (!preg_match('/\-\-ALL\-\-/i',$LOGadmin_viewable_groups)) and (strlen($LOGadmin_viewable_groups) > 3) ) + { + $rawLOGadmin_viewable_groupsSQL = preg_replace("/ -/",'',$LOGadmin_viewable_groups); + $rawLOGadmin_viewable_groupsSQL = preg_replace("/ /","','",$rawLOGadmin_viewable_groupsSQL); + $LOGadmin_viewable_groupsSQL = "and user_group IN('---ALL---','$rawLOGadmin_viewable_groupsSQL')"; + $whereLOGadmin_viewable_groupsSQL = "where user_group IN('---ALL---','$rawLOGadmin_viewable_groupsSQL')"; + } + +$LOGadmin_viewable_call_timesSQL=''; +$whereLOGadmin_viewable_call_timesSQL=''; +if ( (!preg_match('/\-\-ALL\-\-/i', $LOGadmin_viewable_call_times)) and (strlen($LOGadmin_viewable_call_times) > 3) ) + { + $rawLOGadmin_viewable_call_timesSQL = preg_replace("/ -/",'',$LOGadmin_viewable_call_times); + $rawLOGadmin_viewable_call_timesSQL = preg_replace("/ /","','",$rawLOGadmin_viewable_call_timesSQL); + $LOGadmin_viewable_call_timesSQL = "and call_time_id IN('---ALL---','$rawLOGadmin_viewable_call_timesSQL')"; + $whereLOGadmin_viewable_call_timesSQL = "where call_time_id IN('---ALL---','$rawLOGadmin_viewable_call_timesSQL')"; + } + +$NOW_DATE = date("Y-m-d"); +$NOW_TIME = date("Y-m-d H:i:s"); +$STARTtime = date("U"); +if (!isset($groups)) {$groups = array();} +if (!isset($query_date)) {$query_date = $NOW_DATE;} +if (!isset($end_date)) {$end_date = $NOW_DATE;} + +$stmt="SELECT user_group from vicidial_users where user='$PHP_AUTH_USER';"; +if ($DB) {$MAIN.="|$stmt|\n";} +$rslt=mysql_to_mysqli($stmt, $link); +$row=mysqli_fetch_row($rslt); +$LOGuser_group = $row[0]; + +$stmt="SELECT allowed_campaigns,allowed_reports,admin_viewable_groups,admin_viewable_call_times from vicidial_user_groups where user_group='$LOGuser_group';"; +if ($DB) {$MAIN.="|$stmt|\n";} +$rslt=mysql_to_mysqli($stmt, $link); +$row=mysqli_fetch_row($rslt); +$LOGallowed_campaigns = $row[0]; +$LOGallowed_reports = $row[1]; +$LOGadmin_viewable_groups = $row[2]; +$LOGadmin_viewable_call_times = $row[3]; + +if ( (!preg_match("/$report_name/",$LOGallowed_reports)) and (!preg_match("/ALL REPORTS/",$LOGallowed_reports)) ) + { + Header("WWW-Authenticate: Basic realm=\"CONTACT-CENTER-ADMIN\""); + Header("HTTP/1.0 401 Unauthorized"); + echo _QXZ("You are not allowed to view this report").": |$PHP_AUTH_USER|$report_name|\n"; + exit; + } + +$stmt="SELECT campaign_id from vicidial_campaigns $whereLOGallowed_campaignsSQL order by campaign_id;"; +if ($DB) {$MAIN.="$stmt\n";} +$rslt=mysql_to_mysqli($stmt, $link); +$campaigns_to_print = mysqli_num_rows($rslt); +$i=0; +$campaign_string='|'; +$campaigns_selected=count($campaigns); +while ($i < $campaigns_to_print) + { + $row=mysqli_fetch_row($rslt); + $campaign_list[$i] = $row[0]; + $campaign_string .= "$campaign_list[$i]|"; + for ($j=0; $j<$campaigns_selected; $j++) { + if ($campaigns[$j] && $campaign_list[$i]==$campaigns[$j]) {$campaign_name_str.="$campaign_list[$i] - $campaign_names[$i], ";} + if ($campaigns[$j]=="--ALL--") {$campaigns_selected_str.="'$campaign_list[$i]', ";} + } + $i++; + } + + +$i=0; +$users_string='|'; +$users_ct = count($users); +while($i < $users_ct) + { + $users_string .= "$users[$i]|"; + $i++; + } +$stmt="SELECT user, full_name from vicidial_users $whereLOGadmin_viewable_groupsSQL order by user"; +$rslt=mysql_to_mysqli($stmt, $link); +if ($DB) {$MAIN.="$stmt\n";} +$users_to_print = mysqli_num_rows($rslt); +$i=0; +$user_array=array(); # For quick full-name reference +while ($i < $users_to_print) + { + $row=mysqli_fetch_row($rslt); + $user_list[$i]=$row[0]; + $user_names[$i]=$row[1]; + $user_array["$row[0]"]=$row[1]; + $i++; + } + + +$i=0; +$user_groups_string='|'; +$user_groups_ct = count($user_groups); +while($i < $user_groups_ct) + { + $user_groups_string .= "$user_groups[$i]|"; + $i++; + } +$stmt="SELECT user_group, group_name from vicidial_user_groups $whereLOGadmin_viewable_groupsSQL order by user_group"; +$rslt=mysql_to_mysqli($stmt, $link); +if ($DB) {$MAIN.="$stmt\n";} +$user_groups_to_print = mysqli_num_rows($rslt); +$i=0; +$user_group_array=array(); # For quick full-name reference +while ($i < $user_groups_to_print) + { + $row=mysqli_fetch_row($rslt); + $user_group_list[$i]=$row[0]; + $user_group_names[$i]=$row[1]; + $user_group_array["$row[0]"]=$row[1]; + $i++; + } + + +$stmt="SELECT group_id,group_name from vicidial_inbound_groups $whereLOGadmin_viewable_groupsSQL order by group_id;"; +$rslt=mysql_to_mysqli($stmt, $link); +if ($DB) {$MAIN.="$stmt\n";} +$groups_to_print = mysqli_num_rows($rslt); +$i=0; +#$LISTgroups[$i]='---NONE---'; +#$i++; +# $groups_to_print++; +$groups_string='|'; +while ($i < $groups_to_print) + { + $row=mysqli_fetch_row($rslt); + $LISTgroups[$i] = $row[0]; + $LISTgroup_names[$i] = $row[1]; + $LISTgroup_ids[$i] = $row[2]; + $groups_string .= "$LISTgroups[$i]|"; + $i++; + } + + +$i=0; +$group_string='|'; +$group_ct = count($groups); +while($i < $group_ct) + { + if ( (strlen($groups[$i]) > 0) and (preg_match("/\|$groups[$i]\|/",$groups_string)) ) + { + $group_string .= "$groups[$i]|"; + $group_SQL .= "'$groups[$i]',"; + $groupQS .= "&groups[]=$groups[$i]"; + } + $i++; + } +if ( (preg_match('/\s\-\-NONE\-\-\s/',$group_string) ) or ($group_ct < 1) ) + { + $group_SQL = "''"; + } +else + { + $group_SQL = preg_replace('/,$/i', '',$group_SQL); + } +if (strlen($group_SQL)<3) {$group_SQL="''";} + + +$i=0; +$dids_string='|'; +$dids_ct = count($dids); +while($i < $dids_ct) + { + $dids_string .= "$dids[$i]|"; + $i++; + } +$stmt="SELECT did_pattern,did_description,did_id from vicidial_inbound_dids $whereLOGadmin_viewable_groupsSQL order by did_pattern;"; +$rslt=mysql_to_mysqli($stmt, $link); +if ($DB) {$MAIN.="$stmt\n";} +$dids_to_print = mysqli_num_rows($rslt); +$i=0; +$did_array=array(); # For quick full-name reference +while ($i < $dids_to_print) + { + $row=mysqli_fetch_row($rslt); + $did_pattern[$i]=$row[0]; + $did_description[$i]=$row[1]; + $did_ids[$i]=$row[2]; + $did_array["$row[0]"]=$row[1]; + $i++; + } + + + +$MT[0]=''; +$NOW_DATE = date("Y-m-d"); +$NOW_TIME = date("Y-m-d H:i:s"); +$STARTtime = date("U"); +if (!isset($campaigns)) {$campaign = array();} +if (!isset($users)) {$users = array();} +if (!isset($user_groups)) {$user_groups = array();} +if (!isset($dids)) {$dids = array();} +if (!isset($groups)) {$groups = array();} +if (!isset($report_display_type)) {$report_display_type = "HTML";} +if (!isset($query_date)) {$query_date = $NOW_DATE;} +if (!isset($end_date)) {$end_date = $NOW_DATE;} + +$i=0; +$campaigns_string='|'; +$campaign_ct = count($campaigns); +while($i < $campaign_ct) + { + if (in_array("--ALL--", $campaigns)) + { + $campaigns_string = "--ALL--"; + $campaign_SQL .= "'$campaigns[$i]',"; + $campaignQS = "&campaign[]=--ALL--"; + } + else if ( (strlen($campaigns[$i]) > 0) and (!preg_match("/\|$campaigns[$i]\|/",$campaigns_string)) ) + { + $campaigns_string .= "$campaigns[$i]|"; + $campaign_SQL .= "'$campaigns[$i]',"; + $campaignQS .= "&campaigns[]=$campaigns[$i]"; + } + $i++; + } +if ( (preg_match('/\-\-ALL\-\-/',$campaign_string) ) or ($campaign_ct < 1) ) + { + $campaign_SQL = ""; + } +else + { + $campaign_SQL = preg_replace('/,$/i', '',$campaign_SQL); + $WHEREcampaign_SQL=" where campaign_id in ($campaign_SQL) "; + $campaign_SQL=" and campaign_id in ($campaign_SQL) "; + } +if (strlen($campaign_SQL)<3) + { + $campaign_SQL=""; + } + +$i=0; +$users_string='|'; +$user_ct = count($users); +while($i < $user_ct) + { + if (in_array("--ALL--", $users)) + { + $users_string = "--ALL--"; + $user_SQL .= "'$users[$i]',"; + $userQS = "&users[]=--ALL--"; + } + else if ( (strlen($users[$i]) > 0) and (!preg_match("/\|$users[$i]\|/",$users_string)) ) + { + $users_string .= "$users[$i]|"; + $user_SQL .= "'$users[$i]',"; + $userQS .= "&users[]=$users[$i]"; + } + $i++; + } +if ( (preg_match('/\-\-ALL\-\-/',$users_string) ) or ($user_ct < 1) ) + { + $user_SQL = ""; + } +else + { + $user_SQL = preg_replace('/,$/i', '',$user_SQL); + $user_SQL = "and agent_user IN($user_SQL)"; + } +if (strlen($user_SQL)<3) {$user_SQL="";} + +$i=0; +$user_groups_string='|'; +$user_group_ct = count($user_groups); +while($i < $user_group_ct) + { + if (in_array("--ALL--", $user_groups)) + { + $user_groups_string = "--ALL--"; + $user_group_SQL .= "'$user_groups[$i]',"; + $user_groupQS = "&users[]=--ALL--"; + } + else if ( (strlen($user_groups[$i]) > 0) and (!preg_match("/\|$user_groups[$i]\|/",$user_groups_string)) ) + { + $user_groups_string .= "$user_groups[$i]|"; + $user_group_SQL .= "'$user_groups[$i]',"; + $user_groupQS .= "&users[]=$user_groups[$i]"; + } + $i++; + } +if ( (preg_match('/\-\-ALL\-\-/',$user_groups_string) ) or ($user_group_ct < 1) ) + { + $user_group_SQL = ""; + } +else + { + $user_group_SQL = preg_replace('/,$/i', '',$user_group_SQL); + $user_group_SQL = "and user_group IN($user_group_SQL)"; + } +if (strlen($user_group_SQL)<3) {$user_group_SQL="";} + +$i=0; +$groups_string='|'; +$group_ct = count($groups); +while($i < $group_ct) + { + if (in_array("--ALL--", $groups)) + { + $groups_string = "--ALL--"; + $group_SQL .= "'$groups[$i]',"; + $groupQS = "&users[]=--ALL--"; + } + else if ( (strlen($groups[$i]) > 0) and (!preg_match("/\|$groups[$i]\|/",$groups_string)) ) + { + $groups_string .= "$groups[$i]|"; + $group_SQL .= "'$groups[$i]',"; + $groupQS .= "&users[]=$groups[$i]"; + } + $i++; + } +if ( (preg_match('/\-\-ALL\-\-/',$groups_string) ) or ($group_ct < 1) ) + { + $group_SQL = ""; + } +else + { + $group_SQL = preg_replace('/,$/i', '',$group_SQL); + $group_SQL = "and agent_user IN($group_SQL)"; + } +if (strlen($group_SQL)<3) {$group_SQL="";} + + + +##### BEGIN Define colors and logo ##### +$SSmenu_background='015B91'; +$SSframe_background='D9E6FE'; +$SSstd_row1_background='9BB9FB'; +$SSstd_row2_background='B9CBFD'; +$SSstd_row3_background='8EBCFD'; +$SSstd_row4_background='B6D3FC'; +$SSstd_row5_background='FFFFFF'; +$SSalt_row1_background='BDFFBD'; +$SSalt_row2_background='99FF99'; +$SSalt_row3_background='CCFFCC'; + +if ($admin_screen_colors != 'default') + { + $asc_stmt = "SELECT menu_background,frame_background,std_row1_background,std_row2_background,std_row3_background,std_row4_background,std_row5_background,alt_row1_background,alt_row2_background,alt_row3_background,web_logo FROM vicidial_screen_colors where colors_id='$admin_screen_colors';"; + $asc_rslt=mysql_to_mysqli($stmt, $link); + $qm_conf_ct = mysqli_num_rows($rslt); + if ($qm_conf_ct > 0) + { + $asc_row=mysqli_fetch_row($asc_rslt); + $SSmenu_background = $asc_row[0]; + $SSframe_background = $asc_row[1]; + $SSstd_row1_background = $asc_row[2]; + $SSstd_row2_background = $asc_row[3]; + $SSstd_row3_background = $asc_row[4]; + $SSstd_row4_background = $asc_row[5]; + $SSstd_row5_background = $asc_row[6]; + $SSalt_row1_background = $asc_row[7]; + $SSalt_row2_background = $asc_row[8]; + $SSalt_row3_background = $asc_row[9]; + $SSweb_logo = $asc_row[10]; + } + } + + + +$NWB = "   \"HELP\""; + +$rerun_rpt_URL="$PHP_SELF?query_date=$query_date&end_date=$end_date&report_display_type=$report_display_type$campaignQS$userQS$managerQS&SUBMIT=$SUBMIT"; + +$HEADER.="\n"; +$HEADER.="\n"; +$HEADER.=""; +$HEADER.="\n"; +$HEADER.="\n"; +$HEADER.="\n"; +# $HEADER.="\n"; +$HEADER.="\n"; +$HEADER.="\n"; +$HEADER.="\n"; +$HEADER.=""._QXZ("$report_name")."\n"; + +$short_header=1; + +$MAIN.="
\n"; +$MAIN.=""._QXZ("$report_name")." $NWB#rt_whiteboard_report$NWE\n"; + +$MAIN.=""; +$MAIN.=""; +$MAIN.="\n"; + +$MAIN.="\n"; + +$MAIN.="\n"; +$MAIN.="\n"; +$MAIN.=""; + +$MAIN.="\n"; + +$MAIN.="\n"; + +$MAIN.="\n"; + +$MAIN.="\n"; +$MAIN.=""; + +$MAIN.="\n"; + +$MAIN.="\n"; + +$MAIN.="\n"; + +$MAIN.="
"; +$MAIN.=""._QXZ("Report Type").": $NWB#rt_whiteboard_report-report_type$NWE
"; + +$MAIN.="\n"; + +$MAIN.="
"._QXZ("Campaigns").": $NWB#rt_whiteboard_report-parameters$NWE
"; +$MAIN.="\n"; +$MAIN.="
"; +$MAIN.=""._QXZ("Status flags").": $NWB#rt_whiteboard_report-parameters$NWE
"; +$MAIN.="\n"; +$MAIN.="
"._QXZ("User Groups").": $NWB#rt_whiteboard_report-parameters$NWE
"; +$MAIN.="\n"; +$MAIN.="
"._QXZ("Users").": $NWB#rt_whiteboard_report-parameters$NWE
"; +$MAIN.="\n"; +$MAIN.="
"._QXZ("Start date/time").":"; +$MAIN.="\n"; +$MAIN.=""; + +$MAIN.="\n"; + +$MAIN.="   $NWB#rt_whiteboard_report-start_date$NWE"; + +/* +$MAIN.="
"._QXZ("to")."
"; +$MAIN.="\n"; +$MAIN.="  \n"; +*/ + +$MAIN.="
"._QXZ("OR")."
"; +$MAIN.=""._QXZ("Show results for the past")." "._QXZ("hours")." $NWB#rt_whiteboard_report-show_results$NWE"; +$MAIN.="
"._QXZ("In-groups").": $NWB#rt_whiteboard_report-parameters$NWE
"; +$MAIN.="\n"; +$MAIN.="
"._QXZ("DIDs").": $NWB#rt_whiteboard_report-parameters$NWE
"; +$MAIN.="\n"; +$MAIN.="
"; +$MAIN.=""; +$MAIN.=""; +$MAIN.=""; +$MAIN.=""; +$MAIN.=""; +$MAIN.=""; +$MAIN.=""; +$MAIN.="
"._QXZ("Target per unit").": $NWB#rt_whiteboard_report-target_per_unit$NWE
"._QXZ("Target gross sales").": $NWB#rt_whiteboard_report-target_gross_sales$NWE
"; +$MAIN.="
   "; +$MAIN.="
\n"; + + +######################## + + +$MAIN.=""; +$MAIN.=""; +$MAIN.=""; +$MAIN.="
"; + + +$MAIN.=""; +$MAIN.="\n"; +$MAIN.=""; + +header("Content-type: text/html; charset=utf-8"); + +echo "$HEADER"; +require("admin_header.php"); +echo "$MAIN"; +flush(); + +?> diff --git a/agc_2-X/trunk/www/vicidial/admin.php b/agc_2-X/trunk/www/vicidial/admin.php index 7e2bcf84..8745ba22 100644 --- a/agc_2-X/trunk/www/vicidial/admin.php +++ b/agc_2-X/trunk/www/vicidial/admin.php @@ -120,9 +120,9 @@ $PHP_AUTH_PW=$_SERVER['PHP_AUTH_PW']; $PHP_SELF=$_SERVER['PHP_SELF']; $QUERY_STRING = getenv("QUERY_STRING"); -$Vreports = 'NONE, Real-Time Main Report, Real-Time Campaign Summary, Inbound Report, Inbound Report by DID, Inbound Service Level Report, Inbound Summary Hourly Report, Inbound Daily Report, Inbound DID Report, Inbound DID Summary Report, Agent DID Report, Inbound IVR Report, Inbound Forecasting Report, Advanced Forecasting Report, Outbound Calling Report, Outbound Summary Interval Report, Outbound IVR Report, Fronter - Closer Report, Fronter - Closer Detail Report, Lists Campaign Statuses Report, Lists Statuses Report, Campaign Status List Report, Export Calls Report, Export Leads Report, Agent Time Detail, Agent Status Detail, Agent Inbound Status Summary, Agent Performance Detail, Team Performance Detail, Performance Comparison Report, Single Agent Daily, Single Agent Daily Time, User Group Login Report, User Group Hourly Report, User Group Detail Hourly Report, User Timeclock Report, User Group Timeclock Status Report, User Timeclock Detail Report, Server Performance Report, Administration Change Log, List Update Stats, User Stats, User Time Sheet, Download List, Dialer Inventory Report, Maximum System Stats, Maximum Stats Detail, Search Leads Logs, Email Log Report, Carrier Log Report, Campaign Debug, Asterisk Debug, Hangup Cause Report, Lists Pass Report, Called Counts List IDs Report, Agent Debug Log Report, Agent Parked Call Report, Agent-Manager Chat Log, Recording Access Log Report, API Log Report, Real-Time Monitoring Log Report'; +$Vreports = 'NONE, Real-Time Main Report, Real-Time Campaign Summary, Real-Time Whiteboard Report, Inbound Report, Inbound Report by DID, Inbound Service Level Report, Inbound Summary Hourly Report, Inbound Daily Report, Inbound DID Report, Inbound DID Summary Report, Agent DID Report, Inbound IVR Report, Inbound Forecasting Report, Advanced Forecasting Report, Outbound Calling Report, Outbound Summary Interval Report, Outbound IVR Report, Fronter - Closer Report, Fronter - Closer Detail Report, Lists Campaign Statuses Report, Lists Statuses Report, Campaign Status List Report, Export Calls Report, Export Leads Report, Agent Time Detail, Agent Status Detail, Agent Inbound Status Summary, Agent Performance Detail, Team Performance Detail, Performance Comparison Report, Single Agent Daily, Single Agent Daily Time, User Group Login Report, User Group Hourly Report, User Group Detail Hourly Report, User Timeclock Report, User Group Timeclock Status Report, User Timeclock Detail Report, Server Performance Report, Administration Change Log, List Update Stats, User Stats, User Time Sheet, Download List, Dialer Inventory Report, Maximum System Stats, Maximum Stats Detail, Search Leads Logs, Email Log Report, Carrier Log Report, Campaign Debug, Asterisk Debug, Hangup Cause Report, Lists Pass Report, Called Counts List IDs Report, Agent Debug Log Report, Agent Parked Call Report, Agent-Manager Chat Log, Recording Access Log Report, API Log Report, Real-Time Monitoring Log Report'; -$UGreports = 'ALL REPORTS, NONE, Real-Time Main Report, Real-Time Campaign Summary, Inbound Report, Inbound Report by DID, Inbound Service Level Report, Inbound Summary Hourly Report, Inbound Daily Report, Inbound DID Report, Inbound DID Summary Report, Agent DID Report, Inbound Email Report, Inbound Chat Report, Inbound IVR Report, Inbound Forecasting Report, Advanced Forecasting Report, Outbound Calling Report, Outbound Summary Interval Report, Outbound IVR Report, Fronter - Closer Report, Fronter - Closer Detail Report, Lists Campaign Statuses Report, Lists Statuses Report, Campaign Status List Report, Export Calls Report, Export Leads Report, Agent Time Detail, Agent Status Detail, Agent Inbound Status Summary, Agent Performance Detail, Team Performance Detail, Performance Comparison Report, Single Agent Daily, Single Agent Daily Time, User Group Login Report, User Group Hourly Report, User Group Detail Hourly Report, User Timeclock Report, User Group Timeclock Status Report, User Timeclock Detail Report, Server Performance Report, Administration Change Log, List Update Stats, User Stats, User Time Sheet, Download List, Dialer Inventory Report, Custom Reports Links, CallCard Search, Maximum System Stats, Maximum Stats Detail, Search Leads Logs, Email Log Report, Lists Pass Report, Called Counts List IDs Report, Front Page System Summary, Report Page Servers Summary, Admin Utilities Page, Agent Debug Log Report, Agent Parked Call Report, Agent-Manager Chat Log, Recording Access Log Report, API Log Report, Real-Time Monitoring Log Report'; +$UGreports = 'ALL REPORTS, NONE, Real-Time Main Report, Real-Time Campaign Summary, Real-Time Whiteboard Report, Inbound Report, Inbound Report by DID, Inbound Service Level Report, Inbound Summary Hourly Report, Inbound Daily Report, Inbound DID Report, Inbound DID Summary Report, Agent DID Report, Inbound Email Report, Inbound Chat Report, Inbound IVR Report, Inbound Forecasting Report, Advanced Forecasting Report, Outbound Calling Report, Outbound Summary Interval Report, Outbound IVR Report, Fronter - Closer Report, Fronter - Closer Detail Report, Lists Campaign Statuses Report, Lists Statuses Report, Campaign Status List Report, Export Calls Report, Export Leads Report, Agent Time Detail, Agent Status Detail, Agent Inbound Status Summary, Agent Performance Detail, Team Performance Detail, Performance Comparison Report, Single Agent Daily, Single Agent Daily Time, User Group Login Report, User Group Hourly Report, User Group Detail Hourly Report, User Timeclock Report, User Group Timeclock Status Report, User Timeclock Detail Report, Server Performance Report, Administration Change Log, List Update Stats, User Stats, User Time Sheet, Download List, Dialer Inventory Report, Custom Reports Links, CallCard Search, Maximum System Stats, Maximum Stats Detail, Search Leads Logs, Email Log Report, Lists Pass Report, Called Counts List IDs Report, Front Page System Summary, Report Page Servers Summary, Admin Utilities Page, Agent Debug Log Report, Agent Parked Call Report, Agent-Manager Chat Log, Recording Access Log Report, API Log Report, Real-Time Monitoring Log Report'; $Vtables = 'NONE,log_noanswer,did_agent_log,contact_information'; @@ -4198,12 +4198,13 @@ else # 171011-1450 - Added webphone_layout option to phones and user groups # 171018-1314 - Added scheduled_callbacks_email_alert campaign option # 171018-2234 - Added server function to clear agent conferences +# 171028-0913 - Added Real-Time Whiteboard Report # # make sure you have added a user to the vicidial_users MySQL table with at least user_level 9 to access this page the first time -$admin_version = '2.14-638a'; -$build = '171018-2234'; +$admin_version = '2.14-639a'; +$build = '171028-0913'; $STARTtime = date("U"); $SQLdate = date("Y-m-d H:i:s"); @@ -39263,6 +39264,8 @@ if ($ADD==999999) # echo "
  Real-Time IAX: "._QXZ("Listen")." - "._QXZ("Barge")."

\n"; if ( (preg_match("/Real-Time Campaign Summary/",$LOGallowed_reports)) or (preg_match("/ALL REPORTS/",$LOGallowed_reports)) ) {echo "
  • "._QXZ("Real-Time Campaign Summary")."\n";} + if ( (preg_match("/Real-Time Whiteboard Report/",$LOGallowed_reports)) or (preg_match("/ALL REPORTS/",$LOGallowed_reports)) ) + {echo "
  • "._QXZ("Real-Time Whiteboard Report")."\n";} echo "
    \n"; echo ""._QXZ("Inbound and Outbound Calling Reports")."
    \n"; echo "