";
echo " "; # style='width: 40vw; max-width: 350px;'
@@ -895,7 +962,7 @@ if ($ADD==999990)
echo " ";
-
+ echo "";
echo " \n";
echo "";
echo ""._QXZ("System Summary").": ";
@@ -1175,7 +1242,7 @@ $ingroup_rslt=mysqli_query($link, $ingroup_stmt);
while ($ingroup_row=mysqli_fetch_row($ingroup_rslt))
{
$closer_campaigns=preg_replace('/ -$/', '', $ingroup_row[0]);
- $campaign_ingroups=split(" ", $closer_campaigns);
+ $campaign_ingroups=explode(" ", $closer_campaigns);
$ingroup_array=array_merge($ingroup_array, $campaign_ingroups);
}
$allowed_ingroups=array_unique($ingroup_array);
@@ -1210,6 +1277,17 @@ echo $JS_text.$JS_calls;
?>
+function ToggleReports() {
+ var link_text=document.getElementById('ReportLink').innerHTML;
+ if (link_text=="SHOW REPORTS") {
+ document.getElementById('ReportLink').innerHTML="HIDE REPORTS";
+ document.getElementById('ReportStorageDiv').style="display:block";
+ } else {
+ document.getElementById('ReportStorageDiv').style="display:none";
+ document.getElementById('ReportLink').innerHTML="SHOW REPORTS";
+ }
+}
+
function LoadHourlyCharts() {
if (campaign_calls_hours.length>0)
{
diff --git a/www/vicidial/agent_sales_report_mobile.php b/www/vicidial/agent_sales_report_mobile.php
new file mode 100644
index 00000000..d11dcc1c
--- /dev/null
+++ b/www/vicidial/agent_sales_report_mobile.php
@@ -0,0 +1,955 @@
+\n";
+$JS_onload="onload = function() {\n";
+
+#############################################
+##### START SYSTEM_SETTINGS LOOKUP #####
+$stmt = "SELECT use_non_latin,outbound_autodial_active,slave_db_server,reports_use_slave_db,enable_languages,language_method,report_default_format FROM system_settings;";
+$rslt=mysql_to_mysqli($stmt, $link);
+if ($DB) {$HTML_text.="$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];
+ $SSreport_default_format = $row[6];
+ }
+##### END SETTINGS LOOKUP #####
+###########################################
+# if (strlen($report_display_type)<2) {$report_display_type = $SSreport_default_format;}
+
+if ($non_latin < 1)
+ {
+ $PHP_AUTH_USER = preg_replace('/[^-_0-9a-zA-Z]/', '', $PHP_AUTH_USER);
+ $PHP_AUTH_PW = preg_replace('/[^-_0-9a-zA-Z]/', '', $PHP_AUTH_PW);
+ }
+else
+ {
+ $PHP_AUTH_PW = preg_replace("/'|\"|\\\\|;/","",$PHP_AUTH_PW);
+ $PHP_AUTH_USER = preg_replace("/'|\"|\\\\|;/","",$PHP_AUTH_USER);
+ }
+
+$stmt="SELECT selected_language from vicidial_users where user='$PHP_AUTH_USER';";
+if ($DB) {echo "|$stmt|\n";}
+$rslt=mysql_to_mysqli($stmt, $link);
+$sl_ct = mysqli_num_rows($rslt);
+if ($sl_ct > 0)
+ {
+ $row=mysqli_fetch_row($rslt);
+ $VUselected_language = $row[0];
+ }
+
+$auth=0;
+$reports_auth=0;
+$admin_auth=0;
+$auth_message = user_authorization($PHP_AUTH_USER,$PHP_AUTH_PW,'REPORTS',1,0);
+if ($auth_message == 'GOOD')
+ {$auth=1;}
+
+if ($auth > 0)
+ {
+ $stmt="SELECT count(*) from vicidial_users where user='$PHP_AUTH_USER' and user_level > 7 and view_reports='1';";
+ if ($DB) {echo "|$stmt|\n";}
+ $rslt=mysql_to_mysqli($stmt, $link);
+ $row=mysqli_fetch_row($rslt);
+ $admin_auth=$row[0];
+
+ $stmt="SELECT count(*) from vicidial_users where user='$PHP_AUTH_USER' and user_level > 6 and view_reports='1';";
+ if ($DB) {echo "|$stmt|\n";}
+ $rslt=mysql_to_mysqli($stmt, $link);
+ $row=mysqli_fetch_row($rslt);
+ $reports_auth=$row[0];
+
+ if ($reports_auth < 1)
+ {
+ $VDdisplayMESSAGE = _QXZ("You are not allowed to view reports");
+ Header ("Content-type: text/html; charset=utf-8");
+ echo "$VDdisplayMESSAGE: |$PHP_AUTH_USER|$auth_message|\n";
+ exit;
+ }
+ if ( ($reports_auth > 0) and ($admin_auth < 1) )
+ {
+ $ADD=999999;
+ $reports_only_user=1;
+ }
+ }
+else
+ {
+ $VDdisplayMESSAGE = _QXZ("Login incorrect, please try again");
+ if ($auth_message == 'LOCK')
+ {
+ $VDdisplayMESSAGE = _QXZ("Too many login attempts, try again in 15 minutes");
+ Header ("Content-type: text/html; charset=utf-8");
+ echo "$VDdisplayMESSAGE: |$PHP_AUTH_USER|$auth_message|\n";
+ exit;
+ }
+ if ($auth_message == 'IPBLOCK')
+ {
+ $VDdisplayMESSAGE = _QXZ("Your IP Address is not allowed") . ": $ip";
+ Header ("Content-type: text/html; charset=utf-8");
+ echo "$VDdisplayMESSAGE: |$PHP_AUTH_USER|$auth_message|\n";
+ exit;
+ }
+ Header("WWW-Authenticate: Basic realm=\"CONTACT-CENTER-ADMIN\"");
+ Header("HTTP/1.0 401 Unauthorized");
+ echo "$VDdisplayMESSAGE: |$PHP_AUTH_USER|$PHP_AUTH_PW|$auth_message|\n";
+ exit;
+ }
+
+##### BEGIN log visit to the vicidial_report_log table #####
+$LOGip = getenv("REMOTE_ADDR");
+$LOGbrowser = getenv("HTTP_USER_AGENT");
+$LOGscript_name = getenv("SCRIPT_NAME");
+$LOGserver_name = getenv("SERVER_NAME");
+$LOGserver_port = getenv("SERVER_PORT");
+$LOGrequest_uri = getenv("REQUEST_URI");
+$LOGhttp_referer = getenv("HTTP_REFERER");
+$LOGbrowser=preg_replace("/\'|\"|\\\\/","",$LOGbrowser);
+$LOGrequest_uri=preg_replace("/\'|\"|\\\\/","",$LOGrequest_uri);
+$LOGhttp_referer=preg_replace("/\'|\"|\\\\/","",$LOGhttp_referer);
+if (preg_match("/443/i",$LOGserver_port)) {$HTTPprotocol = 'https://';}
+ else {$HTTPprotocol = 'http://';}
+if (($LOGserver_port == '80') or ($LOGserver_port == '443') ) {$LOGserver_port='';}
+else {$LOGserver_port = ":$LOGserver_port";}
+$LOGfull_url = "$HTTPprotocol$LOGserver_name$LOGserver_port$LOGrequest_uri";
+
+$LOGhostname = php_uname('n');
+if (strlen($LOGhostname)<1) {$LOGhostname='X';}
+if (strlen($LOGserver_name)<1) {$LOGserver_name='X';}
+
+$stmt="SELECT webserver_id FROM vicidial_webservers where webserver='$LOGserver_name' and hostname='$LOGhostname' LIMIT 1;";
+$rslt=mysql_to_mysqli($stmt, $link);
+if ($DB) {echo "$stmt\n";}
+$webserver_id_ct = mysqli_num_rows($rslt);
+if ($webserver_id_ct > 0)
+ {
+ $row=mysqli_fetch_row($rslt);
+ $webserver_id = $row[0];
+ }
+else
+ {
+ ##### insert webserver entry
+ $stmt="INSERT INTO vicidial_webservers (webserver,hostname) values('$LOGserver_name','$LOGhostname');";
+ if ($DB) {echo "$stmt\n";}
+ $rslt=mysql_to_mysqli($stmt, $link);
+ $affected_rows = mysqli_affected_rows($link);
+ $webserver_id = mysqli_insert_id($link);
+ }
+
+$stmt="INSERT INTO vicidial_report_log set event_date=NOW(), user='$PHP_AUTH_USER', ip_address='$LOGip', report_name='$report_name', browser='$LOGbrowser', referer='$LOGhttp_referer', notes='$LOGserver_name:$LOGserver_port $LOGscript_name |$group[0], $query_date, $end_date, $shift, $file_download, $report_display_type|', url='$LOGfull_url', webserver='$webserver_id';";
+if ($DB) {echo "|$stmt|\n";}
+$rslt=mysql_to_mysqli($stmt, $link);
+$report_log_id = mysqli_insert_id($link);
+##### END log visit to the vicidial_report_log table #####
+
+if ( (strlen($slave_db_server)>5) and (preg_match("/$report_name/",$reports_use_slave_db)) )
+ {
+ mysqli_close($link);
+ $use_slave_server=1;
+ $db_source = 'S';
+ require("dbconnect_mysqli.php");
+ $HTML_text.="\n";
+ }
+
+$stmt="SELECT user_group from vicidial_users where user='$PHP_AUTH_USER';";
+if ($DB) {$HTML_text.="|$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) {$HTML_text.="|$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 "You are not allowed to view this report: |$PHP_AUTH_USER|$report_name|\n";
+ exit;
+ }
+
+$LOGallowed_campaignsSQL='';
+$whereLOGallowed_campaignsSQL='';
+if ( (!preg_match('/\-ALL/i', $LOGallowed_campaigns)) )
+ {
+ $rawLOGallowed_campaignsSQL = preg_replace("/ -/",'',$LOGallowed_campaigns);
+ $rawLOGallowed_campaignsSQL = preg_replace("/ /","','",$rawLOGallowed_campaignsSQL);
+ $LOGallowed_campaignsSQL = "and campaign_id IN('$rawLOGallowed_campaignsSQL')";
+ $whereLOGallowed_campaignsSQL = "where campaign_id IN('$rawLOGallowed_campaignsSQL')";
+ }
+$regexLOGallowed_campaigns = " $LOGallowed_campaigns ";
+
+$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')";
+ }
+
+######################################
+
+$MT[0]='';
+$NOW_DATE = date("Y-m-d");
+$NOW_TIME = date("Y-m-d H:i:s");
+$STARTtime = date("U");
+if (!isset($group)) {$group = array();}
+if (!isset($user_group)) {$group = array();}
+if (!isset($query_date_D)) {$query_date_D=$NOW_DATE;}
+if (!isset($query_date_T)) {$query_date_T="00:00:00";}
+if (!isset($refresh_rate)) {$refresh_rate="1000000";}
+if (!isset($graph_type)) {$graph_type = "sale_graph";}
+if (!isset($top_agents)) {$top_agents=10;}
+if (!isset($sort_by)) {$sort_by="sales";}
+
+$query_date="$query_date_D $query_date_T";
+$end_date="$end_date_D $end_date_T";
+
+$i=0;
+$group_string='|';
+$group_ct = count($group);
+while($i < $group_ct)
+ {
+ $group_string .= "$group[$i]|";
+ $i++;
+ }
+
+$stmt="select campaign_id from vicidial_campaigns $whereLOGallowed_campaignsSQL order by campaign_id;";
+$rslt=mysql_to_mysqli($stmt, $link);
+if ($DB) {$HTML_text.="$stmt\n";}
+$campaigns_to_print = mysqli_num_rows($rslt);
+$i=0;
+while ($i < $campaigns_to_print)
+ {
+ $row=mysqli_fetch_row($rslt);
+ $groups[$i] =$row[0];
+ if (preg_match('/\-ALL/',$group_string) )
+ {$group[$i] = $groups[$i];}
+ $i++;
+ }
+
+#######################################
+for ($i=0; $i=1 $user_group_SQL";
+ $name_rslt=mysql_to_mysqli($name_stmt, $link);
+ $name_array=array();
+ while ($name_row=mysqli_fetch_row($name_rslt)) {
+ $name_array["$name_row[0]"]="$name_row[1]";
+ }
+
+ $status_stmt="select status from vicidial_statuses where sale='Y' order by status asc";
+ $status_rslt=mysql_to_mysqli($status_stmt, $link);
+ $system_sales=array();
+ while ($status_row=mysqli_fetch_row($status_rslt)) {
+ array_push($system_sales, "$status_row[0]");
+ }
+
+ $campaign_status_stmt="select campaign_id, status from vicidial_campaign_statuses where sale='Y' order by campaign_id, status";
+ $campaign_status_rslt=mysql_to_mysqli($campaign_status_stmt, $link);
+ $campaign_sales=array();
+ while ($campaign_status_row=mysqli_fetch_row($campaign_status_rslt)) {
+ if (!isset($campaign_sales["$campaign_status_row[0]"])) {$campaign_sales["$campaign_status_row[0]"]=array();}
+ array_push($campaign_sales["$campaign_status_row[0]"], "$campaign_status_row[1]");
+ }
+
+ $agent_log_stmt="select user, status, campaign_id, event_time From vicidial_agent_log where lead_id is not null and event_time>='$query_date' $group_SQL $user_group_SQL";
+ $agent_log_rslt=mysql_to_mysqli($agent_log_stmt, $link);
+ $agent_results=array();
+ if ($DB) {echo $agent_log_stmt;}
+ while ($agent_log_row=mysqli_fetch_row($agent_log_rslt)) {
+ $full_name=$name_array["$agent_log_row[0]"];
+ $status=$agent_log_row[1];
+ $campaign_id=$agent_log_row[2];
+
+ $agent_results["$full_name"][0]++;
+ if (in_array("$status", $system_sales) || in_array("$status", $campaign_sales["$campaign_id"])) {
+ $agent_results["$full_name"][1]++;
+ }
+ }
+
+ while (list($key, $val)=each($agent_results)) {
+ $new_sales_ary[]=array('agent' => $key, 'calls' => ($val[0]+0), 'sales' => ($val[1]+0), 'conv' => (round(1000*$val[1]/$val[0])/10));
+ }
+
+ foreach ($new_sales_ary as $key2 => $row2) {
+ $agent_ary[$key2] = $row2['agent'];
+ $calls_ary[$key2] = $row2['calls'];
+ $sales_ary[$key2] = $row2['sales'];
+ $conv_ary[$key2] = $row2['conv'];
+
+ $gtotals_array['calls']+=$row2['calls'];
+ $gtotals_array['sales']+=$row2['sales'];
+ }
+
+ // Sort the data with volume descending, edition ascending
+ // Add $data as the last parameter, to sort by the common key
+ if (($sort_by=="conversions" && $report_display_type=="TABLE") || ($graph_type=="conversion_graph" && $report_display_type=="GRAPH")) {
+ array_multisort($conv_ary, SORT_DESC, $sales_ary, SORT_DESC, $calls_ary, SORT_DESC, $agent_ary, SORT_ASC, $new_sales_ary);
+ } else if (($sort_by=="calls" && $report_display_type=="TABLE") || ($graph_type=="call_graph" && $report_display_type=="GRAPH")) {
+ array_multisort($calls_ary, SORT_DESC, $sales_ary, SORT_DESC, $conv_ary, SORT_DESC, $agent_ary, SORT_ASC, $new_sales_ary);
+ } else {
+ array_multisort($sales_ary, SORT_DESC, $conv_ary, SORT_DESC, $calls_ary, SORT_DESC, $agent_ary, SORT_ASC, $new_sales_ary);
+ }
+
+ $AGENTSjs='var AGENTS=[';
+ $CALLSjs='var CALLS=[';
+ $SALESjs='var SALES=[';
+ $CONVERSION_RATEjs='var CONVERSION_RATE=[';
+ $j=0;
+ foreach ($new_sales_ary as $row) {
+ if ($j<$top_agents) {
+ $agent_str.=$row['agent']."|";
+ $calls_str.=$row['calls']."|";
+ $sales_str.=$row['sales']."|";
+ $conv_str.=$row['conv']."|";
+
+ $AGENTSjs .= "'".$row['agent']."',";
+ $CALLSjs .= "'".$row['calls']."',";
+ $SALESjs .= "'".$row['sales']."',";
+ $CONVERSION_RATEjs .= "'".$row['conv']."',";
+ $j++;
+ }
+ }
+ $agent_str=preg_replace('/\|$/', "", $agent_str);
+ $calls_str=preg_replace('/\|$/', "", $calls_str);
+ $sales_str=preg_replace('/\|$/', "", $sales_str);
+ $conv_str=preg_replace('/\|$/', "", $conv_str);
+
+ $AGENTSjs=preg_replace('/,$/', "", $AGENTSjs);
+ $CALLSjs=preg_replace('/,$/', "", $CALLSjs);
+ $SALESjs=preg_replace('/,$/', "", $SALESjs);
+ $CONVERSION_RATEjs=preg_replace('/,$/', "", $CONVERSION_RATEjs);
+
+ $AGENTSjs.="];\n";
+ $CALLSjs.="];\n";
+ $SALESjs.="];\n";
+ $CONVERSION_RATEjs.="];\n";
+ $JS_arrays=$AGENTSjs.$CALLSjs.$SALESjs.$CONVERSION_RATEjs;
+
+ if ($SUBMIT==_QXZ("REFRESH")) {
+ echo $agent_str."\n".$calls_str."\n".$sales_str."\n".$conv_str;
+ exit;
+ }
+}
+
+######################################
+if ($DB) {$HTML_text.="$user_group_string|$user_group_ct|$user_groupQS|$i ";}
+
+require("screen_colors.php");
+
+# $NWB = " ";
+
+$NWB = " ";
+
+$HTML_head="\n";
+$HTML_head.="\n";
+if ($report_display_type=="TABLE") {
+ $HTML_head.=" ";
+}
+$HTML_head.="\n";
+
+$HTML_head.=" \n";
+$HTML_head.="\n";
+$HTML_head.="
";
+
+$HTML_head.="\n";
+$HTML_head.=" \n";
+$HTML_head.=" \n";
+require("chart_button.php");
+$HTML_head.="\n";
+$HTML_head.="\n";
+
+$HTML_head.=" \n";
+$HTML_head.=""._QXZ("$report_name")." $group_S\n";
+
+$HTML_text.="";
+# $HTML_text.=""._QXZ("$report_name")." $NWB#team_performance_detail$NWE\n";
+
+$HTML_text.="\n";
+
+$HTML_text.="";
+
+$HTML_text.="
";
+
+if ($report_display_type=="TABLE") {
+ $HTML_text=" ";
+} else if ($report_display_type=="GRAPH") {
+ $HTML_text="";
+ $HTML_text.="";
+ $HTML_text.="";
+ $HTML_text.="
";
+}
+
+
+$HTML_text.="\n";
+$HTML_text.="\n";
+
+
+header("Content-type: text/html; charset=utf-8");
+$JS_text.="\n";
+
+
+$HTML_text.=$GRAPH_text;
+# $HTML_text.=$JS_text;
+
+
+
+echo $HTML_head;
+$android_header=1;
+require("admin_header.php");
+echo $HTML_text;
+if ($report_display_type=="GRAPH") {
+?>
+
+
+
+
\ No newline at end of file
diff --git a/www/vicidial/vicidial_stylesheet.php b/www/vicidial/vicidial_stylesheet.php
index 8b63a9fe..bd56134c 100644
--- a/www/vicidial/vicidial_stylesheet.php
+++ b/www/vicidial/vicidial_stylesheet.php
@@ -468,6 +468,10 @@ TD.bsides {
border-left:1pt solid black;
border-right:1pt solid black;
}
+TD.text_overflow {
+ text-overflow: ellipis;
+ overflow: hidden;
+}
/* DIV ELEMENTS */
div.shadowbox