From 97a3ccab1766ec78841bf17558b4427a5bf2354f Mon Sep 17 00:00:00 2001 From: mattf Date: Tue, 2 Apr 2024 02:38:44 +0000 Subject: [PATCH] Fix for rare issue with Automated Reports git-svn-id: svn://192.168.202.10@3819 3d104415-ff17-0410-8863-d5cf3c621b8a --- agc_2-X/trunk/bin/ADMIN_keepalive_ALL.pl | 26 +- .../bin/AST_dialer_inventory_snapshot.pl | 2 + agc_2-X/trunk/bin/AST_email_web_report.pl | 11 +- .../trunk/bin/AST_email_web_reportFTPSSL.pl | 11 +- agc_2-X/trunk/bin/AST_email_web_reportSFTP.pl | 11 +- agc_2-X/trunk/bin/AST_flush_DBqueue.pl | 25 +- agc_2-X/trunk/docs/Inbound_line_controls.pdf | Bin 0 -> 144371 bytes agc_2-X/trunk/docs/VICIDIAL_statuses.txt | 2 + .../trunk/extras/MySQL_AST_CREATE_tables.sql | 28 +- .../trunk/extras/inbound_line_controls.php | 2040 +++++++++++++++++ agc_2-X/trunk/extras/upgrade_2.14.sql | 28 + agc_2-X/trunk/www/vicidial/functions.php | 26 +- 12 files changed, 2199 insertions(+), 11 deletions(-) create mode 100644 agc_2-X/trunk/docs/Inbound_line_controls.pdf create mode 100644 agc_2-X/trunk/extras/inbound_line_controls.php diff --git a/agc_2-X/trunk/bin/ADMIN_keepalive_ALL.pl b/agc_2-X/trunk/bin/ADMIN_keepalive_ALL.pl index 09d0c0a5..53d05f99 100644 --- a/agc_2-X/trunk/bin/ADMIN_keepalive_ALL.pl +++ b/agc_2-X/trunk/bin/ADMIN_keepalive_ALL.pl @@ -15,7 +15,7 @@ # - Auto reset lists at defined times # - Auto restarts Asterisk process if enabled in servers settings # -# Copyright (C) 2023 Matt Florell LICENSE: AGPLv2 +# Copyright (C) 2024 Matt Florell LICENSE: AGPLv2 # # CHANGES # 61011-1348 - First build @@ -170,9 +170,10 @@ # 230925-1454 - Added -recmon settings # 231136-2158 - Added hopper_hold_inserts HCI lead reservations clearing for old reservations # 231129-0849 - Added reset of vicidial_phone_number_call_daily_counts table +# 240401-1810 - Added purging of vicidial_pending_ar records older than 7 days # -$build = '231129-0849'; +$build = '240401-1810'; $DB=0; # Debug flag $teodDB=0; # flag to log Timeclock End of Day processes to log file @@ -2202,6 +2203,24 @@ if ($timeclock_end_of_day_NOW > 0) ##### END vicidial_khomp_log end of day process removing records older than 7 days ##### + ##### BEGIN vicidial_pending_ar end of day process removing records older than 7 days ##### + $stmtA = "DELETE from vicidial_pending_ar where start_datetime < \"$SDSQLdate\";"; + if($DBX){print STDERR "\n|$stmtA|\n";} + $affected_rows = $dbhA->do($stmtA); + if($DB){print STDERR "\n|$affected_rows vicidial_pending_ar records older than 7 days purged|\n";} + if ($teodDB) {$event_string = "vicidial_pending_ar records older than 7 days purged: |$stmtA|$affected_rows|"; &teod_logger;} + + $stmtA = "optimize table vicidial_pending_ar;"; + if($DBX){print STDERR "\n|$stmtA|\n";} + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + @aryA = $sthA->fetchrow_array; + if ($DB) {print "|",$aryA[0],"|",$aryA[1],"|",$aryA[2],"|",$aryA[3],"|","\n";} + $sthA->finish(); + ##### END vicidial_pending_ar end of day process removing records older than 7 days ##### + + ##### BEGIN vicidial_two_factor_auth end of day process removing expired and older records ##### $stmtA = "DELETE from vicidial_two_factor_auth where (auth_exp_date < NOW()) or ( (auth_code_exp_date < NOW()) and (auth_stage != '1') );"; if($DBX){print STDERR "\n|$stmtA|\n";} @@ -5962,8 +5981,9 @@ if ($SSenable_auto_reports > 0) $r++; } - if ($DB) {print "Automated Reports DONE: $r\n";} + if ($DB) {print "Automated Reports launched: $r\n";} } + if ($DB) {print "Automated Reports DONE\n";} } ################################################################################ ##### END automated reports diff --git a/agc_2-X/trunk/bin/AST_dialer_inventory_snapshot.pl b/agc_2-X/trunk/bin/AST_dialer_inventory_snapshot.pl index f6acd8c1..5497c759 100644 --- a/agc_2-X/trunk/bin/AST_dialer_inventory_snapshot.pl +++ b/agc_2-X/trunk/bin/AST_dialer_inventory_snapshot.pl @@ -228,6 +228,7 @@ while (@group=$campaign_rslt->fetchrow_array) $inventory_ptnstr="|"; while (@row=$rslt->fetchrow_array) { + $row[0] =~ s/[^-_0-9\p{L}]//ugi; $dial_statuses.="$row[0] "; $inventory_statuses.="'$row[0]',"; $inventory_ptnstr.="$row[0]|"; @@ -383,6 +384,7 @@ sub GetListCount $new_count=0; $total_calls=0; while (@ct_row=$ct_rslt->fetchrow_array) { + $ct_row[0] =~ s/[^-_0-9\p{L}]//ugi; $list_start_inv+=$ct_row[2]; $total_calls+=($ct_row[1]*$ct_row[2]); if ($inventory_ptnstr=~/\|$ct_row[0]\|/ && $ct_row[1]=="0") {$new_count+=$ct_row[2];} diff --git a/agc_2-X/trunk/bin/AST_email_web_report.pl b/agc_2-X/trunk/bin/AST_email_web_report.pl index 37fb2083..a412489a 100644 --- a/agc_2-X/trunk/bin/AST_email_web_report.pl +++ b/agc_2-X/trunk/bin/AST_email_web_report.pl @@ -9,7 +9,7 @@ # # /usr/share/astguiclient/AST_email_web_report.pl --email-list=test@gmail.com --email-sender=test@test.com # -# Copyright (C) 2020 Matt Florell LICENSE: AGPLv2 +# Copyright (C) 2024 Matt Florell LICENSE: AGPLv2 # # CHANGES # 90225-1247 - First version @@ -22,6 +22,7 @@ # 170719-1242 - Added more debug and '8days' date option # 170825-1114 - Added report filename_override option # 200601-0941 - Added support to launch an SFTP process using settings containers, added settings container CLI option for Email/FTP settings +# 240401-1341 - Added vicidial_pending_ar table entries # $txt = '.txt'; @@ -521,6 +522,8 @@ if (length($report_id) > 1) $email_subject =~ s/--A--date--B--|--A--today--B--/$year-$mon-$mday/gi; $email_subject =~ s/--A--yesterday--B--/$Tyear-$Tmon-$Tmday/gi; $email_subject =~ s/--A--datetime--B--/$year-$mon-$mday $hour:$min:$sec/gi; + @php_script_url = $location =~ /([\w-]+\.php)/g; + $php_script = $php_script_url[0]; $location =~ s/\&/\\&/gi; $location =~ s/--A--today--B--/$year-$mon-$mday/gi; $location =~ s/--A--yesterday--B--/$Tyear-$Tmon-$Tmday/gi; @@ -543,6 +546,7 @@ if (length($report_id) > 1) $filename_override =~ s/--A--30days--B--/$Hyear-$Hmon-$Hmday/gi; $filename_override =~ s/--A--filedatetime--B--/$filedatetime/gi; if ($DB) {print "FINAL LOCATION: |$location|\n";} + if ($DB) {print "REPORT SCRIPT: |$php_script|\n";} if ($DB) {print "FILENAME OVERRIDE: |$filename_override|\n";} } else @@ -669,6 +673,11 @@ else } ### GRAB THE REPORT + +$stmtB="INSERT INTO vicidial_pending_ar SET start_datetime='$timestamp', user='$http_user', report_id='$report_id', php_script='$php_script', status='TRIGGERED', notes='';"; +$Iaffected_rows = $dbhA->do($stmtB); +if ($DB) {print "Pending AR entry inserted: $Iaffected_rows|$stmtB\n";} + if (!$Q) {print "Running Report $ship_date\n$location\n";} `/usr/bin/wget --auth-no-challenge --http-user=$http_user --http-password=$http_pass --output-document=/tmp/X$HTMLfile --output-file=/tmp/Y$HTMLfileLOG $location `; diff --git a/agc_2-X/trunk/bin/AST_email_web_reportFTPSSL.pl b/agc_2-X/trunk/bin/AST_email_web_reportFTPSSL.pl index 3573d2a6..37613173 100644 --- a/agc_2-X/trunk/bin/AST_email_web_reportFTPSSL.pl +++ b/agc_2-X/trunk/bin/AST_email_web_reportFTPSSL.pl @@ -20,11 +20,12 @@ # # MAKE SURE YOU TEST THAT THIS IS WORKING MANUALLY!!! # -# Copyright (C) 2022 Matt Florell LICENSE: AGPLv2 +# Copyright (C) 2024 Matt Florell LICENSE: AGPLv2 # # CHANGES # 200601-1047 - First version, based upon AST_email_web_report.pl # 221002-1603 - Added comments for optional additional FTPSSL variable: "OverridePASV" +# 240401-1343 - Added vicidial_pending_ar table entries # $txt = '.txt'; @@ -550,6 +551,8 @@ if (length($report_id) > 1) $email_subject =~ s/--A--date--B--|--A--today--B--/$year-$mon-$mday/gi; $email_subject =~ s/--A--yesterday--B--/$Tyear-$Tmon-$Tmday/gi; $email_subject =~ s/--A--datetime--B--/$year-$mon-$mday $hour:$min:$sec/gi; + @php_script_url = $location =~ /([\w-]+\.php)/g; + $php_script = $php_script_url[0]; $location =~ s/\&/\\&/gi; $location =~ s/--A--today--B--/$year-$mon-$mday/gi; $location =~ s/--A--yesterday--B--/$Tyear-$Tmon-$Tmday/gi; @@ -572,6 +575,7 @@ if (length($report_id) > 1) $filename_override =~ s/--A--30days--B--/$Hyear-$Hmon-$Hmday/gi; $filename_override =~ s/--A--filedatetime--B--/$filedatetime/gi; if ($DB) {print "FINAL LOCATION: |$location|\n";} + if ($DB) {print "REPORT SCRIPT: |$php_script|\n";} if ($DB) {print "FILENAME OVERRIDE: |$filename_override|\n";} } else @@ -656,6 +660,11 @@ else } ### GRAB THE REPORT + +$stmtB="INSERT INTO vicidial_pending_ar SET start_datetime='$timestamp', user='$http_user', report_id='$report_id', php_script='$php_script', status='TRIGGERED', notes='';"; +$Iaffected_rows = $dbhA->do($stmtB); +if ($DB) {print "Pending AR entry inserted: $Iaffected_rows|$stmtB\n";} + if (!$Q) {print "Running Report $ship_date\n$location\n";} `/usr/bin/wget --auth-no-challenge --http-user=$http_user --http-password=$http_pass --output-document=/tmp/X$HTMLfile --output-file=/tmp/Y$HTMLfileLOG $location `; diff --git a/agc_2-X/trunk/bin/AST_email_web_reportSFTP.pl b/agc_2-X/trunk/bin/AST_email_web_reportSFTP.pl index 8d1540f2..981a15e2 100644 --- a/agc_2-X/trunk/bin/AST_email_web_reportSFTP.pl +++ b/agc_2-X/trunk/bin/AST_email_web_reportSFTP.pl @@ -17,10 +17,11 @@ # # MAKE SURE YOU TEST THAT THIS IS WORKING MANUALLY!!! # -# Copyright (C) 2020 Matt Florell LICENSE: AGPLv2 +# Copyright (C) 2024 Matt Florell LICENSE: AGPLv2 # # CHANGES # 200601-1047 - First version, based upon AST_email_web_report.pl +# 240401-1342 - Added vicidial_pending_ar table entries # $txt = '.txt'; @@ -532,6 +533,8 @@ if (length($report_id) > 1) $email_subject =~ s/--A--date--B--|--A--today--B--/$year-$mon-$mday/gi; $email_subject =~ s/--A--yesterday--B--/$Tyear-$Tmon-$Tmday/gi; $email_subject =~ s/--A--datetime--B--/$year-$mon-$mday $hour:$min:$sec/gi; + @php_script_url = $location =~ /([\w-]+\.php)/g; + $php_script = $php_script_url[0]; $location =~ s/\&/\\&/gi; $location =~ s/--A--today--B--/$year-$mon-$mday/gi; $location =~ s/--A--yesterday--B--/$Tyear-$Tmon-$Tmday/gi; @@ -554,6 +557,7 @@ if (length($report_id) > 1) $filename_override =~ s/--A--30days--B--/$Hyear-$Hmon-$Hmday/gi; $filename_override =~ s/--A--filedatetime--B--/$filedatetime/gi; if ($DB) {print "FINAL LOCATION: |$location|\n";} + if ($DB) {print "REPORT SCRIPT: |$php_script|\n";} if ($DB) {print "FILENAME OVERRIDE: |$filename_override|\n";} } else @@ -638,6 +642,11 @@ else } ### GRAB THE REPORT + +$stmtB="INSERT INTO vicidial_pending_ar SET start_datetime='$timestamp', user='$http_user', report_id='$report_id', php_script='$php_script', status='TRIGGERED', notes='';"; +$Iaffected_rows = $dbhA->do($stmtB); +if ($DB) {print "Pending AR entry inserted: $Iaffected_rows|$stmtB\n";} + if (!$Q) {print "Running Report $ship_date\n$location\n";} `/usr/bin/wget --auth-no-challenge --http-user=$http_user --http-password=$http_pass --output-document=/tmp/X$HTMLfile --output-file=/tmp/Y$HTMLfileLOG $location `; diff --git a/agc_2-X/trunk/bin/AST_flush_DBqueue.pl b/agc_2-X/trunk/bin/AST_flush_DBqueue.pl index 25e0b060..81e42a24 100644 --- a/agc_2-X/trunk/bin/AST_flush_DBqueue.pl +++ b/agc_2-X/trunk/bin/AST_flush_DBqueue.pl @@ -298,14 +298,15 @@ if ($sthArows > 0) $sthA->finish(); ### Grab system_settings values from the database -$stmtA = "SELECT sip_event_logging FROM system_settings limit 1;"; +$stmtA = "SELECT sip_event_logging,enable_auto_reports FROM system_settings limit 1;"; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthArows=$sthA->rows; if ($sthArows > 0) { @aryA = $sthA->fetchrow_array; - $SSsip_event_logging = $aryA[0]; + $SSsip_event_logging = $aryA[0]; + $SSenable_auto_reports = $aryA[1]; } $sthA->finish(); @@ -637,6 +638,26 @@ if (!$T) } if (!$Q) {print " - OPTIMIZE vicidial_3way_press_multi \n";} +if ($SSenable_auto_reports > 0) + { + $stmtA = "UPDATE vicidial_pending_ar SET status='ERROR' where status='TRIGGERED' and start_datetime < '$SQLdate_NEG_tenminute';"; + if($DB){print STDERR "\n|$stmtA|\n";} + if (!$T) { $affected_rows = $dbhA->do($stmtA);} + if (!$Q) {print " - vicidial_pending_ar flush: $affected_rows rows\n";} + + $stmtA = "OPTIMIZE table vicidial_pending_ar;"; + if($DB){print STDERR "\n|$stmtA|\n";} + if (!$T) + { + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + @aryA = $sthA->fetchrow_array; + if (!$Q) {print "|",$aryA[0],"|",$aryA[1],"|",$aryA[2],"|",$aryA[3],"|","\n";} + $sthA->finish(); + } + if (!$Q) {print " - OPTIMIZE vicidial_pending_ar \n";} + } $stmtA = "DELETE from server_live_stats where update_time < '$DQLdate_NEG_twelvehour';"; if($DB){print STDERR "\n|$stmtA|\n";} diff --git a/agc_2-X/trunk/docs/Inbound_line_controls.pdf b/agc_2-X/trunk/docs/Inbound_line_controls.pdf new file mode 100644 index 0000000000000000000000000000000000000000..295d8ccfd8bb6e4c62cbb1943033ca1bb1324c29 GIT binary patch literal 144371 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�qA`B=i+^&zMI_-4lpd3qsSlbA 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 yWfT@;;{+@$c6L@4F%dQnVG$uFVIj`G$`rnblc literal 0 HcmV?d00001 diff --git a/agc_2-X/trunk/docs/VICIDIAL_statuses.txt b/agc_2-X/trunk/docs/VICIDIAL_statuses.txt index 3ab04810..485291ec 100644 --- a/agc_2-X/trunk/docs/VICIDIAL_statuses.txt +++ b/agc_2-X/trunk/docs/VICIDIAL_statuses.txt @@ -83,3 +83,5 @@ SRDROP - SHARED outbound campaign drop to in-group, not included in most DROP st HUCXXX - Enhanced Disconnect Logging level 3 failed calls, where 'XXX' is the disconnect code. For example: "HUC18" for Cause 18 (SIP 408 Request timeout) ADAIR - Dead Air Auto, for AMD NOAUDIODATA calls ACFLTR - Inbound call areacode filter check +LTMGAD - Campaign HotKey option, will transfer customer to voicemail message and disposition the call +XAMMAD - Campaign HotKey option, will transfer customer to voicemail message and disposition the call diff --git a/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql b/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql index 5dc693b0..e060733d 100644 --- a/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql +++ b/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql @@ -5233,6 +5233,32 @@ mb_available BIGINT(14) default '0', unique index livepartitions (server_ip, partition_path) ) ENGINE=MyISAM; +CREATE TABLE inbound_disabled_entries ( +interval_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, +start_datetime DATETIME, +end_datetime datetime, +location VARCHAR(50), +message VARCHAR(100), +message_type ENUM('MEETING','CLOSED','WEATHER','CUSTOM'), +status ENUM('ACTIVE','LIVE','COMPLETED','CANCELLED') DEFAULT 'ACTIVE', +user VARCHAR(20), +modify_date TIMESTAMP NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), +modified_by VARCHAR(20), +holiday_id VARCHAR(30), +KEY inbound_disabled_entries_key (start_datetime,end_datetime,location) +) ENGINE=MyISAM; + +CREATE TABLE vicidial_pending_ar ( +ar_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, +report_id VARCHAR(30) default '', +start_datetime DATETIME, +php_script VARCHAR(50) default '', +user VARCHAR(20), +status ENUM('TRIGGERED','AUTHORIZED','COMPLETED','ERROR') DEFAULT 'TRIGGERED', +notes TEXT, +KEY pending_ar_key (user,start_datetime) +) ENGINE=MyISAM; + ALTER TABLE vicidial_email_list MODIFY message text character set utf8; @@ -5632,4 +5658,4 @@ INSERT INTO `wallboard_reports` VALUES ('AGENTS_AND_QUEUES','Agents and Queues', UPDATE system_settings set vdc_agent_api_active='1'; -UPDATE system_settings SET db_schema_version='1710',db_schema_update_date=NOW(),reload_timestamp=NOW(); +UPDATE system_settings SET db_schema_version='1711',db_schema_update_date=NOW(),reload_timestamp=NOW(); diff --git a/agc_2-X/trunk/extras/inbound_line_controls.php b/agc_2-X/trunk/extras/inbound_line_controls.php new file mode 100644 index 00000000..356228ad --- /dev/null +++ b/agc_2-X/trunk/extras/inbound_line_controls.php @@ -0,0 +1,2040 @@ + 0) + { + $row=mysqli_fetch_row($rslt); + $non_latin = $row[0]; + $SSoutbound_autodial_active = $row[1]; + $slave_db_server = $row[2]; + $reports_use_slave_db = $row[3]; + $user_territories_active = $row[4]; + $webroot_writable = $row[5]; + $allow_emails = $row[6]; + $SSlevel_8_disable_add = $row[7]; + $SSenable_languages = $row[8]; + $SSlanguage_method = $row[9]; + $log_recording_access = $row[10]; + $SSadmin_screen_colors = $row[11]; + $SSmute_recordings = $row[12]; + $sounds_web_server = $row[13]; + $sounds_web_directory = $row[14]; + $admin_web_dir = $row[15]; + $SSallow_web_debug = $row[16]; + } + +if (!preg_match('/^http/', $sounds_web_server)) {$http_prefix="http://";} else {$http_prefix="";} +if ($SSallow_web_debug < 1) {$DB=0;} +##### END SETTINGS LOOKUP ##### +########################################### + +$DB=preg_replace("/[^0-9a-zA-Z]/","",$DB); +$from_date = preg_replace('/[^\-0-9]/', '', $from_date); +$from_hour = preg_replace('/[^0-9]/', '', $from_hour); +$from_min = preg_replace('/[^0-9]/', '', $from_min); +$to_date = preg_replace('/[^\-0-9]/', '', $to_date); +$to_hour = preg_replace('/[^0-9]/', '', $to_hour); +$to_min = preg_replace('/[^0-9]/', '', $to_min); +$insert_flag = preg_replace('/[^0-9]/', '', $insert_flag); +$interval_id = preg_replace('/[^0-9]/', '', $interval_id); + +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); + $default_submit = preg_replace('/[^-_\s0-9a-zA-Z]/', '', $default_submit); + $location = preg_replace('/[^-_0-9a-zA-Z]/', '', $location); + $message_type = preg_replace('/[^a-zA-Z]/', '', $message_type); + $audio_file = preg_replace('/[^-_0-9a-zA-Z]/', '', $audio_file); + $meeting_field = preg_replace('/[^-_0-9a-zA-Z]/', '', $meeting_field); + $closed_field = preg_replace('/[^-_0-9a-zA-Z]/', '', $closed_field); + $weather_field = preg_replace('/[^-_0-9a-zA-Z]/', '', $weather_field); + $holiday_field = preg_replace('/[^-_0-9a-zA-Z]/', '', $holiday_field); + $custom_field = preg_replace('/[^-_0-9a-zA-Z]/', '', $custom_field); + $holiday_id = preg_replace('/[^-_0-9a-zA-Z]/','',$holiday_id); + $action = preg_replace('/[^-_0-9a-zA-Z]/', '', $action); + $message = preg_replace('/[^-_0-9a-zA-Z]/', '', $message); + } +else + { + $PHP_AUTH_USER = preg_replace('/[^\-_0-9\p{L}]/u', '', $PHP_AUTH_USER); + $PHP_AUTH_PW = preg_replace('/[^\-_0-9\p{L}]/u', '', $PHP_AUTH_PW); + $default_submit = preg_replace('/[^\-_\s0-9\p{L}]/u', '', $default_submit); + $location = preg_replace('/[^\-_0-9\p{L}]/u', '', $location); + $message_type = preg_replace('/[^\p{L}]/u', '', $message_type); + $audio_file = preg_replace('/[^\-_0-9\p{L}]/u', '', $audio_file); + $meeting_field = preg_replace('/[^\-_0-9\p{L}]/u', '', $meeting_field); + $closed_field = preg_replace('/[^\-_0-9\p{L}]/u', '', $closed_field); + $weather_field = preg_replace('/[^\-_0-9\p{L}]/u', '', $weather_field); + $holiday_field = preg_replace('/[^-_0-9\p{L}]/', '', $holiday_field); + $custom_field = preg_replace('/[^\-_\.0-9\p{L}]/u', '', $custom_field); + $holiday_id = preg_replace('/[^\-_0-9\p{L}]/u','',$holiday_id); + $action = preg_replace('/[^\-_0-9\p{L}]/u', '', $action); + $message = preg_replace('/[^\-_0-9\p{L}]/u', '', $message); + } + + + +$user_auth=0; +$auth=0; +$reports_auth=0; +$qc_auth=0; +$auth_message = user_authorization($PHP_AUTH_USER,$PHP_AUTH_PW,'QC',1,0); +if ($auth_message == 'GOOD') + {$user_auth=1;} + +if ($auth_message == 'GOOD') + {$user_auth=1;} + +if ($user_auth > 0) + { + $stmt="SELECT count(*) from vicidial_users where user='$PHP_AUTH_USER' and user_level > 7 and api_only_user != '1';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $auth=$row[0]; + + $stmt="SELECT count(*) from vicidial_users where user='$PHP_AUTH_USER' and user_level > 6 and view_reports='1' and api_only_user != '1';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $reports_auth=$row[0]; + + $stmt="select user_level, user_group from vicidial_users where user='$PHP_AUTH_USER'"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $user_level=$row[0]; + + $reports_only_user=0; + $qc_only_user=0; + if ( ($reports_auth > 0) and ($auth < 1) ) + { + $ADD=999999; + $reports_only_user=1; + } + if ( ($reports_auth < 1) and ($auth < 1) ) + { + if ( ($ADD != '881') and ($ADD != '100000000000000') ) + { + $ADD=100000000000000; + } + $qc_only_user=1; + } + if ( ($reports_auth < 1) and ($auth < 1) ) + { + $VDdisplayMESSAGE = _QXZ("You do not have permission to be here"); + Header ("Content-type: text/html; charset=utf-8"); + echo "$VDdisplayMESSAGE: |$PHP_AUTH_USER|$auth_message|\n"; + exit; + } + if ( (strlen($VUuser_admin_redirect_url) > 5) and ($SSuser_admin_redirect > 0) ) + { + Header('Location: '.$VUuser_admin_redirect_url); + echo""._QXZ("Admin Redirect")."\n"; + echo"\n"; + echo"\n"; + echo"\n"; + echo"\n"; + echo""._QXZ("click here to continue").". . .\n"; + exit; + } + } +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; + } + +$expected_files=array("meeting", "closed", "weather", "holiday", "custom"); +$container_default_str="^".implode("\s|^", $expected_files)."\s"; +$audio_file_str=implode("|", $expected_files); + +if ($default_submit=="Set as defaults") + { + $upd_container_text=""; + $found_files=array(); + + $container_stmt="select container_entry from vicidial_settings_containers where container_id='INBOUND_LINE_CONTROLS'"; + $container_rslt=mysql_to_mysqli($container_stmt, $link); + $container_row=mysqli_fetch_row($container_rslt); + # echo "\n"; + + $upd_stmt="UPDATE vicidial_settings_containers set container_entry='".mysqli_escape_string($link, $upd_container_text)."' where container_id='INBOUND_LINE_CONTROLS'"; + $upd_rslt=mysql_to_mysqli($upd_stmt, $link); + } + +$container_stmt="select container_entry from vicidial_settings_containers where container_id='INBOUND_LINE_CONTROLS'"; +$container_rslt=mysql_to_mysqli($container_stmt, $link); +$location_array=array(); +$audio_array=array(); +$locations_calltimes_array=array(); +$completed_days=1; + +if (mysqli_num_rows($container_rslt)==0) + { + echo "ERROR: This feature requires a settings container named 'INBOUND_LINE_CONTROLS'"; + echo ($user_level==9 ? "

Create a new settings container here" : ""); + echo "

Go back to admin"; + exit; + } + +$location_restrictions=array(); +$event_restrictions=array(); +while ($container_row=mysqli_fetch_row($container_rslt)) + { + $inbound_instructions=explode("\n", $container_row[0]); + for ($i=0; $i/', $inbound_instructions[$i])) + { + $instructions=explode("=>", $inbound_instructions[$i]); + if (preg_match('/^minimum_required_level_locations/', $instructions[0])) + { + $instructions[1]=preg_replace("/\s/", "", $instructions[1]); + $location_sets=explode("|", $instructions[1]); + for ($j=0; $j $required_user_level) + { + if($user_level<$required_user_level) + { + if (($index = array_search($current_location, $location_array)) !== false) + { + unset($location_array[$index]); + } + } + } +$location_array=array_values($location_array); + +foreach ($locations_calltimes_array as $active_location => $array) + { + $locations_calltimes_array["$active_location"]=array_unique($array); + } + +if ($action=="get_local_time") + { + echo date("Y-m-d-H-i"); + exit; + } + +if ($audio_file && $action=="move_audio_file") + { + $temp_filename = "../agc/polly/generated/".$audio_file; + passthru("cp $temp_filename ../$sounds_web_directory/"); + $success_msg="SUCCESS"."\n***"; + echo trim($success_msg); + + $stmt="UPDATE servers SET sounds_update='Y';"; + $rslt=mysql_to_mysqli($stmt, $link); + + ### LOG INSERTION Admin Log Table ### + $SQL_log = "$stmt|"; + $SQL_log = preg_replace('/;/', '', $SQL_log); + $SQL_log = addslashes($SQL_log); + $stmt="INSERT INTO vicidial_admin_log set event_date=NOW(), user='$PHP_AUTH_USER', ip_address='$ip', event_section='AUDIOSTORE', event_type='COPY', record_id='manualupload', event_code='$audio_file', event_sql=\"$SQL_log\", event_notes='NEW: $audio_file POLLY GENERATED';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + + exit; + } + +if ($action=="insert_interval" && $location && $message && $message_type && $from_date && $from_hour && $from_min && $to_date && $to_hour && $to_min) + { + $error_msg=""; + + $dup_stmt="select count(*) from inbound_disabled_entries where start_datetime='".$from_date." ".$from_hour.":".$from_min.":00' and end_datetime='".$to_date." ".$to_hour.":".$to_min.":00' and location in ('$location'".(preg_match('/\|/', $location) ? ", '".preg_replace('/\|/', "', '", $location)."'" : "").") and status in ('LIVE', 'ACTIVE')"; + $dup_rslt=mysql_to_mysqli($dup_stmt, $link); + $dup_row=mysqli_fetch_row($dup_rslt); + if ($dup_row[0]>0) + { + $error_msg.="ERROR: This interval (".$from_date." ".$from_hour.":".$from_min.":00 to ".$to_date." ".$to_hour.":".$to_min.":00 for ".preg_replace('/\|/', ", ", $location).") is already scheduled for a live/upcoming downtime"; + # $error_msg.="
$dup_stmt"; + } + + $msg_array=CheckHolidayConflicts($location, $locations_calltimes_array, $from_date, $from_hour, $from_min, $to_date, $to_hour, $to_min, "", 1); + + $error_msg.=$msg_array[0]; + $ok_msg=$msg_array[1]; + $interval_time_array=$msg_array[2]; + # echo "ERR: $error_msg

OK: $ok_msg"; + + # exit; + + if (strlen($error_msg)==0) + { + $holiday_id="AG_".date("YmdHis")."_".$message_type; + $ins_stmt="INSERT INTO inbound_disabled_entries(start_datetime, end_datetime, location, message, message_type, user, holiday_id) VALUES('".$from_date." ".$from_hour.":".$from_min.":00', '".$to_date." ".$to_hour.":".$to_min.":00', '$location', '$message', '$message_type', '$PHP_AUTH_USER', '$holiday_id')"; + $ins_rslt=mysql_to_mysqli($ins_stmt, $link); + if (mysqli_affected_rows($link)>0) + { + + $h=1; + foreach ($interval_time_array as $date => $times) + { + $VD_holiday_id=$holiday_id."_".$h; + $holiday_stmt="insert into vicidial_call_time_holidays VALUES('$VD_holiday_id', 'Play $message_type $message message', 'Created by $PHP_AUTH_USER on ".date("Y-m-d H:i:s")." to be played $date', '$date', 'ACTIVE', '".$times["start"]."', '".$times["end"]."', '$message', 'LOCKED_HOLIDAY', 'ADDITION_REVERSE')"; + # echo $holiday_stmt."
"; + $holiday_rslt=mysql_to_mysqli($holiday_stmt, $link); + + $selected_locations=explode("|", $location); + for ($n=0; $n0) + { + $row=mysqli_fetch_row($rslt); + $ct_holidays = $row[0]; + + if (preg_match('/\|$/i',$ct_holidays)) + {$ct_holidays = "$ct_holidays$VD_holiday_id\|";} + else + {$ct_holidays = "$ct_holidays\|$VD_holiday_id\|";} + $stmt="UPDATE vicidial_call_times set ct_holidays='$ct_holidays' where call_time_id='".$call_time."';"; + $rslt=mysql_to_mysqli($stmt, $link); + + ### LOG INSERTION Admin Log Table ### + $SQL_log = "$stmt|"; + $SQL_log = preg_replace('/;/', '', $SQL_log); + $SQL_log = addslashes($SQL_log); + $stmt="INSERT INTO vicidial_admin_log set event_date=now(), user='$PHP_AUTH_USER', ip_address='$ip', event_section='CALLTIMES', event_type='MODIFY', record_id='".$call_time."', event_code='ADMIN MODIFY CALL TIME ADD HOLIDAY RULE', event_sql=\"$SQL_log\", event_notes='Holiday Rule Added: $VD_holiday_id';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + } + } + } + } + $h++; + } + } + header("Location: $PHP_SELF"); + } + else + { + # echo "ERROR: $error_msg"; + } + } + +if ($action=="update_interval" && $interval_id && $holiday_id && $from_date && $from_hour && $from_min && $to_date && $to_hour && $to_min) + { + $msg_array=CheckHolidayConflicts($location, $locations_calltimes_array, $from_date, $from_hour, $from_min, $to_date, $to_hour, $to_min, $holiday_id, 0); + + $error_msg=$msg_array[0]; + $ok_msg=$msg_array[1]; + $interval_time_array=$msg_array[2]; + # echo "ERR: $error_msg

OK: $ok_msg"; + + + if (strlen($error_msg)==0) + { + $upd_stmt="UPDATE inbound_disabled_entries set start_datetime='".$from_date." ".$from_hour.":".$from_min.":00', end_datetime='".$to_date." ".$to_hour.":".$to_min.":00', modified_by='$PHP_AUTH_USER' where interval_id='$interval_id' "; + $upd_rslt=mysql_to_mysqli($upd_stmt, $link); + if (mysqli_affected_rows($link)>0) + { + echo "SUCCESS\n"; + + # Get interval info in case more inserts need to be done + $int_stmt="select * from inbound_disabled_entries where interval_id='$interval_id'"; + $int_rslt=mysql_to_mysqli($int_stmt, $link); + while($int_row=mysqli_fetch_array($int_rslt)) + { + $message=$int_row["message"]; + $message_type=$int_row["message_type"]; + $upd_location=$int_row["location"]; + } + + $ct_stmt=""; + + # Update holidays table anything that is now not in the date range + # $holiday_stmt="UPDATE vicidial_call_time_holidays set holiday_status='INACTIVE' where holiday_id like '$holiday_id%' and holiday_date not in ('".implode("', '", array_keys($interval_time_array))."')"; + $holiday_stmt="DELETE from vicidial_call_time_holidays where holiday_id like '$holiday_id%'"; + $holiday_rslt=mysql_to_mysqli($holiday_stmt, $link); + $ct_stmt.="$holiday_stmt|"; + + # Remove old holidays + $selected_locations=explode("|", $upd_location); + for ($n=0; $n0) + { + $row=mysqli_fetch_row($rslt); + $ct_holidays = $row[0]; + + $holiday_pattern=$holiday_id."\_[0-9]+"; + $ct_holidays = preg_replace("/$holiday_pattern/i", '', $ct_holidays); + $ct_holidays = preg_replace("/\|+/", '|', $ct_holidays); + $stmt="UPDATE vicidial_call_times set ct_holidays='$ct_holidays' where call_time_id='".$call_time."';"; + $rslt=mysql_to_mysqli($stmt, $link); + } + } + } + } + + /* Unnecessary with above switching to 'DELETE + # Get latest ID in case update adds a new day to the range necessitating a new holiday + $latest_stmt="select holiday_id from vicidial_call_time_holidays where holiday_id like '$holiday_id%' order by holiday_id desc limit 1"; + $latest_rslt=mysql_to_mysqli($latest_stmt, $link); + while($latest_row=mysqli_fetch_row($latest_rslt)) + { + $h=$latest_row[0]; + $h=preg_replace("/$holiday_id/", "", $h); + $h=preg_replace("/[^0-9]/", "", $h); + } + */ + + $h=1; + foreach ($interval_time_array as $date => $times) + { + /* Unnecessary with above switching to 'DELETE + #$holiday_stmt="select count(*) From vicidial_call_time_holidays where holiday_id like '$holiday_id%' and holiday_date='$date'"; + #$holiday_rslt=mysql_to_mysqli($holiday_stmt, $link); + #$holiday_ct=mysqli_fetch_row($holiday_rslt); + + #if ($holiday_ct[0]==0) + # { + */ + + $VD_holiday_id=$holiday_id."_".$h; + $holiday_stmt_ins="INSERT into vicidial_call_time_holidays VALUES('$VD_holiday_id', 'Play $message_type $message message', 'Added by $PHP_AUTH_USER on ".date("Y-m-d H:i:s")." to be played $date', '$date', 'ACTIVE', '".$times["start"]."', '".$times["end"]."', '$message', 'LOCKED_HOLIDAY', 'ADDITION_REVERSE')"; + $holiday_rslt_ins=mysql_to_mysqli($holiday_stmt_ins, $link); + $ct_stmt.="$holiday_stmt_ins|"; + + $selected_locations=explode("|", $upd_location); + for ($n=0; $n0) + { + $row=mysqli_fetch_row($rslt); + $ct_holidays = $row[0]; + + if (preg_match('/\|$/i',$ct_holidays)) + {$ct_holidays = "$ct_holidays$VD_holiday_id\|";} + else + {$ct_holidays = "$ct_holidays\|$VD_holiday_id\|";} + $stmt="UPDATE vicidial_call_times set ct_holidays='$ct_holidays' where call_time_id='".$call_time."';"; + $rslt=mysql_to_mysqli($stmt, $link); + + ### LOG INSERTION Admin Log Table ### + $SQL_log = "$stmt|"; + $SQL_log = preg_replace('/;/', '', $SQL_log); + $SQL_log = addslashes($SQL_log); + $stmt="INSERT INTO vicidial_admin_log set event_date=now(), user='$PHP_AUTH_USER', ip_address='$ip', event_section='CALLTIMES', event_type='MODIFY', record_id='".$call_time."', event_code='ADMIN MODIFY CALL TIME MODIFY HOLIDAY RULE', event_sql=\"$SQL_log\", event_notes='Holiday Rule Added: $VD_holiday_id';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + } + } + } + } + $h++; + + /* Unnecessary with above switching to 'DELETE + } + else + { + $holiday_stmt_upd="UPDATE vicidial_call_time_holidays set holiday_status='ACTIVE', ct_default_start='".$times["start"]."', ct_default_stop='".$times["end"]."' where holiday_id like '$holiday_id%' and holiday_date='$date'"; + $holiday_rslt_upd=mysql_to_mysqli($holiday_stmt_upd, $link); + $ct_stmt.="$holiday_stmt_upd|"; + } + */ + + $upd_stmt="update inbound_disabled_entries set status='LIVE' where status='ACTIVE' and start_datetime<=now() and end_datetime>=now()"; + $upd_rslt=mysql_to_mysqli($upd_stmt, $link); + } + + $inb_stmt="select * from inbound_disabled_entries where interval_id='$interval_id'"; + $inb_rslt=mysql_to_mysqli($inb_stmt, $link); + if (mysqli_num_rows($inb_rslt)>0) + { + $row=mysqli_fetch_array($inb_rslt); + $location=preg_replace('/\|/', ', ', $row["location"]); + + $full_name=""; + $fn_stmt="select full_name from vicidial_users where user='$row[user]'"; + $fn_rslt=mysql_to_mysqli($fn_stmt, $link); + if(mysqli_num_rows($fn_rslt)>0) + { + $fn_row=mysqli_fetch_row($fn_rslt); + $full_name=", $fn_row[0]"; + } + + ### LOG INSERTION Admin Log Table ### + $SQL_log = "$ct_stmt"; + $SQL_log = preg_replace('/;/', '', $SQL_log); + $SQL_log = addslashes($SQL_log); + $stmt="INSERT INTO vicidial_admin_log set event_date=now(), user='$PHP_AUTH_USER', ip_address='$ip', event_section='CALLTIMES', event_type='MODIFY', record_id='$holiday_id', event_code='ADMIN MODIFY CALL TIME CHANGE HOLIDAY RULE', event_sql=\"$SQL_log\", event_notes='".$call_time."';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + + + echo "UPDATED: Inbound $location lines are currently down from $row[start_datetime] to $row[end_datetime], requested by $row[user]$full_name\n"; + echo "$row[start_datetime]|$row[end_datetime]|".date("Y-m-d H:i:s")."|$row[user]$full_name\n"; + } + $current_time=date("YmdHi"); + $upd_from_time=preg_replace('/[^0-9]/', '', $from_date.$from_hour.$from_min); + + if ($current_time>=$upd_from_time) {echo "RELOAD_IMMEDIATELY";} + exit; + } + else + { + echo "FAILED"; + exit; + } + } + else + { + echo "FAILED\n$error_msg"; + exit; + } + } + +if ($action=="delete_interval" && $interval_id && $holiday_id) + { + $del_stmt="UPDATE inbound_disabled_entries set status='CANCELLED', modified_by='$PHP_AUTH_USER' where status in ('ACTIVE', 'LIVE') and interval_id='$interval_id'"; + $del_rslt=mysql_to_mysqli($del_stmt, $link); + if (mysqli_affected_rows($link)>0) + { + $data_stmt="select * from inbound_disabled_entries where interval_id='$interval_id'"; + $data_rslt=mysql_to_mysqli($data_stmt, $link); + $data_row=mysqli_fetch_array($data_rslt); + $location=$data_row["location"]; + + $location_array_delete=explode("|", $location); + for ($n=0; $n"; + $rslt=mysql_to_mysqli($stmt, $link); + + ### LOG INSERTION Admin Log Table ### + $SQL_log = "$stmt|"; + $SQL_log = preg_replace('/;/', '', $SQL_log); + $SQL_log = addslashes($SQL_log); + $stmt="INSERT INTO vicidial_admin_log set event_date=now(), user='$PHP_AUTH_USER', ip_address='$ip', event_section='CALLTIMES', event_type='MODIFY', record_id='$call_time_id', event_code='ADMIN MODIFY CALL TIME REMOVE HOLIDAY RULE', event_sql=\"$SQL_log\", event_notes='".$call_time."';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + } + } + } + +# echo _QXZ("Holiday Rule Removed").": $holiday_rule
\n"; + + $ct_stmt="UPDATE vicidial_call_time_holidays set holiday_status='INACTIVE' where holiday_id like '$holiday_id%'"; + $ct_rslt=mysql_to_mysqli($ct_stmt, $link); + + header("Location: $PHP_SELF"); + } + } + + + +function CheckHolidayConflicts($locale, $locale_calltimes_array, $fdate, $fhour, $fmin, $tdate, $thour, $tmin, $holiday_id, $DB) + { + global $link; + + $error_msg=""; + $ok_msg=""; + $start_period=strtotime($fdate); + $end_period=strtotime($tdate); + + $interval_time_array=array(); + for ($period=$start_period; $period<=$end_period; $period+=86400) { + $key=date('Y-m-d', $period); + $start_time="0000"; + $end_time="2359"; + if ($key==$fdate) {$start_time=$fhour.$fmin;} + if ($key==$tdate) {$end_time=$thour.$tmin;} + $interval_time_array["$key"]["start"]=$start_time; + $interval_time_array["$key"]["end"]=$end_time; + } + + + /* Skip ALL this, as duplicate entries are fine + + if ($DB) {print_r($interval_time_array);} + if ($DB) {"

".print_r($interval_holiday_array);} + + $location_array=explode("|", $locale); + for ($n=0; $nLocation: ".$locale."
";} + + $all_ct_holidays=array(); + $dup_check_stmt="select ct_holidays From vicidial_call_times where call_time_id in ('".implode("', '", $call_times_array)."') and ct_holidays is not null and length(ct_holidays)>=2"; + $dup_check_rslt=mysql_to_mysqli($dup_check_stmt, $link); + + if ($DB) {echo $dup_check_stmt."
";} + + while($dc_row=mysqli_fetch_row($dup_check_rslt)) + { + $ct_array=explode("|", $dc_row[0]); + $ct_array=array_filter($ct_array); + $all_ct_holidays=array_merge($all_ct_holidays, $ct_array); + } + $all_ct_holidays=array_unique($all_ct_holidays); + print_r($all_ct_holidays); + + $active_holidays=array(); + $holiday_stmt="select holiday_id, holiday_date, ct_default_start, ct_default_stop from vicidial_call_time_holidays where holiday_id in ('".implode("', '", $all_ct_holidays)."') and holiday_date in ('".implode("', '", array_keys($interval_time_array))."') and holiday_status='ACTIVE'"; + if ($holiday_id) {$holiday_stmt.=" and holiday_id not like '".$holiday_id."%'";} + $holiday_rslt=mysql_to_mysqli($holiday_stmt, $link); + # if ($DB) {echo $holiday_stmt."
"; print_r($holiday_rslt); exit;} + while ($holiday_row=mysqli_fetch_array($holiday_rslt)) + { + $holiday_id=$holiday_row["holiday_id"]; + $holiday_date=$holiday_row["holiday_date"]; + $ct_default_start=$holiday_row["ct_default_start"]; + $ct_default_stop=$holiday_row["ct_default_stop"]; + + foreach ($interval_time_array as $date => $times) + { + $date=preg_replace('/X/', '', $date); + if ($holiday_date==$date) + { + if (($times["start"]<$ct_default_start && $ct_default_start<$times["end"]) || ($times["start"]<$ct_default_stop && $ct_default_stop<$times["end"])) + { + $error_msg.="ERROR: New interval conflicts with holiday $holiday_id on $holiday_date. Interval covers $times[start] to $times[end] - Holiday covers $ct_default_start to $ct_default_stop
"; + } + else + { + $ok_msg.="OK - Interval shares date with holiday $holiday_id on $holiday_date. Interval covers $times[start] to $times[end] - Holiday covers $ct_default_start to $ct_default_stop
"; + } + } + } + } + } + */ + return array($error_msg, $ok_msg, $interval_time_array); + } + + + +### UPDATE INTERVAL STATUSES +$upd_stmt="update inbound_disabled_entries set status='LIVE' where status='ACTIVE' and start_datetime<=now() and end_datetime>=now()"; +$upd_rslt=mysql_to_mysqli($upd_stmt, $link); + +$upd_stmt="update inbound_disabled_entries set status='COMPLETED' where status in ('LIVE', 'ACTIVE') and end_datetime<=now()"; +$upd_rslt=mysql_to_mysqli($upd_stmt, $link); + +$HEADER.="\n"; +$HEADER.="\n"; +$HEADER.="\n"; +$HEADER.="\n"; + +$HEADER.="\n"; + +$HEADER.="\n"; +$HEADER.="\n"; + +$HEADER.="\n"; + +$HEADER.="\n"; +$HEADER.="VOX inbound line controls\n"; + +header ("Content-type: text/html; charset=utf-8"); +echo $HEADER; +require("admin_header.php"); + +echo "
"; +echo "\n"; +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0) + { + echo ""; + echo ""; + echo ""; + } +?> + +=now(), 0, 1) as live, if(status='LIVE', 0, if(status='ACTIVE', 1, 2)) as dispo_rank from inbound_disabled_entries where status in ('ACTIVE', 'LIVE') order by dispo_rank asc, location desc, live asc, start_datetime asc"; +$rslt=mysql_to_mysqli($stmt, $link); +if (mysqli_num_rows($rslt)>0) + { + echo "\n"; + echo "\t
\n"; +# echo $holiday_stmt."
"; +echo "Inbound line controls:"; +echo "
 
These settings will disable the inbound lines for the selected locations:
1) Please select the locations that you wish to disable Inbound calling:
+ ".trim($location_array[$l])."
\n"; + } + $k++; + echo "All locations"; + + ?> +
2) + + + + + +  \n"; + + $event_cols=5; + foreach ($event_restrictions as $current_event => $required_user_level) + { + if(in_array($current_event, $expected_files) && $user_level<$required_user_level) + { + $event_cols--; + } + } + + for ($i=0; $i=$event_restrictions["$event"]) + { + echo "\t\t\t\n"; + } + } + ?> + + + + + ".($user_level==9 ? "==>>" : "")."\n"; + + for ($i=0; $i=$event_restrictions["$event"]) + { + echo ""; + } + } +/* + echo ""; + + echo ""; + + echo " + + + + +
While the inbound lines are down, please play the following turn-away message:   (edit default messages)" : ""); ?>
\n"; + echo "\t\t\t\t".ucfirst($event)." "; + echo ($user_level>=$mand_lvl ? "change" : ""); + echo "\n\t\t\t
"; + echo ""; + echo ""; + echo ($audio_array["$event"] ? "".$audio_array["$event"]."" : "(none set)"); + echo ""; + echo ""; + echo ""; + echo ""; + echo ($audio_array["closed"] ? "".$audio_array["closed"]."" : "(none set)"); + echo ""; + echo ""; + echo ""; + echo ""; + echo ($audio_array["weather"] ? "".$audio_array["weather"]."" : "(none set)"); + echo ""; + echo ""; + echo ""; + echo ""; + echo ($audio_array["holiday"] ? "".$audio_array["holiday"]."" : "(none set)"); + echo ""; + + echo ""; + echo ""; + echo ""; + echo ($audio_array["custom"] ? "".$audio_array["custom"]."" : "(none set)"); + echo ""; +*/ + ?> +
  + + "; + echo ""; + } + else + { + echo " "; + } + ?> + + +
+
3) Select the dates and times that the inbound lines should be down:
  + + + + + + +
+ " size=10 maxsize=10> +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + +
to + " size=10 maxsize=10> +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + +
+ ** All times for inbound disable are in time, using 24-hour military time **
  +
4) Hit Submit to Execute :   + $insert_flag|$action|$location|$message|$message_type|$from_date|$from_hour|$from_min|$to_date|$to_hour|$to_min"; ?> +
"; + echo "$error_msg"; + echo "
\n"; + + $starttime_str=""; + $endtime_str=""; + $array_str=""; + + echo "\n"; + +# echo "\t\n"; +# echo "\n"; + + $i=0; + while ($row=mysqli_fetch_array($rslt)) + { + + if($row["dispo_rank"]==0 && !$live_header) + { + $live_header="\n\t\n\n"; + echo $live_header; + echo "\n"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "\n"; + } + else if($row["dispo_rank"]==1 && !$active_header) + { + $active_header="\n\t\n\n"; + echo $active_header; + # echo "

"; +# echo "\n"; +# echo "\t\n\n"; + } + +$stmt="select * from inbound_disabled_entries where status in ('COMPLETED', 'CANCELLED') and end_datetime>=now()-INTERVAL $completed_days DAY order by status asc, end_datetime desc, start_datetime desc"; +$rslt=mysql_to_mysqli($stmt, $link); +if (mysqli_num_rows($rslt)>0) + { + echo "\n\t\n\n"; + echo "\n"; + } +?> + +



Currently Active Inbound Disable Status:

CURRENTLY LIVE DOWNTIMES:

 Created ByInterval Start Date/TimeInterval End Date/TimeLocationMessageStatusLast ModifiedLast Modified By

UPCOMING SCHEDULED DOWNTIMES:

\n"; + echo "\n"; + echo "\n"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "\n"; + $i=0; + } + + + if ($i%2==0) + {$bgcolor="FFFFFF";} else {$bgcolor="E6E6E6";} + + $full_name=""; + $fn_stmt="select full_name from vicidial_users where user='$row[user]'"; + $fn_rslt=mysql_to_mysqli($fn_stmt, $link); + if(mysqli_num_rows($fn_rslt)>0) + { + $fn_row=mysqli_fetch_row($fn_rslt); + $full_name="
$fn_row[0]"; + } + + $modify_name=""; + $fn_stmt="select full_name from vicidial_users where user='$row[modified_by]'"; + $fn_rslt=mysql_to_mysqli($fn_stmt, $link); + if(mysqli_num_rows($fn_rslt)>0) + { + $fn_row=mysqli_fetch_row($fn_rslt); + $modify_name="
$fn_row[0]"; + } + + $font_class=($row["status"]=="LIVE" ? "blink" : "small_standard"); + + $location=preg_replace('/\|/', ', ', $row["location"]); + +# echo ""; +# echo ""; +# echo ""; + + echo "\n"; + echo "\n"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "\n"; + + echo "\n"; + echo "\t"; + echo "\n"; +# echo "\n"; +# echo ""; +# echo "\n"; + $i++; + } + $starttime_str=preg_replace('/, $/', '', $starttime_str); + $endtime_str=preg_replace('/, $/', '', $endtime_str); + $array_str=preg_replace('/,$/', '', $array_str); + + echo "\t
 Created ByInterval Start Date/TimeInterval End Date/TimeLocationMessageStatusLast ModifiedLast Modified By

$row[status]

Inbound $location lines are scheduled to be down from ".substr($row["start_datetime"], 0, -3)." to ".substr($row["end_datetime"], 0, -3).", requested by $row[user]$full_name
Message being played: ".$row["message"]."

\n"; + echo " "; + if ($row["status"]!="LIVE") + { + $starttime_str.="'".preg_replace('/[^0-9]/', '', $row["start_datetime"])."', "; + $button_value="CANCEL"; + } + else + { + $endtime_str.="'".preg_replace('/[^0-9]/', '', $row["end_datetime"])."', "; + $button_value="RESUME"; + } + $array_str.="\n['$row[interval_id]', '".preg_replace('/[^0-9]/', '', $row["start_datetime"])."', '".preg_replace('/[^0-9]/', '', $row["end_datetime"])."', '".$row["status"]."'],"; + echo ""; + echo "$row[user]$full_name".substr($row["start_datetime"], 0, -3)."".substr($row["end_datetime"], 0, -3)."$location$row[message_type]
Play message
".($row["status"]!="LIVE" ? "SCHEDULED" : "LIVE")."$row[modify_date]$row[modified_by]$modify_name
\n"; + echo ""; + + echo "
 "; +# echo "
\n\t



Recent Completed/Cancelled Disabled Inbound - past $completed_days days:
"; + echo "\n"; + echo "\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\n"; + + $i=0; + while($row=mysqli_fetch_array($rslt)) + { + if ($i%2==0) + {$bgcolor="FFFFFF";} else {$bgcolor="E6E6E6";} + + $location=preg_replace('/\|/', ', ', $row["location"]); + + $full_name=""; + $fn_stmt="select full_name from vicidial_users where user='$row[user]'"; + $fn_rslt=mysql_to_mysqli($fn_stmt, $link); + if(mysqli_num_rows($fn_rslt)>0) + { + $fn_row=mysqli_fetch_row($fn_rslt); + $full_name=", $fn_row[0]"; + } + + + echo "\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\t\n"; + echo "\n"; + $i++; + } + + echo "
Created byInterval start date/timeInterval end date/timeLocationMessageStatusLast ModifiedModified By
".$row["user"].$full_name."".substr($row["start_datetime"], 0, -3)."".substr($row["end_datetime"], 0, -3)."".$location."".$row["message_type"]." - ".$row["message"]."".$row["status"]."".$row["modify_date"]."".$row["modified_by"]."
\n"; + echo "
+ + + + +

\n\n"; + + +echo "\n\n\n


\n"._QXZ("script runtime").": $RUNtime "._QXZ("seconds")."|$db_source
"; + +# print_r($location_array); + +echo "
"; +echo ""; +echo ""; + +# header ("Content-type: text/html; charset=utf-8"); +# echo $HEADER; +# require("admin_header.php"); +# echo $MAIN; + +?> diff --git a/agc_2-X/trunk/extras/upgrade_2.14.sql b/agc_2-X/trunk/extras/upgrade_2.14.sql index fdd096df..e48443f6 100644 --- a/agc_2-X/trunk/extras/upgrade_2.14.sql +++ b/agc_2-X/trunk/extras/upgrade_2.14.sql @@ -2669,3 +2669,31 @@ UPDATE system_settings SET db_schema_version='1709',db_schema_update_date=NOW() ALTER TABLE vicidial_call_time_holidays ADD holiday_method VARCHAR(40) default 'REPLACE'; UPDATE system_settings SET db_schema_version='1710',db_schema_update_date=NOW() where db_schema_version < 1710; + +CREATE TABLE inbound_disabled_entries ( +interval_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, +start_datetime DATETIME, +end_datetime datetime, +location VARCHAR(50), +message VARCHAR(100), +message_type ENUM('MEETING','CLOSED','WEATHER','CUSTOM'), +status ENUM('ACTIVE','LIVE','COMPLETED','CANCELLED') DEFAULT 'ACTIVE', +user VARCHAR(20), +modify_date TIMESTAMP NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), +modified_by VARCHAR(20), +holiday_id VARCHAR(30), +KEY inbound_disabled_entries_key (start_datetime,end_datetime,location) +) ENGINE=MyISAM; + +CREATE TABLE vicidial_pending_ar ( +ar_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, +report_id VARCHAR(30) default '', +start_datetime DATETIME, +php_script VARCHAR(50) default '', +user VARCHAR(20), +status ENUM('TRIGGERED','AUTHORIZED','COMPLETED','ERROR') DEFAULT 'TRIGGERED', +notes TEXT, +KEY pending_ar_key (user,start_datetime) +) ENGINE=MyISAM; + +UPDATE system_settings SET db_schema_version='1711',db_schema_update_date=NOW() where db_schema_version < 1711; diff --git a/agc_2-X/trunk/www/vicidial/functions.php b/agc_2-X/trunk/www/vicidial/functions.php index e1106a38..868a89f9 100644 --- a/agc_2-X/trunk/www/vicidial/functions.php +++ b/agc_2-X/trunk/www/vicidial/functions.php @@ -4,7 +4,7 @@ # # functions for administrative scripts and reports # -# Copyright (C) 2023 Matt Florell LICENSE: AGPLv2 +# Copyright (C) 2024 Matt Florell LICENSE: AGPLv2 # # # CHANGES: @@ -41,6 +41,7 @@ # 210615-0952 - Default security fix, CVE-2021-28854 # 220921-1209 - Added more failed login logging in user_authorization function # 231119-1445 - Added user_authorization for HCI page users +# 240401-1459 - Added check for vicidial_pending_ar entries in user_authorization # ##### BEGIN validate user login credentials, check for failed lock out ##### @@ -51,7 +52,7 @@ function user_authorization($user,$pass,$user_option,$user_update,$api_call) ############################################# ##### START SYSTEM_SETTINGS LOOKUP ##### - $stmt = "SELECT use_non_latin,webroot_writable,pass_hash_enabled,pass_key,pass_cost,allow_ip_lists,system_ip_blacklist,two_factor_auth_hours,two_factor_container FROM system_settings;"; + $stmt = "SELECT use_non_latin,webroot_writable,pass_hash_enabled,pass_key,pass_cost,allow_ip_lists,system_ip_blacklist,two_factor_auth_hours,two_factor_container,enable_auto_reports FROM system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $qm_conf_ct = mysqli_num_rows($rslt); @@ -67,6 +68,7 @@ function user_authorization($user,$pass,$user_option,$user_update,$api_call) $SSsystem_ip_blacklist = $row[6]; $SStwo_factor_auth_hours = $row[7]; $SStwo_factor_container = $row[8]; + $SSenable_auto_reports = $row[9]; } ##### END SETTINGS LOOKUP ##### ########################################### @@ -260,6 +262,26 @@ function user_authorization($user,$pass,$user_option,$user_update,$api_call) if ($VALID_2FA < 1) { $auth_key='2FA'; + + if ( ($user_option == 'REPORTS') and ($SSenable_auto_reports > 0) ) + { + # If this is a REPORT, check for a triggered automated report, and if so, allow it to proceed + $stmt="SELECT count(*) from vicidial_pending_ar where user='$user' and status='TRIGGERED' and start_datetime > date_add(now(), interval 5 minute);"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($DB) {echo "$stmt\n";} + $auth_check_to_print = mysqli_num_rows($rslt); + if ($auth_check_to_print > 0) + { + $row=mysqli_fetch_row($rslt); + if ($row[0] > 0); + { + $stmt="UPDATE vicidial_pending_ar SET status='AUTHORIZED',notes='$NOW_TIME $ip' WHERE user='$user' and status='TRIGGERED' and start_datetime > date_add(now(), interval 5 minute) order by start_datetime limit 1;"; + $rslt=mysql_to_mysqli($stmt, $link); + + $auth_key='GOOD'; + } + } + } } } }