From c5a734ccf691c14a77c1cf6f2ed5097294ada01b Mon Sep 17 00:00:00 2001 From: mattf Date: Mon, 27 Mar 2017 19:56:06 +0000 Subject: [PATCH] Added Drop Lists feature, allowing you to add new leads to a list built from DROP calls from inbound groups on a scheduled basis. git-svn-id: svn://192.168.202.10@2714 3d104415-ff17-0410-8863-d5cf3c621b8a --- UPGRADE | 3 + agi/agi-VDAD_ALL_inbound.agi | 53 +- bin/ADMIN_archive_log_tables.pl | 133 ++- bin/ADMIN_keepalive_ALL.pl | 55 +- bin/AST_VDauto_dial.pl | 20 +- bin/AST_droplist_process.pl | 1225 ++++++++++++++++++++++++++++ bin/AST_email_web_report.pl | 2 +- bin/FastAGI_log.pl | 32 +- extras/MySQL_AST_CREATE_tables.sql | 42 +- extras/upgrade_2.14.sql | 41 + www/vicidial/admin.php | 680 ++++++++++++++- www/vicidial/admin_header.php | 20 +- www/vicidial/help.php | 108 ++- 13 files changed, 2377 insertions(+), 37 deletions(-) create mode 100644 bin/AST_droplist_process.pl diff --git a/UPGRADE b/UPGRADE index eb88c694..f11a2159 100644 --- a/UPGRADE +++ b/UPGRADE @@ -130,6 +130,9 @@ OTHER CHANGES: of seconds an agent can be in a specific pause code before the real-time report will show them in a different color. +25. Added Drop Lists feature, allowing you to add new leads to a list built from + DROPped calls from inbound groups on a scheduled basis. + diff --git a/agi/agi-VDAD_ALL_inbound.agi b/agi/agi-VDAD_ALL_inbound.agi index 01ec28d0..a30c43ef 100644 --- a/agi/agi-VDAD_ALL_inbound.agi +++ b/agi/agi-VDAD_ALL_inbound.agi @@ -208,6 +208,7 @@ # 170220-2134 - Added areacode_filter options # 170221-0912 - Fix for areacode_filter logging issue # 170309-1514 - Added populate_state_areacode option +# 170325-1104 - Added optional vicidial_drop_log logging # $script = 'agi-VDAD_ALL_inbound.agi'; @@ -337,7 +338,7 @@ $sthA->finish(); ############################################# ##### START SYSTEM SETTINGS LOOKUP ##### -$stmtA = "SELECT enable_queuemetrics_logging,queuemetrics_server_ip,queuemetrics_dbname,queuemetrics_login,queuemetrics_pass,queuemetrics_log_id,queuemetrics_eq_prepend,queuemetrics_pe_phone_append,did_agent_log,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,did_ra_extensions_enabled,queuemetrics_socket,queuemetrics_socket_url,enable_did_entry_list_id FROM system_settings;"; +$stmtA = "SELECT enable_queuemetrics_logging,queuemetrics_server_ip,queuemetrics_dbname,queuemetrics_login,queuemetrics_pass,queuemetrics_log_id,queuemetrics_eq_prepend,queuemetrics_pe_phone_append,did_agent_log,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,did_ra_extensions_enabled,queuemetrics_socket,queuemetrics_socket_url,enable_did_entry_list_id,enable_drop_lists FROM system_settings;"; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthArows=$sthA->rows; @@ -363,6 +364,7 @@ if ($sthArows > 0) $queuemetrics_socket = $aryA[15]; $queuemetrics_socket_url = $aryA[16]; $enable_did_entry_list_id = $aryA[17]; + $enable_drop_lists = $aryA[18]; } $sthA->finish(); ##### END SYSTEM SETTINGS LOOKUP ##### @@ -1545,6 +1547,13 @@ if ( ( ( ( ($hm < $ct_default_start) || ($hm > $ct_default_stop) ) && ($hm >= $c $VLEcount++; } + if ($enable_drop_lists > 0) + { + $stmtA="INSERT IGNORE INTO vicidial_drop_log SET uniqueid='$uniqueid',server_ip='$VARserver_ip',drop_date=NOW(),lead_id='$insert_lead_id',campaign_id='$VD_campaign_id',status='$AHstatus',phone_code='$phone_code',phone_number='$phone_number';"; + $VDDLaffected_rows = $dbhA->do($stmtA); + if ($AGILOG) {$agi_string = "-- vicidial_drop_log insert: |$VDDLaffected_rows|$uniqueid|$insert_lead_id|$AHstatus|"; &agi_output;} + } + $called_since_last_resetSQL=''; if ( ($after_hours_action =~ /VOICEMAIL|HANGUP|MESSAGE|VMAIL_NO_INST/) && ($after_hours_lead_reset =~ /Y/) ) {$called_since_last_resetSQL = ",called_since_last_reset='N'";} @@ -1785,6 +1794,13 @@ if ( ( ($no_agent_no_queue =~ /Y|NO_PAUSED/) || ($MCnanque_override > 0) ) && ($ $VLEcount++; } + if ($enable_drop_lists > 0) + { + $stmtA="INSERT IGNORE INTO vicidial_drop_log SET uniqueid='$uniqueid',server_ip='$VARserver_ip',drop_date=NOW(),lead_id='$insert_lead_id',campaign_id='$VD_campaign_id',status='$NQstatus',phone_code='$phone_code',phone_number='$phone_number';"; + $VDDLaffected_rows = $dbhA->do($stmtA); + if ($AGILOG) {$agi_string = "-- vicidial_drop_log insert: |$VDDLaffected_rows|$uniqueid|$insert_lead_id|$NQstatus|"; &agi_output;} + } + $called_since_last_resetSQL=''; if ( ($no_agent_action =~ /VOICEMAIL|HANGUP|MESSAGE|VMAIL_NO_INST/) && ($nanq_lead_reset =~ /Y/) ) {$called_since_last_resetSQL = ",called_since_last_reset='N'";} @@ -3836,6 +3852,13 @@ while ( ($drop_timer <= $DROP_TIME) && ($wait_in_queue > 0) && ($MCdrop_override $dbhP=$dbhA; $mysql_count='02076'; $MEL_aff_rows=$affected_rows; &mysql_error_logging; if ($AGILOG) {$agi_string = "-- VDCL vcl update: |$affected_rows|$insert_lead_id|\n|$stmtA|"; &agi_output;} + if ($enable_drop_lists > 0) + { + $stmtA="INSERT IGNORE INTO vicidial_drop_log SET uniqueid='$uniqueid',server_ip='$VARserver_ip',drop_date=NOW(),lead_id='$insert_lead_id',campaign_id='$VD_campaign_id',status='HXFER',phone_code='$phone_code',phone_number='$phone_number';"; + $VDDLaffected_rows = $dbhA->do($stmtA); + if ($AGILOG) {$agi_string = "-- vicidial_drop_log insert: |$VDDLaffected_rows|$uniqueid|$insert_lead_id|HXFER|"; &agi_output;} + } + $populate_provinceUPDATE=''; if ($populate_lead_province =~ /OW_did/i) {&populate_lead_province_process;} @@ -4304,6 +4327,13 @@ while ( ($drop_timer <= $DROP_TIME) && ($wait_in_queue > 0) && ($MCdrop_override $VLEcount++; } + if ($enable_drop_lists > 0) + { + $stmtA="INSERT IGNORE INTO vicidial_drop_log SET uniqueid='$uniqueid',server_ip='$VARserver_ip',drop_date=NOW(),lead_id='$insert_lead_id',campaign_id='$VD_campaign_id',status='$NQstatus',phone_code='$phone_code',phone_number='$phone_number';"; + $VDDLaffected_rows = $dbhA->do($stmtA); + if ($AGILOG) {$agi_string = "-- vicidial_drop_log insert: |$VDDLaffected_rows|$uniqueid|$insert_lead_id|$NQstatus|"; &agi_output;} + } + $called_since_last_resetSQL=''; if ( ($areacode_filter_action =~ /VOICEMAIL|HANGUP|MESSAGE|VMAIL_NO_INST/) && ($nanq_lead_reset =~ /Y/) ) {$called_since_last_resetSQL = ",called_since_last_reset='N'";} @@ -4856,6 +4886,13 @@ while ( ($drop_timer <= $DROP_TIME) && ($wait_in_queue > 0) && ($MCdrop_override $dbhP=$dbhA; $mysql_count='02091'; $MEL_aff_rows=$affected_rows; &mysql_error_logging; if ($AGILOG) {$agi_string = "-- VDCL vcl update: |$affected_rows|$insert_lead_id|\n|$stmtA|"; &agi_output;} + if ($enable_drop_lists > 0) + { + $stmtA="INSERT IGNORE INTO vicidial_drop_log SET uniqueid='$uniqueid',server_ip='$VARserver_ip',drop_date=NOW(),lead_id='$insert_lead_id',campaign_id='$VD_campaign_id',status='$HT_status',phone_code='$phone_code',phone_number='$phone_number';"; + $VDDLaffected_rows = $dbhA->do($stmtA); + if ($AGILOG) {$agi_string = "-- vicidial_drop_log insert: |$VDDLaffected_rows|$uniqueid|$insert_lead_id|$HT_status|"; &agi_output;} + } + if ( ($enable_queuemetrics_logging > 0) && ($exitwithkey < 1) ) { $dbhB = DBI->connect("DBI:mysql:$queuemetrics_dbname:$queuemetrics_server_ip:3306", "$queuemetrics_login", "$queuemetrics_pass") @@ -5305,6 +5342,13 @@ while ( ($drop_timer <= $DROP_TIME) && ($wait_in_queue > 0) && ($MCdrop_override $dbhP=$dbhA; $mysql_count='02091'; $MEL_aff_rows=$affected_rows; &mysql_error_logging; if ($AGILOG) {$agi_string = "-- VDCL vcl update: |$affected_rows|$insert_lead_id|\n|$stmtA|"; &agi_output;} + if ($enable_drop_lists > 0) + { + $stmtA="INSERT IGNORE INTO vicidial_drop_log SET uniqueid='$uniqueid',server_ip='$VARserver_ip',drop_date=NOW(),lead_id='$insert_lead_id',campaign_id='$VD_campaign_id',status='$HT_status',phone_code='$phone_code',phone_number='$phone_number';"; + $VDDLaffected_rows = $dbhA->do($stmtA); + if ($AGILOG) {$agi_string = "-- vicidial_drop_log insert: |$VDDLaffected_rows|$uniqueid|$insert_lead_id|$HT_status|"; &agi_output;} + } + if ( ($enable_queuemetrics_logging > 0) && ($exitwithkey < 1) ) { $dbhB = DBI->connect("DBI:mysql:$queuemetrics_dbname:$queuemetrics_server_ip:3306", "$queuemetrics_login", "$queuemetrics_pass") @@ -5664,6 +5708,13 @@ if ( ($drop_timer > $DROP_TIME) || ($MCdrop_override > 0) ) $dbhP=$dbhA; $mysql_count='02100'; $MEL_aff_rows=$affected_rows; &mysql_error_logging; if ($AGILOG) {$agi_string = "-- VDCL vcl update: |$affected_rows|$insert_lead_id|\n|$stmtA|"; &agi_output;} + if ($enable_drop_lists > 0) + { + $stmtA="INSERT IGNORE INTO vicidial_drop_log SET uniqueid='$uniqueid',server_ip='$VARserver_ip',drop_date=NOW(),lead_id='$insert_lead_id',campaign_id='$VD_campaign_id',status='$DRstatus',phone_code='$phone_code',phone_number='$phone_number';"; + $VDDLaffected_rows = $dbhA->do($stmtA); + if ($AGILOG) {$agi_string = "-- vicidial_drop_log insert: |$VDDLaffected_rows|$uniqueid|$insert_lead_id|$DRstatus|"; &agi_output;} + } + $called_since_last_resetSQL=''; if ( ($drop_action =~ /VOICEMAIL|HANGUP|MESSAGE|VMAIL_NO_INST/) && ($drop_lead_reset =~ /Y/) ) {$called_since_last_resetSQL = ",called_since_last_reset='N'";} diff --git a/bin/ADMIN_archive_log_tables.pl b/bin/ADMIN_archive_log_tables.pl index 08b9e089..5dc0e744 100644 --- a/bin/ADMIN_archive_log_tables.pl +++ b/bin/ADMIN_archive_log_tables.pl @@ -46,6 +46,7 @@ # 160827-0957 - Added --recording-log-days=X option # 161212-1659 - Added --cpd-log-purge-days=XX option # 170209-1213 - Added vicidial_api_urls table rolling and purging to all vicidial_api_log sections +# 170325-1108 - Added vicidial_drop_log table rolling # $CALC_TEST=0; @@ -66,7 +67,7 @@ if (length($ARGV[0])>1) if ($args =~ /--help/i) { print "allowed run time options:\n"; - print " [--daily] = only archives call_log, vicidial_log_extended and vicidial_dial_log tables, only last 24 hours kept\n"; + print " [--daily] = only archives call_log, vicidial_log_extended, vicidial_dial_log and vicidial_drop_log tables, only last 24 hours kept\n"; print " [--carrier-daily] = will also archive the vicidial_carrier_log table when --daily is run\n"; print " [--vlog-daily] = will also archive the vicidial_log table when --daily is run\n"; print " [--days=XX] = number of days to archive past, default is 732(2 years)\n"; @@ -75,7 +76,7 @@ if (length($ARGV[0])>1) print " [--queue-log] = archive QM queue_log records\n"; print " [--only-trim-archive-level-one] = will not perform normal archive process, instead this will only delete records\n"; print " that are older than XX months from least important log archive tables:\n"; - print " call_log_archive, vicidial_log_extended_archive, vicidial_dial_log_archive\n"; + print " call_log_archive, vicidial_log_extended_archive, vicidial_dial_log_archive, vicidial_drop_log\n"; print " [--only-trim-archive-level-two] = same as --only-trim-archive-level-one, except includes tables:\n"; print " vicidial_carrier_log_archive, vicidial_api_log_archive\n"; print " [--only-trim-archive-level-three] = same as --only-trim-archive-level-two, except includes tables:\n"; @@ -338,7 +339,7 @@ if (!$T) # instead this will only delete records that are older than XX months from # least important log archive tables. There are three levels: # LEVEL 1: - # call_log_archive, vicidial_log_extended_archive, vicidial_dial_log_archive + # call_log_archive, vicidial_log_extended_archive, vicidial_dial_log_archive, vicidial_drop_log # LEVEL 2: # vicidial_carrier_log_archive, vicidial_api_log_archive # LEVEL 3: @@ -406,6 +407,35 @@ if (!$T) } ##### END vicidial_log_extended_archive trim processing ##### + ##### BEGIN vicidial_drop_log_archive trim processing ##### + $stmtA = "SELECT count(*) from vicidial_drop_log_archive;"; + $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; + $vicidial_drop_log_archive_count = $aryA[0]; + } + $sthA->finish(); + + if (!$Q) {print "Trimming vicidial_drop_log_archive table... ($vicidial_drop_log_archive_count)\n";} + + $rv = $sthA->err(); + if (!$rv) + { + $stmtA = "DELETE FROM vicidial_drop_log_archive WHERE drop_date < '$del_time';"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows = $sthA->rows; + if (!$Q) {print "$sthArows rows deleted from vicidial_drop_log_archive table \n";} + + $stmtA = "optimize table vicidial_drop_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + } + ##### END vicidial_drop_log_archive trim processing ##### + ##### BEGIN vicidial_dial_log_archive trim processing ##### $stmtA = "SELECT count(*) from vicidial_dial_log_archive;"; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; @@ -726,6 +756,53 @@ if (!$T) ##### END vicidial_log_extended DAILY processing ##### + ##### BEGIN vicidial_drop_log DAILY processing ##### + $stmtA = "SELECT count(*) from vicidial_drop_log;"; + $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; + $vicidial_drop_log_count = $aryA[0]; + } + $sthA->finish(); + + $stmtA = "SELECT count(*) from vicidial_drop_log_archive;"; + $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; + $vicidial_drop_log_archive_count = $aryA[0]; + } + $sthA->finish(); + + if (!$Q) {print "\nProcessing vicidial_drop_log table... ($vicidial_drop_log_count|$vicidial_drop_log_archive_count)\n";} + $stmtA = "INSERT IGNORE INTO vicidial_drop_log_archive SELECT * from vicidial_drop_log;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + + $sthArows = $sthA->rows; + if (!$Q) {print "$sthArows rows inserted into vicidial_drop_log_archive table \n";} + + $rv = $sthA->err(); + if (!$rv) + { + $stmtA = "DELETE FROM vicidial_drop_log WHERE drop_date < '$del_time';"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows = $sthA->rows; + if (!$Q) {print "$sthArows rows deleted from vicidial_drop_log table \n";} + + $stmtA = "optimize table vicidial_drop_log;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + } + ##### END vicidial_drop_log DAILY processing ##### + + ##### BEGIN vicidial_dial_log DAILY processing ##### $stmtA = "SELECT count(*) from vicidial_dial_log;"; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; @@ -1277,6 +1354,56 @@ if (!$T) } + ##### vicidial_drop_log + $stmtA = "SELECT count(*) from vicidial_drop_log;"; + $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; + $vicidial_drop_log_count = $aryA[0]; + } + $sthA->finish(); + + $stmtA = "SELECT count(*) from vicidial_drop_log_archive;"; + $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; + $vicidial_drop_log_archive_count = $aryA[0]; + } + $sthA->finish(); + + if (!$Q) {print "\nProcessing vicidial_drop_log table... ($vicidial_drop_log_count|$vicidial_drop_log_archive_count)\n";} + $stmtA = "INSERT IGNORE INTO vicidial_drop_log_archive SELECT * from vicidial_drop_log;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + + $sthArows = $sthA->rows; + if (!$Q) {print "$sthArows rows inserted into vicidial_drop_log_archive table \n";} + + $rv = $sthA->err(); + if (!$rv) + { + $stmtA = "DELETE FROM vicidial_drop_log WHERE drop_date < '$del_time';"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows = $sthA->rows; + if (!$Q) {print "$sthArows rows deleted from vicidial_drop_log table \n";} + + $stmtA = "optimize table vicidial_drop_log;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + + $stmtA = "optimize table vicidial_drop_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + } + + ##### vicidial_dial_log $stmtA = "SELECT count(*) from vicidial_dial_log;"; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; diff --git a/bin/ADMIN_keepalive_ALL.pl b/bin/ADMIN_keepalive_ALL.pl index 56c58a59..ecc2dd53 100644 --- a/bin/ADMIN_keepalive_ALL.pl +++ b/bin/ADMIN_keepalive_ALL.pl @@ -116,9 +116,10 @@ # 170113-1645 - Added call menu in-group option DYNAMIC_INGROUP_VAR for use with cm_phonesearch.agi # 170304-2039 - Added automated reports triggering code # 170320-1338 - Added conf_qualify phones option for IAX +# 170327-0847 - Added drop list triggering code # -$build = '170320-1338'; +$build = '170327-0847'; $DB=0; # Debug flag $teodDB=0; # flag to log Timeclock End of Day processes to log file @@ -824,7 +825,7 @@ $dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VA ##### Get the settings from system_settings ##### -$stmtA = "SELECT sounds_central_control_active,active_voicemail_server,custom_dialplan_entry,default_codecs,generate_cross_server_exten,voicemail_timezones,default_voicemail_timezone,call_menu_qualify_enabled,allow_voicemail_greeting,reload_timestamp,meetme_enter_login_filename,meetme_enter_leave3way_filename,allow_chats,enable_auto_reports FROM system_settings;"; +$stmtA = "SELECT sounds_central_control_active,active_voicemail_server,custom_dialplan_entry,default_codecs,generate_cross_server_exten,voicemail_timezones,default_voicemail_timezone,call_menu_qualify_enabled,allow_voicemail_greeting,reload_timestamp,meetme_enter_login_filename,meetme_enter_leave3way_filename,allow_chats,enable_auto_reports,enable_drop_lists FROM system_settings;"; # print "$stmtA\n"; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; @@ -846,6 +847,7 @@ if ($sthArows > 0) $meetme_enter_leave3way_filename = $aryA[11]; $SSallow_chats = $aryA[12]; $SSenable_auto_reports = $aryA[13]; + $SSenable_drop_lists = $aryA[14]; } $sthA->finish(); if ($DBXXX > 0) {print "SYSTEM SETTINGS: $sounds_central_control_active|$active_voicemail_server|$SScustom_dialplan_entry|$SSdefault_codecs\n";} @@ -3952,7 +3954,7 @@ if ($sthBrows > 0) ################################################################################ ##### BEGIN automated reports ################################################################################ -if ($SSenable_auto_reports > 0) +if ($SSenable_auto_reports > 0) { $THISserver_voicemailSQL=''; if ($THISserver_voicemail > 0) {$THISserver_voicemailSQL=",'active_voicemail_server'";} @@ -3997,6 +3999,53 @@ if ($SSenable_auto_reports > 0) +################################################################################ +##### BEGIN drop lists +################################################################################ +if ($SSenable_drop_lists > 0) + { + $THISserver_voicemailSQL=''; + if ($THISserver_voicemail > 0) {$THISserver_voicemailSQL=",'active_voicemail_server'";} + $stmtA = "SELECT dl_id FROM vicidial_drop_lists where ( (dl_server IN('$server_ip'$THISserver_voicemailSQL) ) and ( ( (active='Y') and (dl_times LIKE \"%$reset_test%\") and ( (dl_weekdays LIKE \"%$wday%\") or (dl_monthdays LIKE \"%$mday%\") ) ) or (run_now_trigger='Y') ) ) order by dl_id limit 1000;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthBrows=$sthA->rows; + if ($DB) {print "Checking for Drop Lists: |$sthBrows|$stmtA|\n";} + $r=0; + while ($sthBrows > $r) + { + @aryA = $sthA->fetchrow_array; + $dl_idARY[$r] = $aryA[0]; + $r++; + } + $sthA->finish(); + + if ($sthBrows > 0) + { + $r=0; + while ($sthBrows > $r) + { + $temp_droplist = $dl_idARY[$r]; + $ar_command = "$PATHhome/AST_droplist_process.pl --quiet --log-to-adminlog --dl-id=$temp_droplist "; + + if ($DB) {print "starting drop list process in a screen... |AR$temp_droplist|\n";} + `/usr/bin/screen -d -m -S AR$temp_droplist $ar_command `; + + $stmtA="UPDATE vicidial_drop_lists SET run_now_trigger='N' where run_now_trigger='Y' and dl_server IN('$server_ip'$THISserver_voicemailSQL) and dl_id='$dl_idARY[$r]';"; + $ARaffected_rows = $dbhA->do($stmtA); + if ($DB) {print "FINISHED: $ARaffected_rows|$stmtA|";} + + $r++; + } + if ($DB) {print "Drop Lists DONE: $r\n";} + } + } +################################################################################ +##### END drop lists +################################################################################ + + + ################################################################################ ##### BEGIN reset lists diff --git a/bin/AST_VDauto_dial.pl b/bin/AST_VDauto_dial.pl index 3b73f7c6..44468d74 100644 --- a/bin/AST_VDauto_dial.pl +++ b/bin/AST_VDauto_dial.pl @@ -122,6 +122,7 @@ # 151006-0936 - Changed campaign_cid_areacodes to operate with 2-5 digit areacodes # 161102-1031 - Fixed QM partition problem # 170313-1041 - Added CHAT option to inbound_queue_no_dial +# 170325-1106 - Added optional vicidial_drop_log logging # ### begin parsing run-time options ### @@ -282,7 +283,7 @@ $event_string='LOGGED INTO MYSQL SERVER ON 1 CONNECTION|'; ############################################# ##### START QUEUEMETRICS LOGGING LOOKUP ##### -$stmtA = "SELECT enable_queuemetrics_logging,queuemetrics_server_ip,queuemetrics_dbname,queuemetrics_login,queuemetrics_pass,queuemetrics_log_id,outbound_autodial_active,queuemetrics_loginout,queuemetrics_addmember_enabled,queuemetrics_pause_type FROM system_settings;"; +$stmtA = "SELECT enable_queuemetrics_logging,queuemetrics_server_ip,queuemetrics_dbname,queuemetrics_login,queuemetrics_pass,queuemetrics_log_id,outbound_autodial_active,queuemetrics_loginout,queuemetrics_addmember_enabled,queuemetrics_pause_type,enable_drop_lists FROM system_settings;"; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthArows=$sthA->rows; @@ -299,6 +300,7 @@ if ($sthArows > 0) $queuemetrics_loginout = $aryA[7]; $queuemetrics_addmember_enabled = $aryA[8]; $queuemetrics_pause_type = $aryA[9]; + $enable_drop_lists = $aryA[10]; } $sthA->finish(); ##### END QUEUEMETRICS LOGGING LOOKUP ##### @@ -1604,6 +1606,14 @@ while($one_day_interval > 0) $stmtB = "INSERT INTO vicidial_log_extended set uniqueid='$CLuniqueid',server_ip='$server_ip',call_date='$SQLdate',lead_id = '$CLlead_id',caller_code='$KLcallerid[$kill_vac]',custom_call_id='';"; $affected_rowsB = $dbhA->do($stmtB); + if ( ($enable_drop_lists > 1) && ($CLnew_status =~ /DROP/) ) + { + $stmtC="INSERT IGNORE INTO vicidial_drop_log SET uniqueid='$CLuniqueid',server_ip='$server_ip',drop_date=NOW(),lead_id='$CLlead_id',campaign_id='$CLcampaign_id',status='DROP',phone_code='$CLphone_code',phone_number='$CLphone_number';"; + $affected_rowsC = $dbhA->do($stmtC); + $event_string = "-- DROP vicidial_drop_log insert: |$affected_rowsC|$CLuniqueid|$CLlead_id|$CLnew_status|"; + &event_logger; + } + $event_string = "| dead NA call added to log $CLuniqueid|$CLlead_id|$CLphone_number|$CLstatus|$CLnew_status|$affected_rows|$affected_rowsB|$insertVLcount"; &event_logger; } @@ -2413,6 +2423,14 @@ while($one_day_interval > 0) $stmtB = "INSERT INTO vicidial_log_extended set uniqueid='$CLuniqueid',server_ip='$server_ip',call_date='$SQLdate',lead_id = '$CLlead_id',caller_code='$CLcallerid',custom_call_id='';"; $affected_rowsB = $dbhA->do($stmtB); + if ($enable_drop_lists > 1) + { + $stmtC="INSERT IGNORE INTO vicidial_drop_log SET uniqueid='$CLuniqueid',server_ip='$server_ip',drop_date=NOW(),lead_id='$CLlead_id',campaign_id='$CLcampaign_id',status='DROP',phone_code='$CLphone_code',phone_number='$CLphone_number';"; + $affected_rowsC = $dbhA->do($stmtC); + $event_string = "-- DROP vicidial_drop_log insert: |$affected_rowsC|$CLuniqueid|$CLlead_id|"; + &event_logger; + } + $event_string = "| dead NA call added to logs $CLuniqueid|$CLlead_id|$CLphone_number|$CLstatus|DROP|$affected_rows|$affected_rowsB|"; &event_logger; diff --git a/bin/AST_droplist_process.pl b/bin/AST_droplist_process.pl new file mode 100644 index 00000000..afba399d --- /dev/null +++ b/bin/AST_droplist_process.pl @@ -0,0 +1,1225 @@ +#!/usr/bin/perl +# +# AST_droplist_process.pl version: 2.14 +# +# This script is designed to run the drop list process. +# +# NOTE: You need to use Drop Lists in the admin web screens to configure a drop list process to run in this script +# example: +# /usr/share/astguiclient/AST_droplist_process.pl --dl-id=test_drop_list +# +# Copyright (C) 2017 Matt Florell LICENSE: AGPLv2 +# +# CHANGES +# 170326-1541 - First version +# + +$US = '_'; +$MT[0] = ''; +$log_to_adminlog=0; +$dl_id=''; + + +$secX = time(); +$time = $secX; + ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); +$year = ($year + 1900); +$mon++; +if ($mon < 10) {$mon = "0$mon";} +if ($mday < 10) {$mday = "0$mday";} +if ($hour < 10) {$hour = "0$hour";} +if ($min < 10) {$min = "0$min";} +if ($sec < 10) {$sec = "0$sec";} +$timestamp = "$year-$mon-$mday $hour:$min:$sec"; +$filedate = "$year$mon$mday"; +$ABIfiledate = "$mon-$mday-$year$us$hour$min$sec"; +$shipdate = "$year-$mon-$mday"; +$start_date = "$year$mon$mday"; +$datestamp = "$year/$mon/$mday $hour:$min"; +$hms = "$hour$min$sec"; + + +### begin parsing run-time options ### +if (length($ARGV[0])>1) + { + $i=0; + while ($#ARGV >= $i) + { + $args = "$args $ARGV[$i]"; + $i++; + } + + if ($args =~ /--help/i) + { + print "allowed run time options:\n"; + print " [--quiet] = quiet\n"; + print " [--test] = test\n"; + print " [--debug] = debugging messages\n"; + print " [--debugX] = Super debugging messages\n"; + print " [--log-to-adminlog] = Put an entry in the admin log after this process runs\n"; + print " [--dl-id=XXXXXXXX] = Drop List ID in the system to run the process for\n"; + print "\n"; + + exit; + } + else + { + if ($args =~ /--debug/i) + { + $DB=1; + print "\n----- DEBUG MODE -----\n\n"; + } + if ($args =~ /--debugX/i) + { + $DBX=1; + print "\n----- SUPER DEBUG MODE -----\n\n"; + } + if ($args =~ /-q/i) + { + $q=1; $Q=1; + } + if ($args =~ /--test/i) + { + $T=1; $TEST=1; + if ($DB > 0) {print "\n----- TESTING -----\n\n";} + } + if ($args =~ /--log-to-adminlog/) + { + $log_to_adminlog=1; + if ($DB > 0) {print "\n----- LOGGING TO THE ADMIN LOG -----\n\n";} + } + if ($args =~ /--dl-id=/i) + { + @data_in = split(/--dl-id=/,$args); + $dl_id = $data_in[1]; + $dl_id =~ s/ .*//gi; + $dl_id =~ s/:/,/gi; + if ($DB > 0) {print "\n----- DROP LIST ID: $dl_id -----\n\n";} + } + } + } +else + { + print "no command line options set, exiting.\n"; + exit; + } +### end parsing run-time options ### + +# default path to astguiclient configuration file: +$PATHconf = '/etc/astguiclient.conf'; + +open(conf, "$PATHconf") || die "can't open $PATHconf: $!\n"; +@conf = ; +close(conf); +$i=0; +foreach(@conf) + { + $line = $conf[$i]; + $line =~ s/ |>|\n|\r|\t|\#.*|;.*//gi; + if ( ($line =~ /^PATHhome/) && ($CLIhome < 1) ) + {$PATHhome = $line; $PATHhome =~ s/.*=//gi;} + if ( ($line =~ /^PATHlogs/) && ($CLIlogs < 1) ) + {$PATHlogs = $line; $PATHlogs =~ s/.*=//gi;} + if ( ($line =~ /^PATHagi/) && ($CLIagi < 1) ) + {$PATHagi = $line; $PATHagi =~ s/.*=//gi;} + if ( ($line =~ /^PATHweb/) && ($CLIweb < 1) ) + {$PATHweb = $line; $PATHweb =~ s/.*=//gi;} + if ( ($line =~ /^PATHsounds/) && ($CLIsounds < 1) ) + {$PATHsounds = $line; $PATHsounds =~ s/.*=//gi;} + if ( ($line =~ /^PATHmonitor/) && ($CLImonitor < 1) ) + {$PATHmonitor = $line; $PATHmonitor =~ s/.*=//gi;} + if ( ($line =~ /^VARserver_ip/) && ($CLIserver_ip < 1) ) + {$VARserver_ip = $line; $VARserver_ip =~ s/.*=//gi;} + if ( ($line =~ /^VARDB_server/) && ($CLIDB_server < 1) ) + {$VARDB_server = $line; $VARDB_server =~ s/.*=//gi;} + if ( ($line =~ /^VARDB_database/) && ($CLIDB_database < 1) ) + {$VARDB_database = $line; $VARDB_database =~ s/.*=//gi;} + if ( ($line =~ /^VARDB_user/) && ($CLIDB_user < 1) ) + {$VARDB_user = $line; $VARDB_user =~ s/.*=//gi;} + if ( ($line =~ /^VARDB_pass/) && ($CLIDB_pass < 1) ) + {$VARDB_pass = $line; $VARDB_pass =~ s/.*=//gi;} + if ( ($line =~ /^VARDB_port/) && ($CLIDB_port < 1) ) + {$VARDB_port = $line; $VARDB_port =~ s/.*=//gi;} +# if ( ($line =~ /^VARREPORT_host/) && ($CLIREPORT_host < 1) ) +# {$VARREPORT_host = $line; $VARREPORT_host =~ s/.*=//gi;} +# if ( ($line =~ /^VARREPORT_user/) && ($CLIREPORT_user < 1) ) +# {$VARREPORT_user = $line; $VARREPORT_user =~ s/.*=//gi;} +# if ( ($line =~ /^VARREPORT_pass/) && ($CLIREPORT_pass < 1) ) +# {$VARREPORT_pass = $line; $VARREPORT_pass =~ s/.*=//gi;} +# if ( ($line =~ /^VARREPORT_dir/) && ($CLIREPORT_dir < 1) ) +# {$VARREPORT_dir = $line; $VARREPORT_dir =~ s/.*=//gi;} + if ( ($line =~ /^VARREPORT_port/) && ($CLIREPORT_port < 1) ) + {$VARREPORT_port = $line; $VARREPORT_port =~ s/.*=//gi;} + $i++; + } + +# Customized Variables +$server_ip = $VARserver_ip; # Asterisk server IP + +if (!$Q) + { + print "\n\n\n\n\n\n\n\n\n\n\n\n-- AST_droplist_process.pl --\n\n"; + print "This program is designed to run the drop list process. \n"; + print "\n"; + } + +if (length($dl_id) < 1) + { + print "ERROR, no drop list ID defined\n"; + exit; + } + +use DBI; + +$dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass") + or die "Couldn't connect to database: " . DBI->errstr; + +############################################# +##### START SYSTEM_SETTINGS LOOKUP ##### +$stmtA = "SELECT enable_drop_lists FROM system_settings;"; +$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; + $enable_drop_lists = $aryA[0]; + } +$sthA->finish(); +##### END SETTINGS LOOKUP ##### +########################################### + +if ($enable_drop_lists < 1) + { + print "ERROR: enable_drop_lists is disabled in system settings, exiting...\n"; + exit; + } + +### Grab Server values from the database +$stmtA = "SELECT local_gmt FROM servers where server_ip = '$server_ip';"; +$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; +$sthA->execute or die "executing: $stmtA ", $dbhA->errstr; +@aryA = $sthA->fetchrow_array; +$DBSERVER_GMT = $aryA[0]; +if (length($DBSERVER_GMT)>0) {$SERVER_GMT = $DBSERVER_GMT;} +$sthA->finish(); + + $LOCAL_GMT_OFF = $SERVER_GMT; + $LOCAL_GMT_OFF_STD = $SERVER_GMT; + +if ($isdst) {$LOCAL_GMT_OFF++;} +if ($DB) {print "SEED TIME $secX : $year-$mon-$mday $hour:$min:$sec LOCAL GMT OFFSET NOW: $LOCAL_GMT_OFF\n";} + + +### Grab Server values from the database +$stmtA = "SELECT closer_campaigns,drop_statuses,duplicate_check,list_id from vicidial_drop_lists where dl_id='$dl_id';"; +$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; + $closer_campaigns = $aryA[0]; + $drop_statuses = $aryA[1]; + $duplicate_check = $aryA[2]; + $list_id = $aryA[3]; + + $drop_statusesSQL = $drop_statuses; + $drop_statusesSQL =~ s/^ |^ | -$//gi; + $drop_statusesSQL =~ s/ /','/gi; + $drop_statusesSQL = "and status IN('$drop_statusesSQL')"; + + $closer_campaignsSQL = $closer_campaigns; + $closer_campaignsSQL =~ s/^ | -$//gi; + $closer_campaignsSQL =~ s/ /','/gi; + $closer_campaignsSQL = "and campaign_id IN('$closer_campaignsSQL')"; + + if ($DB) {print "DROP LIST RUN: |$dl_id|$list_id|\n";} + } +else + { + if (!$Q) {print "ERROR: drop list not found: $dl_id\n";} + exit; + } +$sthA->finish(); + +if (length($list_id) < 2) + { + if (!$Q) {print "ERROR: list_id not defined: $list_id\n";} + exit; + } + +### gather user information for last manager who edited the drop list +$stmtA = "SELECT user from vicidial_admin_log where event_section='DROPLISTS' and record_id='$dl_id' and event_type IN('ADD','MODIFY','COPY','DELETE') order by admin_log_id desc 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; + $http_user = $aryA[0]; + } +else + { + if (!$Q) {print "ERROR: No drop list manager user found: $dl_id\n";} + exit; + } +$sthA->finish(); + +### If duplicate check enabled, find campaign lists +$duplicate_checkSQL=''; +if ($duplicate_check =~ /LIST/) + { + if ($duplicate_check =~ /LIST_CAMPAIGN_LISTS/) + { + $list_campaign_id=''; + $stmtA = "SELECT campaign_id from vicidial_lists where list_id='$list_id';"; + $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; + $list_campaign_id = $aryA[0]; + } + $sthA->finish(); + if (length($list_campaign_id) > 0) + { + $lists_SQL=''; + $stmtA = "SELECT list_id from vicidial_lists where campaign_id='$list_campaign_id';"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + $r=0; + while ($sthArows > $r) + { + @aryA = $sthA->fetchrow_array; + $lists_SQL .= "'$aryA[0]',"; + $r++; + } + $sthA->finish(); + $lists_SQL =~ s/,$//gi; + $duplicate_checkSQL = "and list_id IN($lists_SQL)"; + } + else + { + $duplicate_checkSQL = "and list_id='$list_id'"; + } + } + else + { + $duplicate_checkSQL = "and list_id='$list_id'"; + } + } + + +##### BEGIN drop list process ##### +$insert_counter=0; +$duplicate_counter=0; +$stmtB="UPDATE vicidial_drop_log set drop_processed='U' where drop_processed='N' $closer_campaignsSQL $drop_statusesSQL;"; +$Baffected_rows = $dbhA->do($stmtB); +if ($DB) {print "DROP LOG UPDATE: |$Baffected_rows|$stmtB|\n";} + +$stmtA = "SELECT lead_id,drop_date,phone_code,phone_number,campaign_id,status,uniqueid from vicidial_drop_log where drop_processed='U' $closer_campaignsSQL $drop_statusesSQL order by drop_date;"; +$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; +$sthA->execute or die "executing: $stmtA ", $dbhA->errstr; +$sthDROProws=$sthA->rows; +if ($DB) {print "DROP LOG GATHER: |$sthArows|$stmtA|\n";} +$q=0; +while ($sthDROProws > $q) + { + @aryA = $sthA->fetchrow_array; + $Alead_id[$q] = $aryA[0]; + $Adrop_date[$q] = $aryA[1]; + $Aphone_code[$q] = $aryA[2]; + $Aphone_number[$q] = $aryA[3]; + $Acampaign_id[$q] = $aryA[4]; + $Astatus[$q] = $aryA[5]; + $Auniqueid[$q] = $aryA[6]; + if ($DB) {print "DROP LIST RUN: |$dl_id|$list_id|\n";} + $q++; + } +$sthA->finish(); + +$q=0; +while ($sthDROProws > $q) + { + $ingroup_name=''; + $stmtB = "SELECT group_name from vicidial_inbound_groups where group_id='$Acampaign_id[$q]';"; + $sthA = $dbhA->prepare($stmtB) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthBrows=$sthA->rows; + if ($sthBrows > 0) + { + @aryA = $sthA->fetchrow_array; + $ingroup_name = $aryA[0]; + } + $sthA->finish(); + + $duplicate=0; + $USarea = substr($Aphone_number[$q], 0, 3); + if ($duplicate_check =~ /LIST/) + { + $stmtB = "SELECT count(*) from vicidial_list where phone_number='$Aphone_number[$q]' $duplicate_checkSQL;"; + $sthA = $dbhA->prepare($stmtB) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthBrows=$sthA->rows; + if ($sthBrows > 0) + { + @aryA = $sthA->fetchrow_array; + $duplicate = $aryA[0]; + } + $sthA->finish(); + } + if ($duplicate < 1) + { + + ### BEGIN figure out the timezone of the phone number ### + $PC_processed=0; + ### UNITED STATES ### + if ($Aphone_code[$q] =~ /^1$/) + { + $stmtA = "SELECT country_code,country,areacode,state,GMT_offset,DST,DST_range,geographic_description from vicidial_phone_codes where country_code='$Aphone_code[$q]' and areacode='$USarea';"; + 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; + $rec_count=0; + while ($sthArows > $rec_count) + { + @aryA = $sthA->fetchrow_array; + $gmt_offset = $aryA[4]; $gmt_offset =~ s/\+| //gi; + $dst = $aryA[5]; + $dst_range = $aryA[6]; + $PC_processed++; + $rec_count++; + } + $sthA->finish(); + } + ### MEXICO ### + if ($Aphone_code[$q] =~ /^52$/) + { + $stmtA = "SELECT country_code,country,areacode,state,GMT_offset,DST,DST_range,geographic_description from vicidial_phone_codes where country_code='$Aphone_code[$q]' and areacode='$USarea';"; + 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; + $rec_count=0; + while ($sthArows > $rec_count) + { + @aryA = $sthA->fetchrow_array; + $gmt_offset = $aryA[4]; $gmt_offset =~ s/\+| //gi; + $dst = $aryA[5]; + $dst_range = $aryA[6]; + $PC_processed++; + $rec_count++; + } + $sthA->finish(); + } + ### AUSTRALIA ### + if ($Aphone_code[$q] =~ /^61$/) + { + $stmtA = "SELECT country_code,country,areacode,state,GMT_offset,DST,DST_range,geographic_description from vicidial_phone_codes where country_code='$Aphone_code[$q]' and state='$state';"; + 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; + $rec_count=0; + while ($sthArows > $rec_count) + { + @aryA = $sthA->fetchrow_array; + $gmt_offset = $aryA[4]; $gmt_offset =~ s/\+| //gi; + $dst = $aryA[5]; + $dst_range = $aryA[6]; + $PC_processed++; + $rec_count++; + } + $sthA->finish(); + } + ### ALL OTHER COUNTRY CODES ### + if (!$PC_processed) + { + $stmtA = "SELECT country_code,country,areacode,state,GMT_offset,DST,DST_range,geographic_description from vicidial_phone_codes where country_code='$Aphone_code[$q]';"; + 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; + $rec_count=0; + while ($sthArows > $rec_count) + { + @aryA = $sthA->fetchrow_array; + $gmt_offset = $aryA[4]; $gmt_offset =~ s/\+| //gi; + $dst = $aryA[5]; + $dst_range = $aryA[6]; + $PC_processed++; + $rec_count++; + } + $sthA->finish(); + } + + ### Find out if DST to raise the gmt offset ### + $AC_GMT_diff = ($area_GMT - $LOCAL_GMT_OFF_STD); + $AC_localtime = ($secX + (3600 * $AC_GMT_diff)); + ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($AC_localtime); + $year = ($year + 1900); + $mon++; + if ($mon < 10) {$mon = "0$mon";} + if ($mday < 10) {$mday = "0$mday";} + if ($hour < 10) {$hour = "0$hour";} + if ($min < 10) {$min = "0$min";} + if ($sec < 10) {$sec = "0$sec";} + $dsec = ( ( ($hour * 3600) + ($min * 60) ) + $sec ); + + $AC_processed=0; + + if ( (!$AC_processed) && ($dst_range =~ /SSM-FSN/) ) + { + if ($DBX) {print " Second Sunday March to First Sunday November\n";} + &USACAN_dstcalc; + if ($DBX) {print " DST: $USACAN_DST\n";} + if ($USACAN_DST) {$gmt_offset++;} + $AC_processed++; + } + if ( (!$AC_processed) && ($dst_range =~ /FSA-LSO/) ) + { + if ($DBX) {print " First Sunday April to Last Sunday October\n";} + &NA_dstcalc; + if ($DBX) {print " DST: $NA_DST\n";} + if ($NA_DST) {$gmt_offset++;} + $AC_processed++; + } + if ( (!$AC_processed) && ($dst_range =~ /LSM-LSO/) ) + { + if ($DBX) {print " Last Sunday March to Last Sunday October\n";} + &GBR_dstcalc; + if ($DBX) {print " DST: $GBR_DST\n";} + if ($GBR_DST) {$gmt_offset++;} + $AC_processed++; + } + if ( (!$AC_processed) && ($dst_range =~ /LSO-LSM/) ) + { + if ($DBX) {print " Last Sunday October to Last Sunday March\n";} + &AUS_dstcalc; + if ($DBX) {print " DST: $AUS_DST\n";} + if ($AUS_DST) {$gmt_offset++;} + $AC_processed++; + } + if ( (!$AC_processed) && ($dst_range =~ /FSO-LSM/) ) + { + if ($DBX) {print " First Sunday October to Last Sunday March\n";} + &AUST_dstcalc; + if ($DBX) {print " DST: $AUST_DST\n";} + if ($AUST_DST) {$gmt_offset++;} + $AC_processed++; + } + if ( (!$AC_processed) && ($area_GMT_method =~ /FSO-FSA/) ) + { + if ($DBX) {print " First Sunday October to First Sunday April\n";} + &AUSE_dstcalc; + if ($DBX) {print " DST: $AUSE_DST\n";} + if ($AUSE_DST) {$area_GMT++;} + $AC_processed++; + } + if ( (!$AC_processed) && ($dst_range =~ /FSO-TSM/) ) + { + if ($DBX) {print " First Sunday October to Third Sunday March\n";} + &NZL_dstcalc; + if ($DBX) {print " DST: $NZL_DST\n";} + if ($NZL_DST) {$gmt_offset++;} + $AC_processed++; + } + if ( (!$AC_processed) && ($area_GMT_method =~ /LSS-FSA/) ) + { + if ($DBX) {print " Last Sunday September to First Sunday April\n";} + &NZLN_dstcalc; + if ($DBX) {print " DST: $NZLN_DST\n";} + if ($NZLN_DST) {$area_GMT++;} + $AC_processed++; + } + if ( (!$AC_processed) && ($dst_range =~ /TSO-LSF/) ) + { + if ($DBX) {print " Third Sunday October to Last Sunday February\n";} + &BZL_dstcalc; + if ($DBX) {print " DST: $BZL_DST\n";} + if ($BZL_DST) {$gmt_offset++;} + $AC_processed++; + } + if (!$AC_processed) + { + if ($DBX) {print " No DST Method Found\n";} + if ($DBX) {print " DST: 0\n";} + $AC_processed++; + } + + ### END figure out the timezone of the phone number ### + + $stmtC="INSERT INTO vicidial_list set entry_date=NOW(),user='',phone_number='$Aphone_number[$q]',phone_code='$Aphone_code[$q]',list_id='$list_id',last_local_call_time='$Adrop_date[$q]',comments='$Acampaign_id[$q] - $ingroup_name - $Adrop_date[$q]',source_id='$Alead_id[$q]',status='NEW',called_since_last_reset='N',gmt_offset_now='$gmt_offset';"; + $Caffected_rows = $dbhA->do($stmtC); + $insert_counter++; + + if ($DB) {print "DROP LIST INSERT: |$insert_counter|$Caffected_rows|$stmtC|\n";} + } + else + { + $duplicate_counter++; + if ($DB) {print "DROP LIST DUPLICATE: |$duplicate_counter|$duplicate|$stmtB|\n";} + } + + $stmtD="UPDATE vicidial_drop_log set drop_processed='Y' where drop_processed='U' and drop_date='$Adrop_date[$q]' and uniqueid='$Auniqueid[$q]';"; + $Daffected_rows = $dbhA->do($stmtD); + if ($DB) {print "DROP LOG PROCESSED UPDATE: |$Daffected_rows|$stmtD|\n";} + + $q++; + } + + +$secY = time(); +$secRUN = ($secY - $secX); +if ($secRUN < 1) {$secRUN=1;} + +$stmtA="UPDATE vicidial_drop_lists set last_run=NOW(),run_now_trigger='N' where dl_id='$dl_id';"; +$affected_rows = $dbhA->do($stmtA); + +if ($log_to_adminlog > 0) + { + $SQL_log = "$stmtA"; + $SQL_log =~ s/;|\\|\"//gi; + $stmtB="INSERT INTO vicidial_admin_log set event_date=NOW(), user='$http_user', ip_address='$server_ip', event_section='DROPLISTS', event_type='EXPORT', record_id='$dl_id', event_code='ADMIN DROP LIST RUN', event_sql=\"$SQL_log\", event_notes='Run time: $secRUN seconds. INSERTS: $insert_counter DUPLICATES: $duplicate_counter TOTAL: $q';"; + $Iaffected_rows = $dbhA->do($stmtB); + if ($DB) {print "ADMIN LOGGING FINISHED: $affected_rows|$Iaffected_rows|$stmtA|$stmtB\n";} + } + +exit; + + + + +sub USACAN_dstcalc { +#********************************************************************** +# SSM-FSN +# This is returns 1 if Daylight Savings Time is in effect and 0 if +# Standard time is in effect. +# Based on Second Sunday March to First Sunday November at 2 am. +# INPUTS: +# mm INTEGER Month. +# dd INTEGER Day of the month. +# ns INTEGER Seconds into the day. +# dow INTEGER Day of week (0=Sunday, to 6=Saturday) +# OPTIONAL INPUT: +# timezone INTEGER hour difference UTC - local standard time +# (DEFAULT is blank) +# make calculations based on UTC time, +# which means shift at 10:00 UTC in April +# and 9:00 UTC in October +# OUTPUT: +# INTEGER 1 = DST, 0 = not DST +# +# S M T W T F S +# 1 2 3 4 5 6 7 +# 8 9 10 11 12 13 14 +#15 16 17 18 19 20 21 +#22 23 24 25 26 27 28 +#29 30 31 +# +# S M T W T F S +# 1 2 3 4 5 6 +# 7 8 9 10 11 12 13 +#14 15 16 17 18 19 20 +#21 22 23 24 25 26 27 +#28 29 30 31 +# +#********************************************************************** + + $USACAN_DST=0; + $mm = $mon; + $dd = $mday; + $ns = $dsec; + $dow= $wday; + + if ($mm < 3 || $mm > 11) { + $USACAN_DST=0; return 0; + } elsif ($mm >= 4 && $mm <= 10) { + $USACAN_DST=1; return 1; + } elsif ($mm == 3) { + if ($dd > 13) { + $USACAN_DST=1; return 1; + } elsif ($dd >= ($dow+8)) { + if ($timezone) { + if ($dow == 0 && $ns < (7200+$timezone*3600)) { + $USACAN_DST=0; return 0; + } else { + $USACAN_DST=1; return 1; + } + } else { + if ($dow == 0 && $ns < 7200) { + $USACAN_DST=0; return 0; + } else { + $USACAN_DST=1; return 1; + } + } + } else { + $USACAN_DST=0; return 0; + } + } elsif ($mm == 11) { + if ($dd > 7) { + $USACAN_DST=0; return 0; + } elsif ($dd < ($dow+1)) { + $USACAN_DST=1; return 1; + } elsif ($dow == 0) { + if ($timezone) { # UTC calculations + if ($ns < (7200+($timezone-1)*3600)) { + $USACAN_DST=1; return 1; + } else { + $USACAN_DST=0; return 0; + } + } else { # local time calculations + if ($ns < 7200) { + $USACAN_DST=1; return 1; + } else { + $USACAN_DST=0; return 0; + } + } + } else { + $USACAN_DST=0; return 0; + } + } # end of month checks +} # end of subroutine dstcalc + + + + +sub NA_dstcalc { +#********************************************************************** +# FSA-LSO +# This is returns 1 if Daylight Savings Time is in effect and 0 if +# Standard time is in effect. +# Based on first Sunday in April and last Sunday in October at 2 am. +#********************************************************************** + + $NA_DST=0; + $mm = $mon; + $dd = $mday; + $ns = $dsec; + $dow= $wday; + + if ($mm < 4 || $mm > 10) { + $NA_DST=0; return 0; + } elsif ($mm >= 5 && $mm <= 9) { + $NA_DST=1; return 1; + } elsif ($mm == 4) { + if ($dd > 7) { + $NA_DST=1; return 1; + } elsif ($dd >= ($dow+1)) { + if ($timezone) { + if ($dow == 0 && $ns < (7200+$timezone*3600)) { + $NA_DST=0; return 0; + } else { + $NA_DST=1; return 1; + } + } else { + if ($dow == 0 && $ns < 7200) { + $NA_DST=0; return 0; + } else { + $NA_DST=1; return 1; + } + } + } else { + $NA_DST=0; return 0; + } + } elsif ($mm == 10) { + if ($dd < 25) { + $NA_DST=1; return 1; + } elsif ($dd < ($dow+25)) { + $NA_DST=1; return 1; + } elsif ($dow == 0) { + if ($timezone) { # UTC calculations + if ($ns < (7200+($timezone-1)*3600)) { + $NA_DST=1; return 1; + } else { + $NA_DST=0; return 0; + } + } else { # local time calculations + if ($ns < 7200) { + $NA_DST=1; return 1; + } else { + $NA_DST=0; return 0; + } + } + } else { + $NA_DST=0; return 0; + } + } # end of month checks +} # end of subroutine dstcalc + + + + +sub GBR_dstcalc { +#********************************************************************** +# LSM-LSO +# This is returns 1 if Daylight Savings Time is in effect and 0 if +# Standard time is in effect. +# Based on last Sunday in March and last Sunday in October at 1 am. +#********************************************************************** + + $GBR_DST=0; + $mm = $mon; + $dd = $mday; + $ns = $dsec; + $dow= $wday; + + if ($mm < 3 || $mm > 10) { + $GBR_DST=0; return 0; + } elsif ($mm >= 4 && $mm <= 9) { + $GBR_DST=1; return 1; + } elsif ($mm == 3) { + if ($dd < 25) { + $GBR_DST=0; return 0; + } elsif ($dd < ($dow+25)) { + $GBR_DST=0; return 0; + } elsif ($dow == 0) { + if ($timezone) { # UTC calculations + if ($ns < (3600+($timezone-1)*3600)) { + $GBR_DST=0; return 0; + } else { + $GBR_DST=1; return 1; + } + } else { # local time calculations + if ($ns < 3600) { + $GBR_DST=0; return 0; + } else { + $GBR_DST=1; return 1; + } + } + } else { + $GBR_DST=1; return 1; + } + } elsif ($mm == 10) { + if ($dd < 25) { + $GBR_DST=1; return 1; + } elsif ($dd < ($dow+25)) { + $GBR_DST=1; return 1; + } elsif ($dow == 0) { + if ($timezone) { # UTC calculations + if ($ns < (3600+($timezone-1)*3600)) { + $GBR_DST=1; return 1; + } else { + $GBR_DST=0; return 0; + } + } else { # local time calculations + if ($ns < 3600) { + $GBR_DST=1; return 1; + } else { + $GBR_DST=0; return 0; + } + } + } else { + $GBR_DST=0; return 0; + } + } # end of month checks +} # end of subroutine dstcalc + + + + +sub AUS_dstcalc { +#********************************************************************** +# LSO-LSM +# This is returns 1 if Daylight Savings Time is in effect and 0 if +# Standard time is in effect. +# Based on last Sunday in October and last Sunday in March at 1 am. +#********************************************************************** + + $AUS_DST=0; + $mm = $mon; + $dd = $mday; + $ns = $dsec; + $dow= $wday; + + if ($mm < 3 || $mm > 10) { + $AUS_DST=1; return 1; + } elsif ($mm >= 4 && $mm <= 9) { + $AUS_DST=0; return 0; + } elsif ($mm == 3) { + if ($dd < 25) { + $AUS_DST=1; return 1; + } elsif ($dd < ($dow+25)) { + $AUS_DST=1; return 1; + } elsif ($dow == 0) { + if ($timezone) { # UTC calculations + if ($ns < (3600+($timezone-1)*3600)) { + $AUS_DST=1; return 1; + } else { + $AUS_DST=0; return 0; + } + } else { # local time calculations + if ($ns < 3600) { + $AUS_DST=1; return 1; + } else { + $AUS_DST=0; return 0; + } + } + } else { + $AUS_DST=0; return 0; + } + } elsif ($mm == 10) { + if ($dd < 25) { + $AUS_DST=0; return 0; + } elsif ($dd < ($dow+25)) { + $AUS_DST=0; return 0; + } elsif ($dow == 0) { + if ($timezone) { # UTC calculations + if ($ns < (3600+($timezone-1)*3600)) { + $AUS_DST=0; return 0; + } else { + $AUS_DST=1; return 1; + } + } else { # local time calculations + if ($ns < 3600) { + $AUS_DST=0; return 0; + } else { + $AUS_DST=1; return 1; + } + } + } else { + $AUS_DST=1; return 1; + } + } # end of month checks +} # end of subroutine dstcalc + + + + + +sub AUST_dstcalc { +#********************************************************************** +# FSO-LSM +# TASMANIA ONLY +# This is returns 1 if Daylight Savings Time is in effect and 0 if +# Standard time is in effect. +# Based on first Sunday in October and last Sunday in March at 1 am. +#********************************************************************** + + $AUST_DST=0; + $mm = $mon; + $dd = $mday; + $ns = $dsec; + $dow= $wday; + + if ($mm < 3 || $mm > 10) { + $AUST_DST=1; return 1; + } elsif ($mm >= 4 && $mm <= 9) { + $AUST_DST=0; return 0; + } elsif ($mm == 3) { + if ($dd < 25) { + $AUST_DST=1; return 1; + } elsif ($dd < ($dow+25)) { + $AUST_DST=1; return 1; + } elsif ($dow == 0) { + if ($timezone) { # UTC calculations + if ($ns < (3600+($timezone-1)*3600)) { + $AUST_DST=1; return 1; + } else { + $AUST_DST=0; return 0; + } + } else { # local time calculations + if ($ns < 3600) { + $AUST_DST=1; return 1; + } else { + $AUST_DST=0; return 0; + } + } + } else { + $AUST_DST=0; return 0; + } + } elsif ($mm == 10) { + if ($dd >= 8) { + $AUST_DST=1; return 1; + } elsif ($dd >= ($dow+1)) { + if ($timezone) { + if ($dow == 0 && $ns < (7200+$timezone*3600)) { + $AUST_DST=0; return 0; + } else { + $AUST_DST=1; return 1; + } + } else { + if ($dow == 0 && $ns < 3600) { + $AUST_DST=0; return 0; + } else { + $AUST_DST=1; return 1; + } + } + } else { + $AUST_DST=0; return 0; + } + } # end of month checks +} # end of subroutine dstcalc + + + + + +sub AUSE_dstcalc { +#********************************************************************** +# FSO-FSA +# 2008+ AUSTRALIA ONLY (country code 61) +# This is returns 1 if Daylight Savings Time is in effect and 0 if +# Standard time is in effect. +# Based on first Sunday in October and first Sunday in April at 1 am. +#********************************************************************** + + $AUSE_DST=0; + $mm = $mon; + $dd = $mday; + $ns = $dsec; + $dow= $wday; + + if ($mm < 4 || $mm > 10) { + $AUSE_DST=1; return 1; + } elsif ($mm >= 5 && $mm <= 9) { + $AUSE_DST=0; return 0; + } elsif ($mm == 4) { + if ($dd > 7) { + $AUSE_DST=0; return 1; + } elsif ($dd >= ($dow+1)) { + if ($timezone) { + if ($dow == 0 && $ns < (3600+$timezone*3600)) { + $AUSE_DST=1; return 0; + } else { + $AUSE_DST=0; return 1; + } + } else { + if ($dow == 0 && $ns < 7200) { + $AUSE_DST=1; return 0; + } else { + $AUSE_DST=0; return 1; + } + } + } else { + $AUSE_DST=1; return 0; + } + } elsif ($mm == 10) { + if ($dd >= 8) { + $AUSE_DST=1; return 1; + } elsif ($dd >= ($dow+1)) { + if ($timezone) { + if ($dow == 0 && $ns < (7200+$timezone*3600)) { + $AUSE_DST=0; return 0; + } else { + $AUSE_DST=1; return 1; + } + } else { + if ($dow == 0 && $ns < 3600) { + $AUSE_DST=0; return 0; + } else { + $AUSE_DST=1; return 1; + } + } + } else { + $AUSE_DST=0; return 0; + } + } # end of month checks +} # end of subroutine dstcalc + + + + + +sub NZL_dstcalc { +#********************************************************************** +# FSO-TSM +# This is returns 1 if Daylight Savings Time is in effect and 0 if +# Standard time is in effect. +# Based on first Sunday in October and third Sunday in March at 1 am. +#********************************************************************** + + $NZL_DST=0; + $mm = $mon; + $dd = $mday; + $ns = $dsec; + $dow= $wday; + + if ($mm < 3 || $mm > 10) { + $NZL_DST=1; return 1; + } elsif ($mm >= 4 && $mm <= 9) { + $NZL_DST=0; return 0; + } elsif ($mm == 3) { + if ($dd < 14) { + $NZL_DST=1; return 1; + } elsif ($dd < ($dow+14)) { + $NZL_DST=1; return 1; + } elsif ($dow == 0) { + if ($timezone) { # UTC calculations + if ($ns < (3600+($timezone-1)*3600)) { + $NZL_DST=1; return 1; + } else { + $NZL_DST=0; return 0; + } + } else { # local time calculations + if ($ns < 3600) { + $NZL_DST=1; return 1; + } else { + $NZL_DST=0; return 0; + } + } + } else { + $NZL_DST=0; return 0; + } + } elsif ($mm == 10) { + if ($dd >= 8) { + $NZL_DST=1; return 1; + } elsif ($dd >= ($dow+1)) { + if ($timezone) { + if ($dow == 0 && $ns < (7200+$timezone*3600)) { + $NZL_DST=0; return 0; + } else { + $NZL_DST=1; return 1; + } + } else { + if ($dow == 0 && $ns < 3600) { + $NZL_DST=0; return 0; + } else { + $NZL_DST=1; return 1; + } + } + } else { + $NZL_DST=0; return 0; + } + } # end of month checks +} # end of subroutine dstcalc + + + + +sub NZLN_dstcalc { +#********************************************************************** +# LSS-FSA +# 2007+ NEW ZEALAND (country code 64) +# This is returns 1 if Daylight Savings Time is in effect and 0 if +# Standard time is in effect. +# Based on last Sunday in September and first Sunday in April at 1 am. +#********************************************************************** + + $NZLN_DST=0; + $mm = $mon; + $dd = $mday; + $ns = $dsec; + $dow= $wday; + + if ($mm < 4 || $mm > 9) { + $NZLN_DST=1; return 1; + } elsif ($mm >= 5 && $mm <= 9) { + $NZLN_DST=0; return 0; + } elsif ($mm == 4) { + if ($dd > 7) { + $NZLN_DST=0; return 1; + } elsif ($dd >= ($dow+1)) { + if ($timezone) { + if ($dow == 0 && $ns < (3600+$timezone*3600)) { + $NZLN_DST=1; return 0; + } else { + $NZLN_DST=0; return 1; + } + } else { + if ($dow == 0 && $ns < 7200) { + $NZLN_DST=1; return 0; + } else { + $NZLN_DST=0; return 1; + } + } + } else { + $NZLN_DST=1; return 0; + } + } elsif ($mm == 9) { + if ($dd < 25) { + $NZLN_DST=0; return 0; + } elsif ($dd < ($dow+25)) { + $NZLN_DST=0; return 0; + } elsif ($dow == 0) { + if ($timezone) { # UTC calculations + if ($ns < (3600+($timezone-1)*3600)) { + $NZLN_DST=0; return 0; + } else { + $NZLN_DST=1; return 1; + } + } else { # local time calculations + if ($ns < 3600) { + $NZLN_DST=0; return 0; + } else { + $NZLN_DST=1; return 1; + } + } + } else { + $NZLN_DST=1; return 1; + } + } # end of month checks +} # end of subroutine dstcalc + + + + + +sub BZL_dstcalc { +#********************************************************************** +# TSO-LSF +# This is returns 1 if Daylight Savings Time is in effect and 0 if +# Standard time is in effect. Brazil +# Based on Third Sunday October to Last Sunday February at 1 am. +#********************************************************************** + + $BZL_DST=0; + $mm = $mon; + $dd = $mday; + $ns = $dsec; + $dow= $wday; + + if ($mm < 2 || $mm > 10) { + $BZL_DST=1; return 1; + } elsif ($mm >= 3 && $mm <= 9) { + $BZL_DST=0; return 0; + } elsif ($mm == 2) { + if ($dd < 22) { + $BZL_DST=1; return 1; + } elsif ($dd < ($dow+22)) { + $BZL_DST=1; return 1; + } elsif ($dow == 0) { + if ($timezone) { # UTC calculations + if ($ns < (3600+($timezone-1)*3600)) { + $BZL_DST=1; return 1; + } else { + $BZL_DST=0; return 0; + } + } else { # local time calculations + if ($ns < 3600) { + $BZL_DST=1; return 1; + } else { + $BZL_DST=0; return 0; + } + } + } else { + $BZL_DST=0; return 0; + } + } elsif ($mm == 10) { + if ($dd < 22) { + $BZL_DST=0; return 0; + } elsif ($dd < ($dow+22)) { + $BZL_DST=0; return 0; + } elsif ($dow == 0) { + if ($timezone) { # UTC calculations + if ($ns < (3600+($timezone-1)*3600)) { + $BZL_DST=0; return 0; + } else { + $BZL_DST=1; return 1; + } + } else { # local time calculations + if ($ns < 3600) { + $BZL_DST=0; return 0; + } else { + $BZL_DST=1; return 1; + } + } + } else { + $BZL_DST=1; return 1; + } + } # end of month checks +} # end of subroutine dstcalc diff --git a/bin/AST_email_web_report.pl b/bin/AST_email_web_report.pl index 597d1bfd..7bc17fdb 100644 --- a/bin/AST_email_web_report.pl +++ b/bin/AST_email_web_report.pl @@ -496,7 +496,7 @@ if (length($report_id) > 1) $sthA->finish(); ### gather user information for last manager who edited the automated report - $stmtA = "SELECT user from vicidial_admin_log where event_section='AUTOREPORTS' and record_id='$report_id';"; + $stmtA = "SELECT user from vicidial_admin_log where event_section='AUTOREPORTS' and record_id='$report_id' and event_type IN('ADD','MODIFY','COPY') order by admin_log_id desc limit 1;"; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthArows=$sthA->rows; diff --git a/bin/FastAGI_log.pl b/bin/FastAGI_log.pl index 3b0c6147..4902dd2f 100644 --- a/bin/FastAGI_log.pl +++ b/bin/FastAGI_log.pl @@ -25,7 +25,7 @@ # exten => h,1,DeadAGI(agi://127.0.0.1:4577/call_log--HVcauses--PRI-----NODEBUG-----${HANGUPCAUSE}-----${DIALSTATUS}-----${DIALEDTIME}-----${ANSWEREDTIME}) # # -# Copyright (C) 2016 Matt Florell LICENSE: AGPLv2 +# Copyright (C) 2017 Matt Florell LICENSE: AGPLv2 # # CHANGELOG: # 61010-1007 - First test build @@ -75,6 +75,7 @@ # 161214-1717 - Fix for rare multi-server grab from IVR park issue # 161226-1135 - rolled back previous fix # 161226-1211 - Fix for previous rolled-back code +# 170325-1105 - Added optional vicidial_drop_log logging # # defaults for PreFork @@ -1311,6 +1312,21 @@ sub process_request $Euniqueid=$uniqueid; $Euniqueid =~ s/\.\d+$//gi; + ############################################# + ##### SYSTEM SETTINGS LOOKUP ##### + $stmtA = "SELECT enable_drop_lists FROM system_settings;"; + $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; + $enable_drop_lists = $aryA[0]; + } + $sthA->finish(); + ##### END SYSTEM SETTINGS LOOKUP ##### + ########################################### + if ($calleridname !~ /^Y\d\d\d\d/) { ########## FIND AND UPDATE vicidial_log ########## @@ -1402,6 +1418,13 @@ sub process_request $stmtA="INSERT IGNORE INTO vicidial_log_extended SET uniqueid='$uniqueid',server_ip='$VARserver_ip',call_date='$VD_call_time',lead_id='$VD_lead_id',caller_code='$VD_callerid',custom_call_id='' ON DUPLICATE KEY UPDATE server_ip='$VARserver_ip',call_date='$VD_call_time',lead_id='$VD_lead_id',caller_code='$VD_callerid';"; $VDLXPDaffected_rows = $dbhA->do($stmtA); if ($AGILOG) {$agi_string = "-- PDROP vicidial_extended_log insert: |$VDLXPDaffected_rows|$uniqueid|$CIDlead_id|$VDL_status|"; &agi_output;} + + if ($enable_drop_lists > 1) + { + $stmtA="INSERT IGNORE INTO vicidial_drop_log SET uniqueid='$uniqueid',server_ip='$VARserver_ip',drop_date=NOW(),lead_id='$VD_lead_id',campaign_id='$VD_campaign_id',status='PDROP',phone_code='$VD_phone_code',phone_number='$VD_phone_number';"; + $VDDLaffected_rows = $dbhA->do($stmtA); + if ($AGILOG) {$agi_string = "-- PDROP vicidial_drop_log insert: |$VDDLaffected_rows|$uniqueid|$VD_lead_id|$VDL_status|"; &agi_output;} + } } ### END if call answers but has not reached routing AGI, then log as a PDROP } @@ -1513,6 +1536,13 @@ sub process_request } } } + + if ( ( ($calleridname =~ /^Y\d\d\d\d/) && ($enable_drop_lists > 0) ) || ( ($calleridname !~ /^Y\d\d\d\d/) && ($enable_drop_lists > 1) ) ) + { + $stmtA="INSERT IGNORE INTO vicidial_drop_log SET uniqueid='$uniqueid',server_ip='$VARserver_ip',drop_date=NOW(),lead_id='$VD_lead_id',campaign_id='$VD_campaign_id',status='DROP',phone_code='$VD_phone_code',phone_number='$VD_phone_number';"; + $VDDLaffected_rows = $dbhA->do($stmtA); + if ($AGILOG) {$agi_string = "-- DROP vicidial_drop_log insert: |$VDDLaffected_rows|$uniqueid|$VD_lead_id|$VD_campaign_id|"; &agi_output;} + } } ##### BEGIN AUTO ALT PHONE DIAL SECTION ##### diff --git a/extras/MySQL_AST_CREATE_tables.sql b/extras/MySQL_AST_CREATE_tables.sql index cddaac0e..5f4f1afa 100644 --- a/extras/MySQL_AST_CREATE_tables.sql +++ b/extras/MySQL_AST_CREATE_tables.sql @@ -1698,7 +1698,8 @@ agent_script VARCHAR(50) default 'vicidial.php', vdad_debug_logging ENUM('1','0') default '0', agent_chat_screen_colors VARCHAR(20) default 'default', enable_auto_reports ENUM('1','0') default '0', -enable_pause_code_limits ENUM('1','0') default '0' +enable_pause_code_limits ENUM('1','0') default '0', +enable_drop_lists ENUM('0','1','2') default '0' ) ENGINE=MyISAM; CREATE TABLE vicidial_campaigns_list_mix ( @@ -3644,6 +3645,39 @@ index (report_times), index (run_now_trigger) ) ENGINE=MyISAM; +CREATE TABLE vicidial_drop_lists ( +dl_id VARCHAR(30) UNIQUE NOT NULL, +dl_name VARCHAR(100), +last_run DATETIME, +dl_server VARCHAR(30) default 'active_voicemail_server', +dl_times VARCHAR(100) default '', +dl_weekdays VARCHAR(7) default '', +dl_monthdays VARCHAR(100) default '', +drop_statuses VARCHAR(255) default ' DROP -', +list_id BIGINT(14) UNSIGNED, +duplicate_check VARCHAR(50) default 'NONE', +run_now_trigger ENUM('N','Y') default 'N', +active ENUM('N','Y') default 'N', +user_group VARCHAR(20) default '---ALL---', +closer_campaigns TEXT, +index (dl_times), +index (run_now_trigger) +) ENGINE=MyISAM; + +CREATE TABLE vicidial_drop_log ( +uniqueid VARCHAR(50) NOT NULL, +server_ip VARCHAR(15) NOT NULL, +drop_date DATETIME NOT NULL, +lead_id INT(9) UNSIGNED NOT NULL, +phone_code VARCHAR(10), +phone_number VARCHAR(18), +campaign_id VARCHAR(20) NOT NULL, +status VARCHAR(6) NOT NULL, +drop_processed ENUM('N','Y','U') default 'N', +index(drop_date), +index(drop_processed) +) ENGINE=MyISAM; + ALTER TABLE vicidial_email_list MODIFY message text character set utf8; @@ -3828,6 +3862,10 @@ CREATE TABLE recording_log_archive LIKE recording_log; ALTER TABLE recording_log_archive MODIFY recording_id INT(10) UNSIGNED UNIQUE NOT NULL; ALTER TABLE recording_log_archive DROP PRIMARY KEY; +CREATE TABLE vicidial_drop_log_archive LIKE vicidial_drop_log; +DROP INDEX drop_date on vicidial_drop_log_archive; +CREATE UNIQUE INDEX vicidial_drop_log_archive_key on vicidial_drop_log_archive(drop_date, uniqueid); + GRANT RELOAD ON *.* TO cron@'%'; GRANT RELOAD ON *.* TO cron@localhost; @@ -3902,4 +3940,4 @@ UPDATE vicidial_configuration set value='1766' where name='qc_database_version'; UPDATE system_settings set vdc_agent_api_active='1'; -UPDATE system_settings SET db_schema_version='1496',db_schema_update_date=NOW(),reload_timestamp=NOW(); +UPDATE system_settings SET db_schema_version='1497',db_schema_update_date=NOW(),reload_timestamp=NOW(); diff --git a/extras/upgrade_2.14.sql b/extras/upgrade_2.14.sql index 9f14c06a..ad6d233f 100644 --- a/extras/upgrade_2.14.sql +++ b/extras/upgrade_2.14.sql @@ -129,3 +129,44 @@ ALTER TABLE system_settings ADD enable_pause_code_limits ENUM('1','0') default ' ALTER TABLE vicidial_pause_codes ADD time_limit SMALLINT(5) UNSIGNED default '65000'; UPDATE system_settings SET db_schema_version='1496',db_schema_update_date=NOW() where db_schema_version < 1496; + +ALTER TABLE system_settings ADD enable_drop_lists ENUM('0','1','2') default '0'; + +CREATE TABLE vicidial_drop_lists ( +dl_id VARCHAR(30) UNIQUE NOT NULL, +dl_name VARCHAR(100), +last_run DATETIME, +dl_server VARCHAR(30) default 'active_voicemail_server', +dl_times VARCHAR(100) default '', +dl_weekdays VARCHAR(7) default '', +dl_monthdays VARCHAR(100) default '', +drop_statuses VARCHAR(255) default ' DROP -', +list_id BIGINT(14) UNSIGNED, +duplicate_check VARCHAR(50) default 'NONE', +run_now_trigger ENUM('N','Y') default 'N', +active ENUM('N','Y') default 'N', +user_group VARCHAR(20) default '---ALL---', +closer_campaigns TEXT, +index (dl_times), +index (run_now_trigger) +) ENGINE=MyISAM; + +CREATE TABLE vicidial_drop_log ( +uniqueid VARCHAR(50) NOT NULL, +server_ip VARCHAR(15) NOT NULL, +drop_date DATETIME NOT NULL, +lead_id INT(9) UNSIGNED NOT NULL, +phone_code VARCHAR(10), +phone_number VARCHAR(18), +campaign_id VARCHAR(20) NOT NULL, +status VARCHAR(6) NOT NULL, +drop_processed ENUM('N','Y','U') default 'N', +index(drop_date), +index(drop_processed) +) ENGINE=MyISAM; + +CREATE TABLE vicidial_drop_log_archive LIKE vicidial_drop_log; +DROP INDEX drop_date on vicidial_drop_log_archive; +CREATE UNIQUE INDEX vicidial_drop_log_archive_key on vicidial_drop_log_archive(drop_date, uniqueid); + +UPDATE system_settings SET db_schema_version='1497',db_schema_update_date=NOW() where db_schema_version < 1497; diff --git a/www/vicidial/admin.php b/www/vicidial/admin.php index 9bf90b03..65db8e56 100644 --- a/www/vicidial/admin.php +++ b/www/vicidial/admin.php @@ -2192,6 +2192,26 @@ if (isset($_GET["enable_pause_code_limits"])) {$enable_pause_code_limits=$_GET elseif (isset($_POST["enable_pause_code_limits"])) {$enable_pause_code_limits=$_POST["enable_pause_code_limits"];} if (isset($_GET["time_limit"])) {$time_limit=$_GET["time_limit"];} elseif (isset($_POST["time_limit"])) {$time_limit=$_POST["time_limit"];} +if (isset($_GET["enable_drop_lists"])) {$enable_drop_lists=$_GET["enable_drop_lists"];} + elseif (isset($_POST["enable_drop_lists"])) {$enable_drop_lists=$_POST["enable_drop_lists"];} +if (isset($_GET["dl_id"])) {$dl_id=$_GET["dl_id"];} + elseif (isset($_POST["dl_id"])) {$dl_id=$_POST["dl_id"];} +if (isset($_GET["dl_name"])) {$dl_name=$_GET["dl_name"];} + elseif (isset($_POST["dl_name"])) {$dl_name=$_POST["dl_name"];} +if (isset($_GET["last_run"])) {$last_run=$_GET["last_run"];} + elseif (isset($_POST["last_run"])) {$last_run=$_POST["last_run"];} +if (isset($_GET["dl_server"])) {$dl_server=$_GET["dl_server"];} + elseif (isset($_POST["dl_server"])) {$dl_server=$_POST["dl_server"];} +if (isset($_GET["dl_times"])) {$dl_times=$_GET["dl_times"];} + elseif (isset($_POST["dl_times"])) {$dl_times=$_POST["dl_times"];} +if (isset($_GET["dl_weekdays"])) {$dl_weekdays=$_GET["dl_weekdays"];} + elseif (isset($_POST["dl_weekdays"])) {$dl_weekdays=$_POST["dl_weekdays"];} +if (isset($_GET["dl_monthdays"])) {$dl_monthdays=$_GET["dl_monthdays"];} + elseif (isset($_POST["dl_monthdays"])) {$dl_monthdays=$_POST["dl_monthdays"];} +if (isset($_GET["drop_status"])) {$drop_status=$_GET["drop_status"];} + elseif (isset($_POST["drop_status"])) {$drop_status=$_POST["drop_status"];} +if (isset($_GET["duplicate_check"])) {$duplicate_check=$_GET["duplicate_check"];} + elseif (isset($_POST["duplicate_check"])) {$duplicate_check=$_POST["duplicate_check"];} if (isset($script_id)) {$script_id= strtoupper($script_id);} @@ -2206,7 +2226,7 @@ if (strlen($dial_status) > 0) ############################################# ##### START SYSTEM_SETTINGS LOOKUP ##### -$stmt = "SELECT use_non_latin,enable_queuemetrics_logging,enable_vtiger_integration,qc_features_active,outbound_autodial_active,sounds_central_control_active,enable_second_webform,user_territories_active,custom_fields_enabled,admin_web_directory,webphone_url,first_login_trigger,hosted_settings,default_phone_registration_password,default_phone_login_password,default_server_password,test_campaign_calls,active_voicemail_server,voicemail_timezones,default_voicemail_timezone,default_local_gmt,campaign_cid_areacodes_enabled,pllb_grouping_limit,did_ra_extensions_enabled,expanded_list_stats,contacts_enabled,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,call_menu_qualify_enabled,admin_list_counts,allow_voicemail_greeting,svn_revision,allow_emails,level_8_disable_add,pass_key,pass_hash_enabled,disable_auto_dial,country_code_list_stats,frozen_server_call_clear,active_modules,allow_chats,enable_languages,language_method,meetme_enter_login_filename,meetme_enter_leave3way_filename,enable_did_entry_list_id,enable_third_webform,default_language,user_hide_realtime_enabled,log_recording_access,alt_ivr_logging,admin_row_click,admin_screen_colors,ofcom_uk_drop_calc,agent_screen_colors,script_remove_js,manual_auto_next,user_new_lead_limit,agent_xfer_park_3way,agent_soundboards,web_loader_phone_length,agent_script,enable_auto_reports,enable_pause_code_limits FROM system_settings;"; +$stmt = "SELECT use_non_latin,enable_queuemetrics_logging,enable_vtiger_integration,qc_features_active,outbound_autodial_active,sounds_central_control_active,enable_second_webform,user_territories_active,custom_fields_enabled,admin_web_directory,webphone_url,first_login_trigger,hosted_settings,default_phone_registration_password,default_phone_login_password,default_server_password,test_campaign_calls,active_voicemail_server,voicemail_timezones,default_voicemail_timezone,default_local_gmt,campaign_cid_areacodes_enabled,pllb_grouping_limit,did_ra_extensions_enabled,expanded_list_stats,contacts_enabled,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,call_menu_qualify_enabled,admin_list_counts,allow_voicemail_greeting,svn_revision,allow_emails,level_8_disable_add,pass_key,pass_hash_enabled,disable_auto_dial,country_code_list_stats,frozen_server_call_clear,active_modules,allow_chats,enable_languages,language_method,meetme_enter_login_filename,meetme_enter_leave3way_filename,enable_did_entry_list_id,enable_third_webform,default_language,user_hide_realtime_enabled,log_recording_access,alt_ivr_logging,admin_row_click,admin_screen_colors,ofcom_uk_drop_calc,agent_screen_colors,script_remove_js,manual_auto_next,user_new_lead_limit,agent_xfer_park_3way,agent_soundboards,web_loader_phone_length,agent_script,enable_auto_reports,enable_pause_code_limits,enable_drop_lists FROM system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $qm_conf_ct = mysqli_num_rows($rslt); @@ -2280,6 +2300,7 @@ if ($qm_conf_ct > 0) $SSagent_script = $row[64]; $SSenable_auto_reports = $row[65]; $SSenable_pause_code_limits = $row[66]; + $SSenable_drop_lists = $row[67]; } ##### END SETTINGS LOOKUP ##### ########################################### @@ -2592,6 +2613,8 @@ if ($non_latin < 1) $report_weekdays = preg_replace('/[^0-9]/','',$report_weekdays); $enable_pause_code_limits = preg_replace('/[^0-9]/','',$enable_pause_code_limits); $time_limit = preg_replace('/[^0-9]/','',$time_limit); + $enable_drop_lists = preg_replace('/[^0-9]/','',$enable_drop_lists); + $dl_weekdays = preg_replace('/[^0-9]/','',$dl_weekdays); $user_new_lead_limit = preg_replace('/[^-0-9]/','',$user_new_lead_limit); $drop_call_seconds = preg_replace('/[^-0-9]/','',$drop_call_seconds); @@ -3080,6 +3103,10 @@ if ($non_latin < 1) $report_times = preg_replace('/[^-_0-9a-zA-Z]/','',$report_times); $report_monthdays = preg_replace('/[^-_0-9a-zA-Z]/','',$report_monthdays); $populate_state_areacode = preg_replace('/[^-_0-9a-zA-Z]/','',$populate_state_areacode); + $dl_id = preg_replace('/[^-_0-9a-zA-Z]/','',$dl_id); + $duplicate_check = preg_replace('/[^-_0-9a-zA-Z]/','',$duplicate_check); + $dl_times = preg_replace('/[^-_0-9a-zA-Z]/','',$dl_times); + $dl_monthdays = preg_replace('/[^-_0-9a-zA-Z]/','',$dl_monthdays); ### ALPHA-NUMERIC and underscore and dash and slash and dot $menu_timeout_prompt = preg_replace('/[^-\/\|\._0-9a-zA-Z]/','',$menu_timeout_prompt); @@ -3162,6 +3189,7 @@ if ($non_latin < 1) $pre_filter_extension = preg_replace('/[^\*\#\.\_0-9a-zA-Z]/','',$pre_filter_extension); $max_queue_ingroup_extension = preg_replace('/[^\*\#\.\_0-9a-zA-Z]/','',$max_queue_ingroup_extension); $report_server = preg_replace('/[^\*\#\.\_0-9a-zA-Z]/','',$report_server); + $dl_server = preg_replace('/[^\*\#\.\_0-9a-zA-Z]/','',$dl_server); ### ALPHA-NUMERIC and spaces dots, commas, dashes, underscores $adaptive_dl_diff_target = preg_replace('/[^- \.\,\_0-9a-zA-Z]/','',$adaptive_dl_diff_target); @@ -3257,6 +3285,8 @@ if ($non_latin < 1) $customer_chat_survey_text = preg_replace('/[^- \.\,\_0-9a-zA-Z]/','',$customer_chat_survey_text); $agent_script = preg_replace('/[^- \.\,\_0-9a-zA-Z]/','',$agent_script); $report_name = preg_replace('/[^- \.\,\_0-9a-zA-Z]/','',$report_name); + $dl_name = preg_replace('/[^- \.\,\_0-9a-zA-Z]/','',$dl_name); + $drop_status = preg_replace('/[^- \.\,\_0-9a-zA-Z]/','',$drop_status); ### ALPHA-NUMERIC and underscore and dash and slash and at and dot $call_out_number_group = preg_replace('/[^-\.\:\/\@\_0-9a-zA-Z]/','',$call_out_number_group); @@ -4027,12 +4057,13 @@ else # 170315-0633 - Fix in in-group copy SQL # 170320-1340 - Added conf_qualify phones option for IAX # 170321-1100 - Added pause code time limits warning feature +# 170327-0704 - Added Drop Lists section # # 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-603a'; -$build = '170321-1100'; +$admin_version = '2.14-604a'; +$build = '170327-0704'; $STARTtime = date("U"); $SQLdate = date("Y-m-d H:i:s"); @@ -4554,6 +4585,7 @@ if ($ADD==11) {$hh='campaigns'; $sh='basic'; echo _QXZ("Add New Campaign");} if ($ADD==12) {$hh='campaigns'; $sh='basic'; echo _QXZ("Copy Campaign");} if ($ADD==111) {$hh='lists'; $sh='new'; echo _QXZ("Add New List");} if ($ADD==121) {$hh='lists'; $sh='dnc'; echo _QXZ("Add New DNC");} +if ($ADD==131) {$hh='lists'; $sh='droplist'; echo _QXZ("Add New Drop List");} if ($ADD==171) {$hh='ingroups'; $sh='addFPG'; echo _QXZ("Filter Phone Group Numbers");} if ($ADD==1111) {$hh='ingroups'; $sh='newIG'; echo _QXZ("Add New In-Group");} if ($ADD==1211) {$hh='ingroups'; $sh='copyIG'; echo _QXZ("Copy In-Group");} @@ -4607,6 +4639,7 @@ if ($ADD==29) {$hh='campaigns'; $sh='listmix'; echo _QXZ("Campaign List Mix Ad if ($ADD==201) {$hh='campaigns'; $sh='preset'; echo _QXZ("Campaign Preset Added");} if ($ADD==202) {$hh='campaigns'; $sh='accid'; echo _QXZ("Campaign Areacode CID Modify");} if ($ADD==211) {$hh='lists'; $sh='new'; echo _QXZ("New List Addition");} +if ($ADD==231) {$hh='lists'; $sh='droplist'; echo _QXZ("New Drop List Addition");} if ($ADD==2111) {$hh='ingroups'; $sh='newIG'; echo _QXZ("New In-Group Addition");} if ($ADD==2011) {$hh='ingroups'; $sh='copyIG'; echo _QXZ("New Copied In-Group Addition");} if ($ADD==2311) {$hh='ingroups'; $sh='newDID'; echo _QXZ("New DID Addition");} @@ -4688,6 +4721,8 @@ if ($ADD==39) {$hh='campaigns'; $sh='listmix'; echo _QXZ("Campaign List Mixes" if ($ADD==301) {$hh='campaigns'; $sh='preset'; echo _QXZ("Campaign Presets");} if ($ADD==302) {$hh='campaigns'; $sh='accid'; echo _QXZ("Campaign Areacode CID");} if ($ADD==311) {$hh='lists'; $sh='list'; echo _QXZ("Modify List");} +if ($ADD==331) {$hh='lists'; $sh='droplist'; echo _QXZ("Modify Drop List");} +if ($ADD==333) {$hh='lists'; $sh='droplist'; echo _QXZ("Modify Drop List Status");} if ($ADD==3111) {$hh='ingroups'; echo _QXZ("Modify In-Group");} if ($ADD==3311) {$hh='ingroups'; echo _QXZ("Modify DID");} if ($ADD==3321) {$hh='ingroups'; echo _QXZ("Modify DID RA Extension Overrides");} @@ -4742,6 +4777,7 @@ if ($ADD==49) {$hh='campaigns'; $sh='listmix'; echo _QXZ("Modify Campaign List if ($ADD==401) {$hh='campaigns'; $sh='preset'; echo _QXZ("Modify Campaign Preset");} if ($ADD=='40A') {$hh='campaigns'; $sh='survey'; echo _QXZ("Modify Campaign Survey");} if ($ADD==411) {$hh='lists'; $sh='list'; echo _QXZ("Modify List");} +if ($ADD==431) {$hh='lists'; $sh='droplist'; echo _QXZ("Modify Drop List");} if ($ADD==4111) {$hh='ingroups'; echo _QXZ("Modify In-Group");} if ($ADD==4311) {$hh='ingroups'; echo _QXZ("Modify DID");} if ($ADD==4511) {$hh='ingroups'; echo _QXZ("Modify Call Menu");} @@ -4785,6 +4821,7 @@ if ($ADD==52) {$hh='campaigns'; $sh='detail'; echo _QXZ("Logout Agents");} if ($ADD==53) {$hh='campaigns'; $sh='detail'; echo _QXZ("Emergency VDAC Jam Clear");} if ($ADD==511) {$hh='lists'; $sh='list'; echo _QXZ("Delete List");} if ($ADD==512) {$hh='lists'; $sh='list'; echo _QXZ("Clear List");} +if ($ADD==531) {$hh='lists'; $sh='droplist'; echo _QXZ("Delete Drop List");} if ($ADD==5111) {$hh='ingroups'; echo _QXZ("Delete In-Group");} if ($ADD==5311) {$hh='ingroups'; echo _QXZ("Delete DID");} if ($ADD==5511) {$hh='ingroups'; echo _QXZ("Delete Call Menu");} @@ -4827,6 +4864,7 @@ if ($ADD==69) {$hh='campaigns'; $sh='listmix'; echo _QXZ("Campaign List Mix Re if ($ADD==601) {$hh='campaigns'; $sh='preset'; echo _QXZ("Campaign Preset Removed");} if ($ADD==611) {$hh='lists'; $sh='list'; echo _QXZ("Delete List");} if ($ADD==612) {$hh='lists'; $sh='list'; echo _QXZ("Clear List");} +if ($ADD==631) {$hh='lists'; $sh='droplist'; echo _QXZ("Delete Drop List");} if ($ADD==6111) {$hh='ingroups'; echo _QXZ("Delete In-Group");} if ($ADD==6311) {$hh='ingroups'; echo _QXZ("Delete DID");} if ($ADD==6511) {$hh='ingroups'; echo _QXZ("Delete Call Menu");} @@ -4874,6 +4912,7 @@ if ($ADD==811) {$hh='lists'; $sh='list'; echo _QXZ("CallBacks Within List");} if ($ADD==8111) {$hh='usergroups'; echo _QXZ("CallBacks Within User Group");} if ($ADD==10) {$hh='campaigns'; $sh='list'; echo _QXZ("Campaigns");} if ($ADD==100) {$hh='lists'; $sh='list'; echo _QXZ("Lists");} +if ($ADD==130) {$hh='lists'; $sh='droplist'; echo _QXZ("Drop Lists");} if ($ADD==1000) {$hh='ingroups'; $sh='listIG'; echo _QXZ("In-Groups");} if ($ADD==1300) {$hh='ingroups'; $sh='listDID'; echo _QXZ("DIDs");} if ($ADD==1320) {$hh='ingroups'; $sh='didRA'; echo _QXZ("Modify DID RA Extension Overrides");} @@ -6564,6 +6603,50 @@ if ($ADD==121) } +###################### +# ADD=131 display the ADD NEW DROP LIST FORM SCREEN +###################### +if ($ADD==131) + { + if ($LOGmodify_lists==1) + { + ##### BEGIN ID override optional section, if enabled it increments user by 1 ignoring entered value ##### + $stmt = "SELECT count(*) FROM vicidial_override_ids where id_table='vicidial_drop_lists' and active='1';"; + $rslt=mysql_to_mysqli($stmt, $link); + $voi_ct = mysqli_num_rows($rslt); + if ($voi_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $voi_count = "$row[0]"; + } + ##### END ID override optional section ##### + + echo "
\n"; + echo "\"Lists\" "; + + echo "
"._QXZ("ADD A NEW DROP LIST")."
\n"; + echo "\n"; + echo "
\n"; + if ($voi_count > 0) + { + echo "\n"; + } + else + { + echo "\n"; + } + echo "\n"; + echo "\n"; + echo "
"._QXZ("Drop List ID").": "._QXZ("Auto-Generated")." $NWB#drop_lists-dl_id$NWE
"._QXZ("Drop List ID").": $NWB#drop_lists-dl_id$NWE
"._QXZ("Drop List Name").": $NWB#drop_lists-dl_name$NWE
\n"; + } + else + { + echo _QXZ("You do not have permission to view this page")."\n"; + exit; + } + } + + ###################### # ADD=171 display the ADD NUMBER TO Filter Phone Group FORM SCREEN and add a new number ###################### @@ -9994,6 +10077,67 @@ if ($ADD==211) } +###################### +# ADD=231 adds the new drop list to the system +###################### +if ($ADD==231) + { + if ($add_copy_disabled > 0) + { + echo "
"._QXZ("You do not have permission to add records on this system")." -system_settings-\n"; + } + else + { + ##### BEGIN ID override optional section, if enabled it increments user by 1 ignoring entered value ##### + $stmt = "SELECT value FROM vicidial_override_ids where id_table='vicidial_drop_lists' and active='1';"; + $rslt=mysql_to_mysqli($stmt, $link); + $voi_ct = mysqli_num_rows($rslt); + if ($voi_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $dl_id = ($row[0] + 1); + + $stmt="UPDATE vicidial_override_ids SET value='$dl_id' where id_table='vicidial_drop_lists' and active='1';"; + $rslt=mysql_to_mysqli($stmt, $link); + } + ##### END ID override optional section ##### + + echo ""; + $stmt="SELECT count(*) from vicidial_drop_lists where dl_id='$dl_id';"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + if ($row[0] > 0) + {echo "
"._QXZ("DROP LIST NOT ADDED - there is already a drop list in the system with this ID")."\n";} + else + { + if ( (strlen($dl_id) < 2) or (strlen($dl_name) < 2) ) + { + echo "
"._QXZ("DROP LIST NOT ADDED - Please go back and look at the data you entered")."\n"; + echo "
"._QXZ("Drop List ID must be between 2 and 30 characters in length")."\n"; + echo "
"._QXZ("Drop List name must be at least 2 characters in length")."\n"; + } + else + { + echo "
"._QXZ("DROP LIST ADDED").": $list_id\n"; + + $stmt="INSERT INTO vicidial_drop_lists (dl_id,dl_name) values('$dl_id','$dl_name');"; + $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='$SQLdate', user='$PHP_AUTH_USER', ip_address='$ip', event_section='DROPLISTS', event_type='ADD', record_id='$dl_id', event_code='ADMIN ADD DROP LIST', event_sql=\"$SQL_log\", event_notes='';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + + $ADD=331; + } + } + } + } + + ###################### # ADD=2111 adds the new inbound group to the system ###################### @@ -16467,7 +16611,7 @@ if ($ADD==411111111111111) $custom_reports_slave_SQL=",custom_reports_use_slave_db='$custom_reports_slave_SQL'"; } - $stmt="UPDATE system_settings set use_non_latin='$use_non_latin',webroot_writable='$webroot_writable',enable_queuemetrics_logging='$enable_queuemetrics_logging',queuemetrics_server_ip='$queuemetrics_server_ip',queuemetrics_dbname='$queuemetrics_dbname',queuemetrics_login='$queuemetrics_login',queuemetrics_pass='$queuemetrics_pass',queuemetrics_url='$queuemetrics_url',queuemetrics_log_id='$queuemetrics_log_id',queuemetrics_eq_prepend='$queuemetrics_eq_prepend',vicidial_agent_disable='$vicidial_agent_disable',allow_sipsak_messages='$allow_sipsak_messages',admin_home_url='$admin_home_url',enable_agc_xfer_log='$enable_agc_xfer_log',timeclock_end_of_day='$timeclock_end_of_day',vdc_header_date_format='$vdc_header_date_format',vdc_customer_date_format='$vdc_customer_date_format',vdc_header_phone_format='$vdc_header_phone_format',vdc_agent_api_active='$vdc_agent_api_active',enable_vtiger_integration='$enable_vtiger_integration',vtiger_server_ip='$vtiger_server_ip',vtiger_dbname='$vtiger_dbname',vtiger_login='$vtiger_login',vtiger_pass='$vtiger_pass',vtiger_url='$vtiger_url',qc_features_active='$qc_features_active',outbound_autodial_active='$outbound_autodial_active',outbound_calls_per_second='$outbound_calls_per_second',enable_tts_integration='$enable_tts_integration',agentonly_callback_campaign_lock='$agentonly_callback_campaign_lock',sounds_central_control_active='$sounds_central_control_active',sounds_web_server='$sounds_web_server',sounds_web_directory='$sounds_web_directory',active_voicemail_server='$active_voicemail_server',auto_dial_limit='$auto_dial_limit',user_territories_active='$user_territories_active',allow_custom_dialplan='$allow_custom_dialplan',enable_second_webform='$enable_second_webform',default_webphone='$default_webphone',default_external_server_ip='$default_external_server_ip',webphone_url='" . mysqli_real_escape_string($link, $webphone_url) . "',enable_agc_dispo_log='$enable_agc_dispo_log',queuemetrics_loginout='$queuemetrics_loginout',callcard_enabled='$callcard_enabled',queuemetrics_callstatus='$queuemetrics_callstatus',default_codecs='$default_codecs',admin_web_directory='$admin_web_directory',label_title='$label_title',label_first_name='$label_first_name',label_middle_initial='$label_middle_initial',label_last_name='$label_last_name',label_address1='$label_address1',label_address2='$label_address2',label_address3='$label_address3',label_city='$label_city',label_state='$label_state',label_province='$label_province',label_postal_code='$label_postal_code',label_vendor_lead_code='$label_vendor_lead_code',label_gender='$label_gender',label_phone_number='$label_phone_number',label_phone_code='$label_phone_code',label_alt_phone='$label_alt_phone',label_security_phrase='$label_security_phrase',label_email='$label_email',label_comments='$label_comments',custom_fields_enabled='$custom_fields_enabled',slave_db_server='$slave_db_server',reports_use_slave_db='$reports_use_slave_db'$custom_reports_slave_SQL,webphone_systemkey='$webphone_systemkey',first_login_trigger='$first_login_trigger',default_phone_registration_password='$default_phone_registration_password',default_phone_login_password='$default_phone_login_password',default_server_password='$default_server_password',admin_modify_refresh='$admin_modify_refresh',nocache_admin='$nocache_admin',generate_cross_server_exten='$generate_cross_server_exten',queuemetrics_addmember_enabled='$queuemetrics_addmember_enabled',queuemetrics_dispo_pause='$queuemetrics_dispo_pause',label_hide_field_logs='$label_hide_field_logs',queuemetrics_pe_phone_append='$queuemetrics_pe_phone_append',test_campaign_calls='$test_campaign_calls',agents_calls_reset='$agents_calls_reset',default_voicemail_timezone='$default_voicemail_timezone',default_local_gmt='$default_local_gmt',noanswer_log='$noanswer_log',alt_log_server_ip='$alt_log_server_ip',alt_log_dbname='$alt_log_dbname',alt_log_login='$alt_log_login',alt_log_pass='$alt_log_pass',tables_use_alt_log_db='$tables_use_alt_log_db',did_agent_log='$did_agent_log',campaign_cid_areacodes_enabled='$campaign_cid_areacodes_enabled',pllb_grouping_limit='$pllb_grouping_limit',did_ra_extensions_enabled='$did_ra_extensions_enabled',expanded_list_stats='$expanded_list_stats',contacts_enabled='$contacts_enabled',call_menu_qualify_enabled='$call_menu_qualify_enabled',admin_list_counts='$admin_list_counts',allow_voicemail_greeting='$allow_voicemail_greeting',queuemetrics_socket='$queuemetrics_socket',queuemetrics_socket_url='$queuemetrics_socket_url',enhanced_disconnect_logging='$enhanced_disconnect_logging',allow_emails='$allow_emails',level_8_disable_add='$level_8_disable_add',queuemetrics_record_hold='$queuemetrics_record_hold',country_code_list_stats='$country_code_list_stats',queuemetrics_pause_type='$queuemetrics_pause_type',frozen_server_call_clear='$frozen_server_call_clear',callback_time_24hour='$callback_time_24hour',enable_languages='$enable_languages',language_method='$language_method',meetme_enter_login_filename='$meetme_enter_login_filename',meetme_enter_leave3way_filename='$meetme_enter_leave3way_filename',enable_did_entry_list_id='$enable_did_entry_list_id',enable_third_webform='$enable_third_webform',allow_chats='$allow_chats',chat_url='$chat_url',chat_timeout='$chat_timeout',agent_debug_logging='$agent_debug_logging',default_language='$default_language',agent_whisper_enabled='$agent_whisper_enabled',user_hide_realtime_enabled='$user_hide_realtime_enabled',usacan_phone_dialcode_fix='$usacan_phone_dialcode_fix',cache_carrier_stats_realtime='$cache_carrier_stats_realtime',log_recording_access='$log_recording_access',report_default_format='$report_default_format',alt_ivr_logging='$alt_ivr_logging',default_phone_code='$default_phone_code',admin_row_click='$admin_row_click',admin_screen_colors='$admin_screen_colors',ofcom_uk_drop_calc='$ofcom_uk_drop_calc',agent_screen_colors='$agent_screen_colors',script_remove_js='$script_remove_js',manual_auto_next='$manual_auto_next',user_new_lead_limit='$user_new_lead_limit',agent_xfer_park_3way='$agent_xfer_park_3way',agent_soundboards='$agent_soundboards',web_loader_phone_length='$web_loader_phone_length',agent_script='$agent_script',agent_chat_screen_colors='$agent_chat_screen_colors',enable_auto_reports='$enable_auto_reports',enable_pause_code_limits='$enable_pause_code_limits'$custom_dialplanSQL;"; + $stmt="UPDATE system_settings set use_non_latin='$use_non_latin',webroot_writable='$webroot_writable',enable_queuemetrics_logging='$enable_queuemetrics_logging',queuemetrics_server_ip='$queuemetrics_server_ip',queuemetrics_dbname='$queuemetrics_dbname',queuemetrics_login='$queuemetrics_login',queuemetrics_pass='$queuemetrics_pass',queuemetrics_url='$queuemetrics_url',queuemetrics_log_id='$queuemetrics_log_id',queuemetrics_eq_prepend='$queuemetrics_eq_prepend',vicidial_agent_disable='$vicidial_agent_disable',allow_sipsak_messages='$allow_sipsak_messages',admin_home_url='$admin_home_url',enable_agc_xfer_log='$enable_agc_xfer_log',timeclock_end_of_day='$timeclock_end_of_day',vdc_header_date_format='$vdc_header_date_format',vdc_customer_date_format='$vdc_customer_date_format',vdc_header_phone_format='$vdc_header_phone_format',vdc_agent_api_active='$vdc_agent_api_active',enable_vtiger_integration='$enable_vtiger_integration',vtiger_server_ip='$vtiger_server_ip',vtiger_dbname='$vtiger_dbname',vtiger_login='$vtiger_login',vtiger_pass='$vtiger_pass',vtiger_url='$vtiger_url',qc_features_active='$qc_features_active',outbound_autodial_active='$outbound_autodial_active',outbound_calls_per_second='$outbound_calls_per_second',enable_tts_integration='$enable_tts_integration',agentonly_callback_campaign_lock='$agentonly_callback_campaign_lock',sounds_central_control_active='$sounds_central_control_active',sounds_web_server='$sounds_web_server',sounds_web_directory='$sounds_web_directory',active_voicemail_server='$active_voicemail_server',auto_dial_limit='$auto_dial_limit',user_territories_active='$user_territories_active',allow_custom_dialplan='$allow_custom_dialplan',enable_second_webform='$enable_second_webform',default_webphone='$default_webphone',default_external_server_ip='$default_external_server_ip',webphone_url='" . mysqli_real_escape_string($link, $webphone_url) . "',enable_agc_dispo_log='$enable_agc_dispo_log',queuemetrics_loginout='$queuemetrics_loginout',callcard_enabled='$callcard_enabled',queuemetrics_callstatus='$queuemetrics_callstatus',default_codecs='$default_codecs',admin_web_directory='$admin_web_directory',label_title='$label_title',label_first_name='$label_first_name',label_middle_initial='$label_middle_initial',label_last_name='$label_last_name',label_address1='$label_address1',label_address2='$label_address2',label_address3='$label_address3',label_city='$label_city',label_state='$label_state',label_province='$label_province',label_postal_code='$label_postal_code',label_vendor_lead_code='$label_vendor_lead_code',label_gender='$label_gender',label_phone_number='$label_phone_number',label_phone_code='$label_phone_code',label_alt_phone='$label_alt_phone',label_security_phrase='$label_security_phrase',label_email='$label_email',label_comments='$label_comments',custom_fields_enabled='$custom_fields_enabled',slave_db_server='$slave_db_server',reports_use_slave_db='$reports_use_slave_db'$custom_reports_slave_SQL,webphone_systemkey='$webphone_systemkey',first_login_trigger='$first_login_trigger',default_phone_registration_password='$default_phone_registration_password',default_phone_login_password='$default_phone_login_password',default_server_password='$default_server_password',admin_modify_refresh='$admin_modify_refresh',nocache_admin='$nocache_admin',generate_cross_server_exten='$generate_cross_server_exten',queuemetrics_addmember_enabled='$queuemetrics_addmember_enabled',queuemetrics_dispo_pause='$queuemetrics_dispo_pause',label_hide_field_logs='$label_hide_field_logs',queuemetrics_pe_phone_append='$queuemetrics_pe_phone_append',test_campaign_calls='$test_campaign_calls',agents_calls_reset='$agents_calls_reset',default_voicemail_timezone='$default_voicemail_timezone',default_local_gmt='$default_local_gmt',noanswer_log='$noanswer_log',alt_log_server_ip='$alt_log_server_ip',alt_log_dbname='$alt_log_dbname',alt_log_login='$alt_log_login',alt_log_pass='$alt_log_pass',tables_use_alt_log_db='$tables_use_alt_log_db',did_agent_log='$did_agent_log',campaign_cid_areacodes_enabled='$campaign_cid_areacodes_enabled',pllb_grouping_limit='$pllb_grouping_limit',did_ra_extensions_enabled='$did_ra_extensions_enabled',expanded_list_stats='$expanded_list_stats',contacts_enabled='$contacts_enabled',call_menu_qualify_enabled='$call_menu_qualify_enabled',admin_list_counts='$admin_list_counts',allow_voicemail_greeting='$allow_voicemail_greeting',queuemetrics_socket='$queuemetrics_socket',queuemetrics_socket_url='$queuemetrics_socket_url',enhanced_disconnect_logging='$enhanced_disconnect_logging',allow_emails='$allow_emails',level_8_disable_add='$level_8_disable_add',queuemetrics_record_hold='$queuemetrics_record_hold',country_code_list_stats='$country_code_list_stats',queuemetrics_pause_type='$queuemetrics_pause_type',frozen_server_call_clear='$frozen_server_call_clear',callback_time_24hour='$callback_time_24hour',enable_languages='$enable_languages',language_method='$language_method',meetme_enter_login_filename='$meetme_enter_login_filename',meetme_enter_leave3way_filename='$meetme_enter_leave3way_filename',enable_did_entry_list_id='$enable_did_entry_list_id',enable_third_webform='$enable_third_webform',allow_chats='$allow_chats',chat_url='$chat_url',chat_timeout='$chat_timeout',agent_debug_logging='$agent_debug_logging',default_language='$default_language',agent_whisper_enabled='$agent_whisper_enabled',user_hide_realtime_enabled='$user_hide_realtime_enabled',usacan_phone_dialcode_fix='$usacan_phone_dialcode_fix',cache_carrier_stats_realtime='$cache_carrier_stats_realtime',log_recording_access='$log_recording_access',report_default_format='$report_default_format',alt_ivr_logging='$alt_ivr_logging',default_phone_code='$default_phone_code',admin_row_click='$admin_row_click',admin_screen_colors='$admin_screen_colors',ofcom_uk_drop_calc='$ofcom_uk_drop_calc',agent_screen_colors='$agent_screen_colors',script_remove_js='$script_remove_js',manual_auto_next='$manual_auto_next',user_new_lead_limit='$user_new_lead_limit',agent_xfer_park_3way='$agent_xfer_park_3way',agent_soundboards='$agent_soundboards',web_loader_phone_length='$web_loader_phone_length',agent_script='$agent_script',agent_chat_screen_colors='$agent_chat_screen_colors',enable_auto_reports='$enable_auto_reports',enable_pause_code_limits='$enable_pause_code_limits',enable_drop_lists='$enable_drop_lists'$custom_dialplanSQL;"; $rslt=mysql_to_mysqli($stmt, $link); if ( ($meetme_enter_login_filename != $SSmeetme_enter_login_filename) or ($meetme_enter_leave3way_filename != $SSmeetme_enter_leave3way_filename) ) @@ -16829,6 +16973,28 @@ if ($ADD==511) } +###################### +# ADD=531 confirmation before deletion of drop list +###################### +if ($ADD==531) + { + echo ""; + + if ( (strlen($dl_id) < 2) or ($LOGdelete_lists < 1) ) + { + echo "
"._QXZ("DROP LIST NOT DELETED - Please go back and look at the data you entered")."\n"; + echo "
"._QXZ("dl_id be at least 2 characters in length")."\n"; + } + else + { + echo "
"._QXZ("DROP LIST DELETION CONFIRMATION").": $dl_id\n"; + echo "

"._QXZ("Click here to delete drop list")." $dl_id


\n"; + } + + $ADD='331'; # go to drop list modification below + } + + ###################### # ADD=512 confirmation before clearing of list ###################### @@ -18411,6 +18577,47 @@ if ($ADD==612) } +###################### +# ADD=631 delete drop list record +###################### +if ($ADD==631) + { + echo ""; + + if ( ( strlen($dl_id) < 2) or ($CoNfIrM != 'YES') or ($LOGdelete_lists < 1) ) + { + echo "
"._QXZ("DROP LIST NOT DELETED - Please go back and look at the data you entered")."\n"; + echo "
dl_id "._QXZ("must be at least 2 characters in length")."\n"; + } + else + { + $stmt="SELECT count(*) from vicidial_drop_lists where dl_id='$dl_id' $LOGallowed_campaignsSQL;"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + if ($row[0] < 1) + {echo "
"._QXZ("DROP LIST NOT FOUND").": $dl_id\n";} + else + { + $stmt="DELETE from vicidial_drop_lists where dl_id='$dl_id' $LOGallowed_campaignsSQL limit 1;"; + $rslt=mysql_to_mysqli($stmt, $link); + + ### LOG INSERTION Admin Log Table ### + $SQL_log = "$stmt|$stmtA|$stmtB|"; + $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='DROPLISTS', event_type='DELETE', record_id='$dl_id', event_code='ADMIN DELETE DROP LIST', event_sql=\"$SQL_log\", event_notes='';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + + echo "
"._QXZ("DROP LIST DELETION COMPLETED").": $dl_id\n"; + echo "

\n"; + } + } + + $ADD='130'; # go to drop lists list + } + + ###################### # ADD=6111 delete in-group record ###################### @@ -25558,6 +25765,381 @@ if ($ADD==311) } + +###################### +# ADD=431 modify drop list, add new drop status to the drop list drop statuses +###################### +if ($ADD==431) + { + if ($LOGmodify_lists!=1) + { + echo "
"._QXZ("You do not have permission to view this page")."\n"; + } + else + { + $stmt="SELECT count(*) from vicidial_drop_lists where dl_id='$dl_id' $LOGadmin_viewable_groupsSQL;"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + if ( ($row[0] < 1) or (strlen($dl_id) < 2) ) + { + echo "
"._QXZ("DROP LIST DROP NOT MODIFIED - Please go back and look at the data you entered")."\n"; + echo "
"._QXZ("drop list id must be between 2 and 30 characters in length")."\n"; + } + else + { + ### BEGIN drop list add status ### + if (strlen($drop_status) > 0) + { + $drop_status = preg_replace('/\-\-\-\-\-.*/i', '',$drop_status); + echo ""; + $stmt="SELECT count(*) from vicidial_drop_lists where dl_id='$dl_id' and drop_statuses LIKE \"% $drop_status %\" $LOGadmin_viewable_groupsSQL;"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + if ($row[0] > 0) + {echo "
"._QXZ("DROP LIST DROP STATUS NOT ADDED - there is already an entry for this drop list with this status")."\n";} + else + { + echo "
"._QXZ("DROP LIST STATUS ADDED").": $dl_id - $drop_status\n"; + + $stmt="SELECT drop_statuses from vicidial_drop_lists where dl_id='$dl_id';"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + + if (strlen($row[0])<2) {$row[0] = ' -';} + $drop_statuses = " $drop_status$row[0]"; + $stmt="UPDATE vicidial_drop_lists set drop_statuses='$drop_statuses' where dl_id='$dl_id';"; + $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='$SQLdate', user='$PHP_AUTH_USER', ip_address='$ip', event_section='DROPLISTS', event_type='ADD', record_id='$dl_id', event_code='ADMIN ADD DROP LIST STATUS', event_sql=\"$SQL_log\", event_notes='Status: $statuses';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + } + ### END drop list add status ### + } + else + { + ### BEGIN modify drop list ### + echo "
"._QXZ("DROP LIST MODIFIED").": $dl_id - $dl_name\n"; + + $p=0; + $DL_weekdays=''; + $dl_weekdays_ct = count($dl_weekdays); + while ($p <= $dl_weekdays_ct) + { + $DL_weekdays .= "$dl_weekdays[$p]"; + $p++; + } + + $groups_value=''; + $group_ct = count($groups); + $p=0; + while ($p < $group_ct) + { + $groups_value .= " $groups[$p]"; + $p++; + } + if (strlen($groups_value)>2) {$groups_value .= " -";} + + $stmt="UPDATE vicidial_drop_lists set dl_name='$dl_name',dl_server='$dl_server',dl_times='$dl_times',dl_weekdays='$DL_weekdays',dl_monthdays='$dl_monthdays',list_id='$list_id',duplicate_check='$duplicate_check',run_now_trigger='$run_now_trigger',active='$active',user_group='$user_group',closer_campaigns='$groups_value' where dl_id='$dl_id';"; + $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='$SQLdate', user='$PHP_AUTH_USER', ip_address='$ip', event_section='DROPLISTS', event_type='MODIFY', record_id='$dl_id', event_code='ADMIN MODIFY DROP LIST', event_sql=\"$SQL_log\", event_notes='';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + ### END modify drop list ### + } + } + } + $ADD=331; + } + + +###################### +# ADD=333 remove drop list drop status +###################### +if ($ADD==333) + { + if ($LOGmodify_lists==1) + { + echo ""; + $stmt="SELECT count(*) from vicidial_drop_lists where dl_id='$dl_id' and drop_statuses LIKE \"% $status %\" $LOGadmin_viewable_groupsSQL;"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + if ($row[0] < 1) + {echo "
"._QXZ("DROP LIST DROP STATUS NOT REMOVED - this drop status is not selected for this drop list")."\n";} + else + { + if ( (strlen($dl_id) < 2) or (strlen($status) < 1) ) + { + echo "
"._QXZ("DROP LIST DROP STATUS NOT REMOVED - Please go back and look at the data you entered")."\n"; + echo "
"._QXZ("status must be between 1 and 6 characters in length")."\n"; + } + else + { + $stmt="SELECT count(*) from vicidial_drop_lists where dl_id='$dl_id' $LOGadmin_viewable_groupsSQL;"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + if ($row[0] < 1) + {echo "
"._QXZ("DROP LIST NOT FOUND").": $dl_id";} + else + { + echo "
"._QXZ("DROP LIST DROP STATUS REMOVED").": $dl_id - $status\n"; + + $stmt="SELECT drop_statuses from vicidial_drop_lists where dl_id='$dl_id' $LOGadmin_viewable_groupsSQL;"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + + $drop_statuses = preg_replace("/\s$status\s/i", " ",$row[0]); + $stmt="UPDATE vicidial_drop_lists set drop_statuses='$drop_statuses' where dl_id='$dl_id' $LOGadmin_viewable_groupsSQL;"; + $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='$SQLdate', user='$PHP_AUTH_USER', ip_address='$ip', event_section='DROPLISTS', event_type='DELETE', record_id='$dl_id', event_code='ADMIN DELETE DROP LIST STATUS', event_sql=\"$SQL_log\", event_notes='Status: $status';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + } + } + } + } + else + { + echo _QXZ("You do not have permission to view this page")."\n"; + exit; + } + $ADD=331; # go to drop list modification form below + } + + +###################### +# ADD=331 modify drop list info in the system +###################### +if ($ADD==331) + { + if ($LOGmodify_lists==1) + { + if ( ($SSadmin_modify_refresh > 1) and ($modify_refresh_set < 1) ) + { + $modify_url = "$PHP_SELF?ADD=331&dl_id=$dl_id"; + $modify_footer_refresh=1; + } + echo "\n"; - echo "\n"; - echo "\n"; echo "\n"; @@ -33969,15 +34550,19 @@ if ($ADD==311111111111111) echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; - echo "\n"; + echo "\n"; - echo "\n"; + echo "\n"; + + echo "\n"; + + echo "\n"; + + echo "\n"; echo "\n"; @@ -35190,6 +35775,77 @@ if ($ADD==100) } +###################### +# ADD=130 display all drop lists +###################### +if ($ADD==130) + { + echo "
\n"; + echo ""; + + $stmt="SELECT count(*) from vicidial_drop_lists where dl_id='$dl_id' $LOGadmin_viewable_groupsSQL;"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + if ( ($row[0] < 1) or (strlen($dl_id) < 2) ) + { + echo "
"._QXZ("DROP LIST DROP NOT MODIFIED - Please go back and look at the data you entered")."\n"; + echo "
"._QXZ("drop list id must be between 2 and 30 characters in length")."\n"; + } + else + { + ##### get server listing for dynamic pulldown + $stmt="SELECT server_ip,server_description,external_server_ip from servers order by server_ip"; + $rsltx=mysql_to_mysqli($stmt, $link); + $servers_to_print = mysqli_num_rows($rsltx); + $servers_list=''; + $o=0; + while ($servers_to_print > $o) + { + $rowx=mysqli_fetch_row($rsltx); + $servers_list .= "\n"; + $o++; + } + + $stmt="SELECT dl_id,dl_name,last_run,dl_server,dl_times,dl_weekdays,dl_monthdays,drop_statuses,list_id,duplicate_check,run_now_trigger,active,user_group,closer_campaigns from vicidial_drop_lists where dl_id='$dl_id' $LOGadmin_viewable_groupsSQL;"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $dl_id = $row[0]; + $dl_name = $row[1]; + $last_run = $row[2]; + $dl_server = $row[3]; + $dl_times = $row[4]; + $dl_weekdays = $row[5]; + $dl_monthdays = $row[6]; + $drop_statuses = $row[7]; + $list_id = $row[8]; + $duplicate_check = $row[9]; + $run_now_trigger = $row[10]; + $active = $row[11]; + $user_group = $row[12]; + $closer_campaigns = $row[13]; + + echo ""; + + echo "
"._QXZ("MODIFY A DROP LIST")."\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + $drop_statuses = preg_replace("/ -$/","",$drop_statuses); + $Dstatuses = explode(" ", $drop_statuses); + $Ds_to_print = (count($Dstatuses) - 0); + $o=0; $p=0; + while ($Ds_to_print > $o) + { + $o++; + $Dstatus = $Dstatuses[$o]; + + if (strlen($Dstatus)>0) + { + $p++; + echo "\n"; + } + } + + echo "\n"; + + $closer_campaignsSQL = 'closer_campaigns'; + $groups_list=''; + + $stmt="SELECT closer_campaigns from vicidial_drop_lists where dl_id='$dl_id' $LOGadmin_viewable_groupsSQL;"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $Mcloser_campaigns = $row[0]; + $Mcloser_campaigns = preg_replace("/ -$/","",$Mcloser_campaigns); + $groups = explode(" ", $Mcloser_campaigns); + + $stmt="SELECT group_id,group_name from vicidial_inbound_groups where group_handling='PHONE' $LOGadmin_viewable_groupsSQL order by group_id;"; + $rslt=mysql_to_mysqli($stmt, $link); + $Dgroups_to_print = mysqli_num_rows($rslt); + $o=0; + while ($Dgroups_to_print > $o) + { + $rowx=mysqli_fetch_row($rslt); + $group_id_values[$o] = $rowx[0]; + $group_name_values[$o] = $rowx[1]; + if (strlen($group_id_values[$o])>0) + { + $groups_list .= "$group_id_values[$o] - $group_name_values[$o]
\n"; + } + $o++; + } + if (strlen($groups_value)>2) {$groups_value .= " -";} + + echo "\n"; + + echo "\n"; + echo "
"._QXZ("Drop List ID").": $dl_id
"._QXZ("Drop List Name").": $NWB#drop_lists-dl_name$NWE
"._QXZ("Last Run Time").": $last_run
"._QXZ("Admin User Group").": $NWB#drop_lists-user_group$NWE
"._QXZ("Run Server").": $NWB#drop_lists-dl_server$NWE
"._QXZ("Run Times").": $NWB#drop_lists-dl_times$NWE
"._QXZ("Run Weekdays").":\n"; + echo ""._QXZ("Sunday")."   \n"; + echo ""._QXZ("Monday")."   \n"; + echo ""._QXZ("Tuesday")."   \n"; + echo ""._QXZ("Wednesday")."   \n"; + echo ""._QXZ("Thursday")."   \n"; + echo ""._QXZ("Friday")."   \n"; + echo ""._QXZ("Saturday")."   \n"; + echo "$NWB#drop_lists-dl_weekdays$NWE
"._QXZ("Run Month Days").": $NWB#drop_lists-dl_monthdays$NWE
"._QXZ("Duplicate Check").": $NWB#drop_lists-duplicate_check$NWE
"._QXZ("List ID").":   ("._QXZ("digits only").") $NWB#drop_lists-list_id$NWE
"._QXZ("Active").": $NWB#drop_lists-active$NWE
"._QXZ("Run Now Trigger").": $NWB#drop_lists-run_now_trigger$NWE
"._QXZ("Drop Status")." $p: \n"; + echo "$Dstatus - $statname_list[$Dstatus]         \n"; + echo ""._QXZ("REMOVE")."
"._QXZ("Add A Drop Status").":   \n"; + echo "     $NWB#drop_lists-drop_statuses$NWE

"._QXZ("Inbound Groups").":
$NWB#drop_lists-closer_campaigns$NWE
\n"; + echo "$groups_list"; + echo "
\n"; + + echo "

\n"; + + if ($LOGmodify_lists > 0) + { + echo "

"._QXZ("DELETE THIS DROP LIST")."\n"; + } + if ( ($LOGuser_level >= 9) and ( (preg_match("/Administration Change Log/",$LOGallowed_reports)) or (preg_match("/ALL REPORTS/",$LOGallowed_reports)) ) ) + { + echo "

"._QXZ("Click here to see Admin changes to this drop list")."
\n"; + } + } + } + else + { + echo _QXZ("You do not have permission to view this page")."\n"; + exit; + } + } + + ###################### # ADD=3111 modify in-group info in the system ###################### @@ -33561,7 +34143,7 @@ if ($ADD==311111111111111) $ALLagent_count = $rowx[2]; } - $stmt="SELECT version,install_date,use_non_latin,webroot_writable,enable_queuemetrics_logging,queuemetrics_server_ip,queuemetrics_dbname,queuemetrics_login,queuemetrics_pass,queuemetrics_url,queuemetrics_log_id,queuemetrics_eq_prepend,vicidial_agent_disable,allow_sipsak_messages,admin_home_url,enable_agc_xfer_log,db_schema_version,auto_user_add_value,timeclock_end_of_day,timeclock_last_reset_date,vdc_header_date_format,vdc_customer_date_format,vdc_header_phone_format,vdc_agent_api_active,qc_last_pull_time,enable_vtiger_integration,vtiger_server_ip,vtiger_dbname,vtiger_login,vtiger_pass,vtiger_url,qc_features_active,outbound_autodial_active,outbound_calls_per_second,enable_tts_integration,agentonly_callback_campaign_lock,sounds_central_control_active,sounds_web_server,sounds_web_directory,active_voicemail_server,auto_dial_limit,user_territories_active,allow_custom_dialplan,db_schema_update_date,enable_second_webform,default_webphone,default_external_server_ip,webphone_url,enable_agc_dispo_log,custom_dialplan_entry,queuemetrics_loginout,callcard_enabled,queuemetrics_callstatus,default_codecs,admin_web_directory,label_title,label_first_name,label_middle_initial,label_last_name,label_address1,label_address2,label_address3,label_city,label_state,label_province,label_postal_code,label_vendor_lead_code,label_gender,label_phone_number,label_phone_code,label_alt_phone,label_security_phrase,label_email,label_comments,custom_fields_enabled,slave_db_server,reports_use_slave_db,webphone_systemkey,first_login_trigger,default_phone_registration_password,default_phone_login_password,default_server_password,admin_modify_refresh,nocache_admin,generate_cross_server_exten,queuemetrics_addmember_enabled,queuemetrics_dispo_pause,label_hide_field_logs,queuemetrics_pe_phone_append,test_campaign_calls,agents_calls_reset,default_voicemail_timezone,default_local_gmt,noanswer_log,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,did_agent_log,campaign_cid_areacodes_enabled,pllb_grouping_limit,did_ra_extensions_enabled,expanded_list_stats,contacts_enabled,call_menu_qualify_enabled,admin_list_counts,allow_voicemail_greeting,svn_revision,queuemetrics_socket,queuemetrics_socket_url,enhanced_disconnect_logging,allow_emails,level_8_disable_add,pass_hash_enabled,pass_key,pass_cost,disable_auto_dial,queuemetrics_record_hold,country_code_list_stats,reload_timestamp,queuemetrics_pause_type,frozen_server_call_clear,callback_time_24hour,allow_chats,chat_url,chat_timeout,enable_languages,language_method,meetme_enter_login_filename,meetme_enter_leave3way_filename,enable_did_entry_list_id,enable_third_webform,agent_debug_logging,default_language,agent_whisper_enabled,user_hide_realtime_enabled,usacan_phone_dialcode_fix,cache_carrier_stats_realtime,oldest_logs_date,log_recording_access,report_default_format,alt_ivr_logging,default_phone_code,admin_row_click,admin_screen_colors,ofcom_uk_drop_calc,agent_screen_colors,script_remove_js,manual_auto_next,user_new_lead_limit,agent_xfer_park_3way,rec_prompt_count,agent_soundboards,web_loader_phone_length,agent_script,agent_chat_screen_colors,enable_auto_reports,enable_pause_code_limits from system_settings;"; + $stmt="SELECT version,install_date,use_non_latin,webroot_writable,enable_queuemetrics_logging,queuemetrics_server_ip,queuemetrics_dbname,queuemetrics_login,queuemetrics_pass,queuemetrics_url,queuemetrics_log_id,queuemetrics_eq_prepend,vicidial_agent_disable,allow_sipsak_messages,admin_home_url,enable_agc_xfer_log,db_schema_version,auto_user_add_value,timeclock_end_of_day,timeclock_last_reset_date,vdc_header_date_format,vdc_customer_date_format,vdc_header_phone_format,vdc_agent_api_active,qc_last_pull_time,enable_vtiger_integration,vtiger_server_ip,vtiger_dbname,vtiger_login,vtiger_pass,vtiger_url,qc_features_active,outbound_autodial_active,outbound_calls_per_second,enable_tts_integration,agentonly_callback_campaign_lock,sounds_central_control_active,sounds_web_server,sounds_web_directory,active_voicemail_server,auto_dial_limit,user_territories_active,allow_custom_dialplan,db_schema_update_date,enable_second_webform,default_webphone,default_external_server_ip,webphone_url,enable_agc_dispo_log,custom_dialplan_entry,queuemetrics_loginout,callcard_enabled,queuemetrics_callstatus,default_codecs,admin_web_directory,label_title,label_first_name,label_middle_initial,label_last_name,label_address1,label_address2,label_address3,label_city,label_state,label_province,label_postal_code,label_vendor_lead_code,label_gender,label_phone_number,label_phone_code,label_alt_phone,label_security_phrase,label_email,label_comments,custom_fields_enabled,slave_db_server,reports_use_slave_db,webphone_systemkey,first_login_trigger,default_phone_registration_password,default_phone_login_password,default_server_password,admin_modify_refresh,nocache_admin,generate_cross_server_exten,queuemetrics_addmember_enabled,queuemetrics_dispo_pause,label_hide_field_logs,queuemetrics_pe_phone_append,test_campaign_calls,agents_calls_reset,default_voicemail_timezone,default_local_gmt,noanswer_log,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,did_agent_log,campaign_cid_areacodes_enabled,pllb_grouping_limit,did_ra_extensions_enabled,expanded_list_stats,contacts_enabled,call_menu_qualify_enabled,admin_list_counts,allow_voicemail_greeting,svn_revision,queuemetrics_socket,queuemetrics_socket_url,enhanced_disconnect_logging,allow_emails,level_8_disable_add,pass_hash_enabled,pass_key,pass_cost,disable_auto_dial,queuemetrics_record_hold,country_code_list_stats,reload_timestamp,queuemetrics_pause_type,frozen_server_call_clear,callback_time_24hour,allow_chats,chat_url,chat_timeout,enable_languages,language_method,meetme_enter_login_filename,meetme_enter_leave3way_filename,enable_did_entry_list_id,enable_third_webform,agent_debug_logging,default_language,agent_whisper_enabled,user_hide_realtime_enabled,usacan_phone_dialcode_fix,cache_carrier_stats_realtime,oldest_logs_date,log_recording_access,report_default_format,alt_ivr_logging,default_phone_code,admin_row_click,admin_screen_colors,ofcom_uk_drop_calc,agent_screen_colors,script_remove_js,manual_auto_next,user_new_lead_limit,agent_xfer_park_3way,rec_prompt_count,agent_soundboards,web_loader_phone_length,agent_script,agent_chat_screen_colors,enable_auto_reports,enable_pause_code_limits,enable_drop_lists from system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $version = $row[0]; @@ -33723,6 +34305,7 @@ if ($ADD==311111111111111) $agent_chat_screen_colors = $row[156]; $enable_auto_reports = $row[157]; $enable_pause_code_limits = $row[158]; + $enable_drop_lists = $row[159]; if ($pass_hash_enabled > 0) {$pass_hash_enabled = 'ENABLED';} else {$pass_hash_enabled = 'DISABLED';} @@ -33945,8 +34528,6 @@ if ($ADD==311111111111111) echo "
"._QXZ("Max FILL Calls per Second").": $NWB#settings-outbound_calls_per_second$NWE
"._QXZ("New Leads Per List Limit").": $NWB#settings-user_new_lead_limit$NWE
"._QXZ("Web Lead Loader Phone Length").": $NWB#settings-web_loader_phone_length$NWE
"._QXZ("Allow Custom Dialplan Entries").": $NWB#settings-allow_custom_dialplan$NWE
"._QXZ("Enable CallCard").": $NWB#settings-callcard_enabled$NWE
"._QXZ("Enable Custom List Fields").": $NWB#settings-custom_fields_enabled$NWE
"._QXZ("Enable Campaign Test Calls").": $NWB#settings-test_campaign_calls$NWE
"._QXZ("Enable Expanded List Stats").": $NWB#settings-expanded_list_stats$NWE
"._QXZ("New Leads Per List Limit").": $NWB#settings-user_new_lead_limit$NWE
"._QXZ("Country Code List Stats").": $NWB#settings-country_code_list_stats$NWE
"._QXZ("Enable Custom List Fields").": $NWB#settings-custom_fields_enabled$NWE
"._QXZ("Enable DID Entry List ID").": $NWB#settings-enable_did_entry_list_id$NWE
"._QXZ("Enable Expanded List Stats").": $NWB#settings-expanded_list_stats$NWE
"._QXZ("Country Code List Stats").": $NWB#settings-country_code_list_stats$NWE
"._QXZ("Enable DID Entry List ID").": $NWB#settings-enable_did_entry_list_id$NWE
"._QXZ("Enable Drop Lists").": $NWB#settings-enable_drop_lists$NWE
"._QXZ("Agent Screen Debug Logging").": $NWB#settings-agent_debug_logging$NWE
0) {echo " onclick=\"window.document.location='$ADMIN?ADD=100';\"";} ?>> 0) {echo " onclick=\"window.document.location='$ADMIN?ADD=100';\"";} ?>>> - 25) and ($SSenable_drop_lists > 0) ) { + ?> + > + 25) { ?> >
\n"; + echo ""; + + $stmt="SELECT dl_id,dl_name,last_run,active,list_id,user_group,closer_campaigns from vicidial_drop_lists $whereLOGadmin_viewable_groupsSQL order by dl_id;"; + $rslt=mysql_to_mysqli($stmt, $link); + $droplists_to_print = mysqli_num_rows($rslt); + + echo _QXZ("DROP LISTS LISTINGS").":\n"; + echo "
\n"; + echo ""; + echo ""; + echo ""; + echo "\n"; + echo ""; + echo ""; + echo ""; + echo ""; + echo "\n"; + echo "\n"; + + $o=0; + while ($droplists_to_print > $o) + { + $row=mysqli_fetch_row($rslt); + $dl_id_ary[$o] = $row[0]; + $dl_name_ary[$o] = $row[1]; + $last_run_ary[$o] = $row[2]; + $dl_active_ary[$o] = $row[3]; + $list_id_ary[$o] = $row[4]; + $group_group_ary[$o] = $row[5]; + $closer_campaigns_ary[$o] = $row[6]; + $o++; + } + + $o=0; + while ($droplists_to_print > $o) + { + $closer_campaigns_ary[$o] = preg_replace("/^ |^ | -$/",'',$closer_campaigns_ary[$o]); + $ingroups_ary = explode(" ",$closer_campaigns_ary[$o]); + $ingroups_ary_ct = count($ingroups_ary); + $s=0; $ingroups_ct=0; + while($s < $ingroups_ary_ct) + { + if (strlen($ingroups_ary[$s])>1) + {$ingroups_ct++;} + $s++; + } + if (preg_match('/1$|3$|5$|7$|9$/i', $o)) + {$bgcolor='class="records_list_x"';} + else + {$bgcolor='class="records_list_y"';} + echo " 0) {echo " onclick=\"window.document.location='$PHP_SELF?ADD=331&dl_id=$dl_id_ary[$o]'\"";} echo ">"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "\n"; + $o++; + } + + echo "
"._QXZ("ID").""._QXZ("DROP LIST NAME").""._QXZ("LAST RUN").""._QXZ("ACTIVE").""._QXZ("LIST ID").""._QXZ("INGROUPS").""._QXZ("ADMIN GROUP").""._QXZ("MODIFY")."
$dl_id_ary[$o] $dl_name_ary[$o] $last_run_ary[$o] $dl_active_ary[$o] $list_id_ary[$o] $ingroups_ct $group_group_ary[$o]"._QXZ("MODIFY")."
\n"; + } + + ###################### # ADD=1000 display all inbound groups ###################### diff --git a/www/vicidial/admin_header.php b/www/vicidial/admin_header.php index b467682c..410a95ea 100644 --- a/www/vicidial/admin_header.php +++ b/www/vicidial/admin_header.php @@ -72,7 +72,7 @@ # 170304-1354 - Added Automated Reports section to Admin # -$stmt="SELECT admin_home_url,enable_tts_integration,callcard_enabled,custom_fields_enabled,allow_emails,level_8_disable_add,allow_chats,enable_languages,admin_row_click,admin_screen_colors,user_new_lead_limit,user_territories_active,qc_features_active,agent_soundboards from system_settings;"; +$stmt="SELECT admin_home_url,enable_tts_integration,callcard_enabled,custom_fields_enabled,allow_emails,level_8_disable_add,allow_chats,enable_languages,admin_row_click,admin_screen_colors,user_new_lead_limit,user_territories_active,qc_features_active,agent_soundboards,enable_drop_lists from system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $admin_home_url_LU = $row[0]; @@ -89,6 +89,7 @@ $SSuser_new_lead_limit = $row[10]; $SSuser_territories_active = $row[11]; $SSqc_features_active = $row[12]; $SSagent_soundboards = $row[13]; +$SSenable_drop_lists = $row[14]; $SSmenu_background='015B91'; $SSframe_background='D9E6FE'; @@ -1569,6 +1570,7 @@ if ($subcamp_font_size < 4) {$subcamp_font_size='11';} $dnc_sh="CLASS=\"subhead_style\""; $custom_sh="CLASS=\"subhead_style\""; $cpcust_sh="CLASS=\"subhead_style\""; + $droplist_sh="CLASS=\"subhead_style\""; if ($LOGdelete_from_dnc > 0) {$DNClink = _QXZ("Add-Delete DNC Number");} else {$DNClink = _QXZ("Add DNC Number");} @@ -1581,6 +1583,7 @@ if ($subcamp_font_size < 4) {$subcamp_font_size='11';} if ($sh=='dnc') {$dnc_sh="CLASS=\"subhead_style_selected\"";} if ($sh=='custom') {$custom_sh="CLASS=\"subhead_style_selected\"";} if ($sh=='cpcust') {$cpcust_sh="CLASS=\"subhead_style_selected\"";} + if ($sh=='droplist') {$droplist_sh="CLASS=\"subhead_style_selected\"";} ?>
  @@ -1610,6 +1613,13 @@ if ($subcamp_font_size < 4) {$subcamp_font_size='11';} 0) + { + ?> +
  + +
      |         |         |    
      | +   
   | diff --git a/www/vicidial/help.php b/www/vicidial/help.php index 04732550..30f88223 100644 --- a/www/vicidial/help.php +++ b/www/vicidial/help.php @@ -117,6 +117,7 @@ # 170320-1346 - Added phones conf_qualify entry # 170321-1130 - Added pause code limits entries # 170322-1720 - Added filter-phone-list entry +# 170326-1135 - Added drop lists entries # @@ -2176,6 +2177,88 @@ if ($SSqc_features_active > 0) +



+ +Drop Lists Help

+ +
+ +
+ +
+
+
+ - + +
+
+
+ - + +
+
+
+ - + +
+
+
+ - + +
+
+
+ - + +
+
+
+ - + +
+
+
+ - + +
+
+
+ - + +
+
+
+ - + +
+
+
+ - + +
+
+
+ - + +
+
+
+ - + +
+
+
+ - + +
+
+
+ - + + + + +



Lists Custom Fields Help

@@ -5116,11 +5199,6 @@ FR_SPAC 00 00 00 00 00 - - -
-
-
- - -

@@ -5176,16 +5254,21 @@ FR_SPAC 00 00 00 00 00 - - -
-
-
- - -

- +
+
+
+ - + +
+
+
+ - +

@@ -5201,6 +5284,11 @@ FR_SPAC 00 00 00 00 00 - - +
+
+
+ - +