diff --git a/agc_2-X/trunk/UPGRADE b/agc_2-X/trunk/UPGRADE
index 09457dba..3c14ada0 100644
--- a/agc_2-X/trunk/UPGRADE
+++ b/agc_2-X/trunk/UPGRADE
@@ -100,6 +100,9 @@ OTHER CHANGES:
15. Added new DNC options to Manual Dial Filter campaign feature that are not
tied to the campaign DNC settings.
+16. Changed Emergency Logout processes to hangup all agent session calls, and
+ added better logging
+
diff --git a/agc_2-X/trunk/www/agc/vdc_db_query.php b/agc_2-X/trunk/www/agc/vdc_db_query.php
index a11f626d..317aad7b 100644
--- a/agc_2-X/trunk/www/agc/vdc_db_query.php
+++ b/agc_2-X/trunk/www/agc/vdc_db_query.php
@@ -422,10 +422,11 @@
# 170207-1315 - Added user option api_only_user
# 170221-0143 - Fix for rare missed agent log insert trigger
# 170221-1314 - Added more DNC options for campaign setting, manual dial filter
+# 170228-1625 - Fix to prevent double-logging when emergency logout happens
#
-$version = '2.14-316';
-$build = '170221-1314';
+$version = '2.14-317';
+$build = '170228-1625';
$php_script = 'vdc_db_query.php';
$mel=1; # Mysql Error Log enabled = 1
$mysql_log_count=658;
@@ -12306,13 +12307,31 @@ if ($ACTION == 'userLOGout')
$user_group = trim("$row[0]");
}
##### Insert a LOGOUT record into the user log
+ $insert_user_log=1;
+ if ($stage=='DISABLED')
+ {
+ $stmt="SELECT event FROM vicidial_user_log where user='$user' order by user_log_id desc LIMIT 1;";
+ $rslt=mysql_to_mysqli($stmt, $link);
+ if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
+ if ($DB) {echo "$stmt\n";}
+ $ul_record_ct = mysqli_num_rows($rslt);
+ if ($ul_record_ct > 0)
+ {
+ $row=mysqli_fetch_row($rslt);
+ $last_event = trim("$row[0]");
+ if ($last_event == 'LOGOUT') {$insert_user_log=0;}
+ }
+ }
$user_log_event = "LOGOUT";
if ($stage=='TIMEOUT') {$user_log_event = "TIMEOUTLOGOUT";}
- $stmt="INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group) values('$user','$user_log_event','$campaign','$NOW_TIME','$StarTtime','$user_group');";
- if ($DB) {echo "$stmt\n";}
- $rslt=mysql_to_mysqli($stmt, $link);
- if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00128',$user,$server_ip,$session_name,$one_mysql_log);}
- $vul_insert = mysqli_affected_rows($link);
+ if ($insert_user_log > 0)
+ {
+ $stmt="INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group) values('$user','$user_log_event','$campaign','$NOW_TIME','$StarTtime','$user_group');";
+ if ($DB) {echo "$stmt\n";}
+ $rslt=mysql_to_mysqli($stmt, $link);
+ if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00128',$user,$server_ip,$session_name,$one_mysql_log);}
+ $vul_insert = mysqli_affected_rows($link);
+ }
if ($no_delete_sessions < 1)
{
diff --git a/agc_2-X/trunk/www/vicidial/admin.php b/agc_2-X/trunk/www/vicidial/admin.php
index a0822b68..b989fd41 100644
--- a/agc_2-X/trunk/www/vicidial/admin.php
+++ b/agc_2-X/trunk/www/vicidial/admin.php
@@ -3946,12 +3946,13 @@ else
# 170223-0657 - Added warning for On Hold Message if too long, adjusted chooser placements
# 170226-0850 - Added recording override options to chat and email groups to disable recordings for those, issue #992
# 170227-2231 - Change to allow horizontal_bar_chart header to be translated, issue #991
+# 170228-1621 - Changed emergency logout to hangup all agent session calls, and more logging
#
# 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-595a';
-$build = '170227-2231';
+$admin_version = '2.14-596a';
+$build = '170228-1621';
$STARTtime = date("U");
$SQLdate = date("Y-m-d H:i:s");
@@ -17414,6 +17415,7 @@ if ($ADD==62)
else
{
$stmtLOG='';
+ $usersLOG='';
$stmt="SELECT count(*) from vicidial_campaigns where campaign_id='$campaign_id' $LOGallowed_campaignsSQL;";
$rslt=mysql_to_mysqli($stmt, $link);
$row=mysqli_fetch_row($rslt);
@@ -17423,7 +17425,7 @@ if ($ADD==62)
{
$now_date_epoch = date('U');
$inactive_epoch = ($now_date_epoch - 60);
- $stmt = "SELECT user,campaign_id,UNIX_TIMESTAMP(last_update_time),extension from vicidial_live_agents where campaign_id='$campaign_id' $LOGallowed_campaignsSQL;";
+ $stmt = "SELECT user,campaign_id,UNIX_TIMESTAMP(last_update_time),extension,status,conf_exten,server_ip from vicidial_live_agents where campaign_id='$campaign_id' $LOGallowed_campaignsSQL;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($DB) {echo "
$stmt\n";}
$vla_ct = mysqli_num_rows($rslt);
@@ -17435,6 +17437,9 @@ if ($ADD==62)
$VLA_campaign_id[$k] = $row[1];
$VLA_update_time[$k] = $row[2];
$VLA_extension[$k] = $row[3];
+ $VLA_status[$k] = $row[4];
+ $VLA_conf_exten[$k] = $row[5];
+ $VLA_server_ip[$k] = $row[6];
$k++;
}
@@ -17541,10 +17546,21 @@ if ($ADD==62)
}
}
- $stmt = "INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group) values('$VLA_user[$k]','LOGOUT','$VLA_campaign_id[$k]','$SQLdate','$now_date_epoch','$VAL_user_group');";
+ $local_DEF = 'Local/5555';
+ $local_AMP = '@';
+ $ext_context = 'default';
+ $kick_local_channel = "$local_DEF$VLA_conf_exten[$k]$local_AMP$ext_context";
+ $queryCID = "ULGH3457$StarTtimE";
+
+ $stmtC="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$VLA_server_ip[$k]','','Originate','$queryCID','Channel: $kick_local_channel','Context: $ext_context','Exten: 8300','Priority: 1','Callerid: $queryCID','','','','$channel','$exten');";
+ if ($DB) {echo "
$stmtC\n";}
+ $rslt=mysql_to_mysqli($stmtC, $link);
+
+ $stmt = "INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group,extension) values('$VLA_user[$k]','LOGOUT','$VLA_campaign_id[$k]','$SQLdate','$now_date_epoch','$VAL_user_group','MGR LOGOUT: $PHP_AUTH_USER');";
if ($DB) {echo "
$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
$stmtLOG .= "$stmt|";
+ $usersLOG .= "$VLA_user[$k]|";
#############################################
@@ -17692,7 +17708,7 @@ if ($ADD==62)
$SQL_log = "$stmtLOG";
$SQL_log = preg_replace('/;/', '', $SQL_log);
$SQL_log = addslashes($SQL_log);
- $stmt="INSERT INTO vicidial_admin_log set event_date='$SQLdate', user='$PHP_AUTH_USER', ip_address='$ip', event_section='CAMPAIGNS', event_type='LOGOUT', record_id='$campaign_id', event_code='ADMIN LOGOUT CAMPAIGN AGENTS', event_sql=\"$SQL_log\", event_notes='';";
+ $stmt="INSERT INTO vicidial_admin_log set event_date='$SQLdate', user='$PHP_AUTH_USER', ip_address='$ip', event_section='CAMPAIGNS', event_type='LOGOUT', record_id='$campaign_id', event_code='ADMIN LOGOUT CAMPAIGN AGENTS', event_sql=\"$SQL_log\", event_notes='Users logged out: $usersLOG';";
if ($DB) {echo "|$stmt|\n";}
$rslt=mysql_to_mysqli($stmt, $link);
@@ -36447,7 +36463,7 @@ if ($ADD==700000000000000)
$logs_to_print = mysqli_num_rows($rslt);
echo "
"._QXZ("ADMIN CHANGE LOG").": ("._QXZ("Last 5000 records").")\n";
- echo "
| "._QXZ("ID")." | "; echo ""._QXZ("DATE TIME")." | "; @@ -36533,7 +36549,7 @@ if ($ADD==710000000000000) $logs_to_print = mysqli_num_rows($rslt); echo "|||||||||||||||||||||||||||
| "._QXZ("ID")." | "; echo ""._QXZ("DATE TIME")." | "; @@ -36619,7 +36635,7 @@ if ($ADD==720000000000000) $logs_to_print = mysqli_num_rows($rslt); echo "|||||||||||||||||||||||||
| "._QXZ("ID")." | "; echo ""._QXZ("DATE TIME")." | "; diff --git a/agc_2-X/trunk/www/vicidial/user_stats.php b/agc_2-X/trunk/www/vicidial/user_stats.php index 484763f2..26706977 100644 --- a/agc_2-X/trunk/www/vicidial/user_stats.php +++ b/agc_2-X/trunk/www/vicidial/user_stats.php @@ -1,7 +1,7 @@ LICENSE: AGPLv2 +# Copyright (C) 2017 Matt Florell$row[2] | \n"; $MAIN.="$row[3] | \n"; $MAIN.="$row[4] | \n"; - $MAIN.="$event_hours_minutes | \n"; - $MAIN.="$event_hours_minutes | \n"; + $MAIN.="$row[7] | \n"; + $MAIN.="\n"; $event_start_seconds=''; $event_stop_seconds=''; $CSV_text2.="\"\",\"$row[0]\",\"$row[2]\",\"$row[3]\",\"$row[4]\",\"$event_hours_minutes\"\n"; diff --git a/agc_2-X/trunk/www/vicidial/user_status.php b/agc_2-X/trunk/www/vicidial/user_status.php index c3d4c2c8..5dbe2a5e 100644 --- a/agc_2-X/trunk/www/vicidial/user_status.php +++ b/agc_2-X/trunk/www/vicidial/user_status.php @@ -38,6 +38,7 @@ # 160325-1433 - Changes for sidebar update # 161102-1041 - Fixed QM partition problem # 170217-1213 - Fixed non-latin auth issue #995 +# 170228-1623 - Changed emergency logout to hangup all agent session calls, and more logging # $startMS = microtime(); @@ -73,7 +74,7 @@ if (isset($_GET["SUBMIT"])) {$SUBMIT=$_GET["SUBMIT"];} ############################################# ##### START SYSTEM_SETTINGS LOOKUP ##### -$stmt = "SELECT use_non_latin,webroot_writable,outbound_autodial_active,user_territories_active,level_8_disable_add,enable_languages,language_method,allow_chats FROM system_settings;"; +$stmt = "SELECT use_non_latin,webroot_writable,outbound_autodial_active,user_territories_active,level_8_disable_add,enable_languages,language_method,allow_chats,admin_screen_colors FROM system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $qm_conf_ct = mysqli_num_rows($rslt); @@ -88,6 +89,7 @@ if ($qm_conf_ct > 0) $SSenable_languages = $row[5]; $SSlanguage_method = $row[6]; $SSallow_chats = $row[7]; + $SSadmin_screen_colors = $row[8]; } ##### END SETTINGS LOOKUP ##### ########################################### @@ -111,6 +113,44 @@ $stage = preg_replace("/'|\"|\\\\|;/","",$stage); $begin_date = preg_replace("/'|\"|\\\\|;/","",$begin_date); $end_date = preg_replace("/'|\"|\\\\|;/","",$end_date); + +$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='A3C3D6'; +$SSalt_row1_background='BDFFBD'; +$SSalt_row2_background='99FF99'; +$SSalt_row3_background='CCFFCC'; + +if ($SSadmin_screen_colors != 'default') + { + $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 FROM vicidial_screen_colors where colors_id='$SSadmin_screen_colors';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($DB) {echo "$stmt\n";} + $colors_ct = mysqli_num_rows($rslt); + if ($colors_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $SSmenu_background = $row[0]; + $SSframe_background = $row[1]; + $SSstd_row1_background = $row[2]; + $SSstd_row2_background = $row[3]; + $SSstd_row3_background = $row[4]; + $SSstd_row4_background = $row[5]; + $SSstd_row5_background = $row[6]; + $SSalt_row1_background = $row[7]; + $SSalt_row2_background = $row[8]; + $SSalt_row3_background = $row[9]; + } + } +$Mhead_color = $SSstd_row5_background; +$Mmain_bgcolor = $SSmenu_background; +$Mhead_color = $SSstd_row5_background; + + $StarTtimE = date("U"); $TODAY = date("Y-m-d"); $NOW_TIME = date("Y-m-d H:i:s"); @@ -376,14 +416,14 @@ require("admin_header.php"); ?> - | ||
\n";
+echo "| \n";
##### EMERGENCY CAMPAIGN CHANGE FOR AN AGENT #####
if ($stage == "live_campaign_change")
@@ -401,7 +441,7 @@ if ($stage == "log_agent_out")
{
$now_date_epoch = date('U');
$inactive_epoch = ($now_date_epoch - 60);
- $stmt = "SELECT user,campaign_id,UNIX_TIMESTAMP(last_update_time),status from vicidial_live_agents where user='" . mysqli_real_escape_string($link, $user) . "';";
+ $stmt = "SELECT user,campaign_id,UNIX_TIMESTAMP(last_update_time),status,conf_exten,server_ip from vicidial_live_agents where user='" . mysqli_real_escape_string($link, $user) . "';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($DB) {echo " | $stmt\n";} $vla_ct = mysqli_num_rows($rslt); @@ -412,6 +452,8 @@ if ($stage == "log_agent_out") $VLA_campaign_id = $row[1]; $VLA_update_time = $row[2]; $VLA_status = $row[3]; + $VLA_conf_exten = $row[4]; + $VLA_server_ip = $row[5]; if ($VLA_update_time > $inactive_epoch) { @@ -507,9 +549,29 @@ if ($stage == "log_agent_out") } } - $stmt = "INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group) values('$VLA_user','LOGOUT','$VLA_campaign_id','$NOW_TIME','$now_date_epoch','$VAL_user_group');"; - if ($DB) {echo " $stmt\n";} + $local_DEF = 'Local/5555'; + $local_AMP = '@'; + $ext_context = 'default'; + $kick_local_channel = "$local_DEF$VLA_conf_exten$local_AMP$ext_context"; + $queryCID = "ULGH3457$StarTtimE"; + + $stmtC="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$VLA_server_ip','','Originate','$queryCID','Channel: $kick_local_channel','Context: $ext_context','Exten: 8300','Priority: 1','Callerid: $queryCID','','','','$channel','$exten');"; + if ($DB) {echo " $stmtC\n";} + $rslt=mysql_to_mysqli($stmtC, $link); + + $stmtB = "INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group,extension) values('$VLA_user','LOGOUT','$VLA_campaign_id','$NOW_TIME','$now_date_epoch','$VAL_user_group','MGR LOGOUT: $PHP_AUTH_USER');"; + if ($DB) {echo " $stmtB\n";} + $rslt=mysql_to_mysqli($stmtB, $link); + + ### Add a record to the vicidial_admin_log + $SQL_log = "$stmt|$stmtB|$stmtC|"; + $SQL_log = preg_replace('/;/', '', $SQL_log); + $SQL_log = addslashes($SQL_log); + $stmt="INSERT INTO vicidial_admin_log set event_date='$NOW_TIME', user='$PHP_AUTH_USER', ip_address='$ip', event_section='USERS', event_type='LOGOUT', record_id='$user', event_code='EMERGENCY LOGOUT FROM STATUS PAGE', event_sql=\"$SQL_log\", event_notes='agent_log_id: $VAL_agent_log_id';"; + if ($DB) {echo "$stmt\n";} $rslt=mysql_to_mysqli($stmt, $link); + $affected_rows = mysqli_affected_rows($link); + print "\n"; ############################################# @@ -633,7 +695,7 @@ if ($stage == "log_agent_out") } } - echo _QXZ("Agent")." $user - $full_name "._QXZ("has been emergency logged out, make sure they close their web browser")." \n"; + echo _QXZ("Agent")." $user - $full_name "._QXZ("has been emergency logged out, all calls in their session have been hung up, make sure they close their web browser")." \n"; } else { @@ -891,7 +953,7 @@ if ($agents_to_print > 0) echo "\n"; echo "\n"; echo "\n"; - echo " \n"; + echo " "._QXZ("NOTE: this will hang up all calls in the agent session")." \n"; } } |