diff --git a/UPGRADE b/UPGRADE index 9f36c7fd..1ab6b219 100644 --- a/UPGRADE +++ b/UPGRADE @@ -269,6 +269,9 @@ OTHER CHANGES: 71. Added the Outbound Lead Source Report +72. Added basic GDPR features for lead activity download and delete. Must enable + System setting and user permission to use. + diff --git a/extras/MySQL_AST_CREATE_tables.sql b/extras/MySQL_AST_CREATE_tables.sql index 368bb45b..330bbeed 100644 --- a/extras/MySQL_AST_CREATE_tables.sql +++ b/extras/MySQL_AST_CREATE_tables.sql @@ -664,7 +664,8 @@ api_only_user ENUM('0','1') default '0', modify_auto_reports ENUM('1','0') default '0', modify_ip_lists ENUM('1','0') default '0', ignore_ip_list ENUM('1','0') default '0', -ready_max_logout MEDIUMINT(7) default '-1' +ready_max_logout MEDIUMINT(7) default '-1', +export_gdpr_leads ENUM('0','1','2') default '0' ) ENGINE=MyISAM; CREATE UNIQUE INDEX user ON vicidial_users (user); @@ -1755,7 +1756,8 @@ hide_inactive_lists ENUM('0','1') default '0', allow_manage_active_lists ENUM('0','1') default '0', expired_lists_inactive ENUM('0','1') default '0', did_system_filter ENUM('0','1') default '0', -anyone_callback_inactive_lists ENUM('default','NO_ADD_TO_HOPPER','KEEP_IN_HOPPER') default 'default' +anyone_callback_inactive_lists ENUM('default','NO_ADD_TO_HOPPER','KEEP_IN_HOPPER') default 'default', +enable_gdpr_download_deletion ENUM('0','1','2') default '0' ) ENGINE=MyISAM; CREATE TABLE vicidial_campaigns_list_mix ( @@ -3881,6 +3883,16 @@ modify_date TIMESTAMP, index (icbq_status) ) ENGINE=MyISAM; +CREATE TABLE recording_log_deletion_queue ( +recording_id INT(9) UNSIGNED PRIMARY KEY, +lead_id int(10) UNSIGNED, +filename VARCHAR(100), +location VARCHAR(255), +date_queued DATETIME, +date_deleted DATETIME, +index (date_deleted) +) ENGINE=MyISAM; + ALTER TABLE vicidial_email_list MODIFY message text character set utf8; @@ -4165,4 +4177,4 @@ INSERT INTO vicidial_settings_containers(container_id,container_notes,container_ UPDATE system_settings set vdc_agent_api_active='1'; -UPDATE system_settings SET db_schema_version='1534',db_schema_update_date=NOW(),reload_timestamp=NOW(); +UPDATE system_settings SET db_schema_version='1535',db_schema_update_date=NOW(),reload_timestamp=NOW(); diff --git a/extras/upgrade_2.14.sql b/extras/upgrade_2.14.sql index b12a58ef..374b8649 100644 --- a/extras/upgrade_2.14.sql +++ b/extras/upgrade_2.14.sql @@ -540,3 +540,19 @@ ALTER TABLE vicidial_closer_log MODIFY term_reason ENUM('CALLER','AGENT','QUEUE ALTER TABLE vicidial_closer_log_archive MODIFY term_reason ENUM('CALLER','AGENT','QUEUETIMEOUT','ABANDON','AFTERHOURS','HOLDRECALLXFER','HOLDTIME','NOAGENT','NONE','MAXCALLS','ACFILTER','CLOSETIME') default 'NONE'; UPDATE system_settings SET db_schema_version='1534',db_schema_update_date=NOW() where db_schema_version < 1534; + +ALTER TABLE system_settings ADD enable_gdpr_download_deletion ENUM('0','1','2') default '0'; + +ALTER TABLE vicidial_users ADD export_gdpr_leads ENUM('0','1','2') default '0'; + +CREATE TABLE recording_log_deletion_queue ( +recording_id INT(9) UNSIGNED PRIMARY KEY, +lead_id int(10) UNSIGNED, +filename VARCHAR(100), +location VARCHAR(255), +date_queued DATETIME, +date_deleted DATETIME, +index (date_deleted) +) ENGINE=MyISAM; + +UPDATE system_settings SET db_schema_version='1535',db_schema_update_date=NOW() where db_schema_version < 1535; diff --git a/www/vicidial/admin.php b/www/vicidial/admin.php index 78ed10a4..c8dc0cd0 100644 --- a/www/vicidial/admin.php +++ b/www/vicidial/admin.php @@ -451,6 +451,8 @@ if (isset($_GET["modify_call_times"])) {$modify_call_times=$_GET["modify_call_ti elseif (isset($_POST["modify_call_times"])) {$modify_call_times=$_POST["modify_call_times"];} if (isset($_GET["modify_leads"])) {$modify_leads=$_GET["modify_leads"];} elseif (isset($_POST["modify_leads"])) {$modify_leads=$_POST["modify_leads"];} +if (isset($_GET["export_gdpr_leads"])) {$export_gdpr_leads=$_GET["export_gdpr_leads"];} + elseif (isset($_POST["export_gdpr_leads"])) {$export_gdpr_leads=$_POST["export_gdpr_leads"];} if (isset($_GET["monitor_prefix"])) {$monitor_prefix=$_GET["monitor_prefix"];} elseif (isset($_POST["monitor_prefix"])) {$monitor_prefix=$_POST["monitor_prefix"];} if (isset($_GET["next_agent_call"])) {$next_agent_call=$_GET["next_agent_call"];} @@ -2287,6 +2289,8 @@ if (isset($_GET["filename_override"])) {$filename_override=$_GET["filename_ove elseif (isset($_POST["filename_override"])) {$filename_override=$_POST["filename_override"];} if (isset($_GET["expired_lists_inactive"])) {$expired_lists_inactive=$_GET["expired_lists_inactive"];} elseif (isset($_POST["expired_lists_inactive"])) {$expired_lists_inactive=$_POST["expired_lists_inactive"];} +if (isset($_GET["enable_gdpr_download_deletion"])) {$enable_gdpr_download_deletion=$_GET["enable_gdpr_download_deletion"];} + elseif (isset($_POST["enable_gdpr_download_deletion"])) {$enable_gdpr_download_deletion=$_POST["enable_gdpr_download_deletion"];} if (isset($_GET["did_system_filter"])) {$did_system_filter=$_GET["did_system_filter"];} elseif (isset($_POST["did_system_filter"])) {$did_system_filter=$_POST["did_system_filter"];} if (isset($_GET["webphone_layout"])) {$webphone_layout=$_GET["webphone_layout"];} @@ -2347,7 +2351,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,enable_drop_lists,allow_ip_lists,system_ip_blacklist,hide_inactive_lists,allow_manage_active_lists,expired_lists_inactive,did_system_filter 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,allow_ip_lists,system_ip_blacklist,hide_inactive_lists,allow_manage_active_lists,expired_lists_inactive,did_system_filter,enable_gdpr_download_deletion FROM system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $qm_conf_ct = mysqli_num_rows($rslt); @@ -2428,6 +2432,7 @@ if ($qm_conf_ct > 0) $SSallow_manage_active_lists = $row[71]; $SSexpired_lists_inactive = $row[72]; $SSdid_system_filter = $row[73]; + $SSenable_gdpr_download_deletion = $row[74]; } ##### END SETTINGS LOOKUP ##### ########################################### @@ -2538,6 +2543,7 @@ if ($non_latin < 1) $modify_servers = preg_replace('/[^0-9]/','',$modify_servers); $view_reports = preg_replace('/[^0-9]/','',$view_reports); $modify_leads = preg_replace('/[^0-9]/','',$modify_leads); + $export_gdpr_leads = preg_replace('/[^0-9]/','',$export_gdpr_leads); $monitor_prefix = preg_replace('/[^0-9]/','',$monitor_prefix); $number_of_lines = preg_replace('/[^0-9]/','',$number_of_lines); $old_conf_exten = preg_replace('/[^0-9]/','',$old_conf_exten); @@ -2751,6 +2757,7 @@ if ($non_latin < 1) $inbound_survey_accept_digit = preg_replace('/[^0-9]/','',$inbound_survey_accept_digit); $allow_manage_active_lists = preg_replace('/[^0-9]/','',$allow_manage_active_lists); $expired_lists_inactive = preg_replace('/[^0-9]/','',$expired_lists_inactive); + $enable_gdpr_download_deletion = preg_replace('/[^0-9]/','',$enable_gdpr_download_deletion); $did_system_filter = preg_replace('/[^0-9]/','',$did_system_filter); $icbq_expiration_hours = preg_replace('/[^0-9]/','',$icbq_expiration_hours); @@ -4291,12 +4298,13 @@ else # 180204-0208 - Added In-Group Wait-Time option PRESS_CALLBACK_QUEUE, and Closing-Time options # 180211-1024 - Changed campaign dial statuses to allow List and allowed In-Group selected status group statuses # 180211-1126 - Added Outbound Lead Source Report +# 180213-0010 - Added GDPR system and user settings # # 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-654a'; -$build = '180211-1126'; +$admin_version = '2.14-655a'; +$build = '180213-0010'; $STARTtime = date("U"); $SQLdate = date("Y-m-d H:i:s"); @@ -4499,7 +4507,7 @@ if ( ($qc_auth > 0) and ($auth < 1) ) $qc_only_user=1; } -$stmt="SELECT user_id,user,pass,full_name,user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override,qc_enabled,qc_user_level,qc_pass,qc_finish,qc_commit,add_timeclock_log,modify_timeclock_log,delete_timeclock_log,alter_custphone_override,vdc_agent_api_access,modify_inbound_dids,delete_inbound_dids,active,alert_enabled,download_lists,agent_shift_enforcement_override,manager_shift_enforcement_override,shift_override_flag,export_reports,delete_from_dnc,email,user_code,territory,allow_alerts,callcard_admin,force_change_password,modify_shifts,modify_phones,modify_carriers,modify_labels,modify_statuses,modify_voicemail,modify_audiostore,modify_moh,modify_tts,modify_contacts,modify_same_user_level,alter_admin_interface_options,modify_custom_dialplans,modify_languages,selected_language,user_choose_language,modify_colors,api_only_user,modify_auto_reports,modify_ip_lists from vicidial_users where user='$PHP_AUTH_USER';"; +$stmt="SELECT user_id,user,pass,full_name,user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override,qc_enabled,qc_user_level,qc_pass,qc_finish,qc_commit,add_timeclock_log,modify_timeclock_log,delete_timeclock_log,alter_custphone_override,vdc_agent_api_access,modify_inbound_dids,delete_inbound_dids,active,alert_enabled,download_lists,agent_shift_enforcement_override,manager_shift_enforcement_override,shift_override_flag,export_reports,delete_from_dnc,email,user_code,territory,allow_alerts,callcard_admin,force_change_password,modify_shifts,modify_phones,modify_carriers,modify_labels,modify_statuses,modify_voicemail,modify_audiostore,modify_moh,modify_tts,modify_contacts,modify_same_user_level,alter_admin_interface_options,modify_custom_dialplans,modify_languages,selected_language,user_choose_language,modify_colors,api_only_user,modify_auto_reports,modify_ip_lists,export_gdpr_leads from vicidial_users where user='$PHP_AUTH_USER';"; $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $LOGfull_name =$row[3]; @@ -4558,6 +4566,7 @@ $LOGmodify_colors =$row[88]; $LOGapi_only_user =$row[89]; $LOGmodify_auto_reports =$row[90]; $LOGmodify_ip_lists =$row[91]; +$LOGexport_gdpr_leads =$row[92]; $stmt="SELECT allowed_campaigns,allowed_reports,admin_viewable_groups,admin_viewable_call_times,qc_allowed_campaigns,qc_allowed_inbound_groups from vicidial_user_groups where user_group='$LOGuser_group';"; $rslt=mysql_to_mysqli($stmt, $link); @@ -9343,7 +9352,7 @@ if ($ADD=="2A") $pass=''; } - $stmt="INSERT INTO vicidial_users (user,pass,full_name,user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override,qc_enabled,qc_user_level,qc_pass,qc_finish,qc_commit,add_timeclock_log,modify_timeclock_log,delete_timeclock_log,alter_custphone_override,vdc_agent_api_access,modify_inbound_dids,delete_inbound_dids,active,alert_enabled,download_lists,agent_shift_enforcement_override,manager_shift_enforcement_override,export_reports,delete_from_dnc,email,user_code,territory,allow_alerts,agent_choose_territories,custom_one,custom_two,custom_three,custom_four,custom_five,voicemail_id,agent_call_log_view_override,callcard_admin,agent_choose_blended,realtime_block_user_info,custom_fields_modify,force_change_password,agent_lead_search_override,modify_shifts,modify_phones,modify_carriers,modify_labels,modify_statuses,modify_voicemail,modify_audiostore,modify_moh,modify_tts,preset_contact_search,modify_contacts,modify_same_user_level,admin_hide_lead_data,admin_hide_phone_data,agentcall_email,agentcall_chat,modify_email_accounts,pass_hash,alter_admin_interface_options,max_inbound_calls,modify_custom_dialplans,wrapup_seconds_override,modify_languages,selected_language,user_choose_language,ignore_group_on_search,api_list_restrict,api_allowed_functions,lead_filter_id,admin_cf_show_hidden,user_hide_realtime,modify_colors,user_nickname,user_new_lead_limit,api_only_user,modify_auto_reports,modify_ip_lists,ignore_ip_list,ready_max_logout) SELECT \"$user\",\"$pass\",\"$full_name\",user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override,qc_enabled,qc_user_level,qc_pass,qc_finish,qc_commit,add_timeclock_log,modify_timeclock_log,delete_timeclock_log,alter_custphone_override,vdc_agent_api_access,modify_inbound_dids,delete_inbound_dids,active,alert_enabled,download_lists,agent_shift_enforcement_override,manager_shift_enforcement_override,export_reports,delete_from_dnc,email,user_code,territory,allow_alerts,agent_choose_territories,custom_one,custom_two,custom_three,custom_four,custom_five,voicemail_id,agent_call_log_view_override,callcard_admin,agent_choose_blended,realtime_block_user_info,custom_fields_modify,force_change_password,agent_lead_search_override,modify_shifts,modify_phones,modify_carriers,modify_labels,modify_statuses,modify_voicemail,modify_audiostore,modify_moh,modify_tts,preset_contact_search,modify_contacts,modify_same_user_level,admin_hide_lead_data,admin_hide_phone_data,agentcall_email,agentcall_chat,modify_email_accounts,\"$pass_hash\",alter_admin_interface_options,max_inbound_calls,modify_custom_dialplans,wrapup_seconds_override,modify_languages,selected_language,user_choose_language,ignore_group_on_search,api_list_restrict,api_allowed_functions,lead_filter_id,admin_cf_show_hidden,user_hide_realtime,modify_colors,user_nickname,user_new_lead_limit,api_only_user,modify_auto_reports,modify_ip_lists,ignore_ip_list,ready_max_logout from vicidial_users where user=\"$source_user_id\";"; + $stmt="INSERT INTO vicidial_users (user,pass,full_name,user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override,qc_enabled,qc_user_level,qc_pass,qc_finish,qc_commit,add_timeclock_log,modify_timeclock_log,delete_timeclock_log,alter_custphone_override,vdc_agent_api_access,modify_inbound_dids,delete_inbound_dids,active,alert_enabled,download_lists,agent_shift_enforcement_override,manager_shift_enforcement_override,export_reports,delete_from_dnc,email,user_code,territory,allow_alerts,agent_choose_territories,custom_one,custom_two,custom_three,custom_four,custom_five,voicemail_id,agent_call_log_view_override,callcard_admin,agent_choose_blended,realtime_block_user_info,custom_fields_modify,force_change_password,agent_lead_search_override,modify_shifts,modify_phones,modify_carriers,modify_labels,modify_statuses,modify_voicemail,modify_audiostore,modify_moh,modify_tts,preset_contact_search,modify_contacts,modify_same_user_level,admin_hide_lead_data,admin_hide_phone_data,agentcall_email,agentcall_chat,modify_email_accounts,pass_hash,alter_admin_interface_options,max_inbound_calls,modify_custom_dialplans,wrapup_seconds_override,modify_languages,selected_language,user_choose_language,ignore_group_on_search,api_list_restrict,api_allowed_functions,lead_filter_id,admin_cf_show_hidden,user_hide_realtime,modify_colors,user_nickname,user_new_lead_limit,api_only_user,modify_auto_reports,modify_ip_lists,ignore_ip_list,ready_max_logout,export_gdpr_leads) SELECT \"$user\",\"$pass\",\"$full_name\",user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override,qc_enabled,qc_user_level,qc_pass,qc_finish,qc_commit,add_timeclock_log,modify_timeclock_log,delete_timeclock_log,alter_custphone_override,vdc_agent_api_access,modify_inbound_dids,delete_inbound_dids,active,alert_enabled,download_lists,agent_shift_enforcement_override,manager_shift_enforcement_override,export_reports,delete_from_dnc,email,user_code,territory,allow_alerts,agent_choose_territories,custom_one,custom_two,custom_three,custom_four,custom_five,voicemail_id,agent_call_log_view_override,callcard_admin,agent_choose_blended,realtime_block_user_info,custom_fields_modify,force_change_password,agent_lead_search_override,modify_shifts,modify_phones,modify_carriers,modify_labels,modify_statuses,modify_voicemail,modify_audiostore,modify_moh,modify_tts,preset_contact_search,modify_contacts,modify_same_user_level,admin_hide_lead_data,admin_hide_phone_data,agentcall_email,agentcall_chat,modify_email_accounts,\"$pass_hash\",alter_admin_interface_options,max_inbound_calls,modify_custom_dialplans,wrapup_seconds_override,modify_languages,selected_language,user_choose_language,ignore_group_on_search,api_list_restrict,api_allowed_functions,lead_filter_id,admin_cf_show_hidden,user_hide_realtime,modify_colors,user_nickname,user_new_lead_limit,api_only_user,modify_auto_reports,modify_ip_lists,ignore_ip_list,ready_max_logout,export_gdpr_leads from vicidial_users where user=\"$source_user_id\";"; $rslt=mysql_to_mysqli($stmt, $link); $stmtA="INSERT INTO vicidial_inbound_group_agents (user,group_id,group_rank,group_weight,calls_today,group_type) SELECT \"$user\",group_id,group_rank,group_weight,\"0\",group_type from vicidial_inbound_group_agents where user=\"$source_user_id\";"; @@ -12911,7 +12920,7 @@ if ($ADD=="4A") echo "
"._QXZ("USER MODIFIED - ADMIN").": $user\n"; - $stmt="UPDATE vicidial_users set pass='$pass',full_name='$full_name',user_level='$user_level',user_group='$user_group',phone_login='$phone_login',phone_pass='$phone_pass',delete_users='$delete_users',delete_user_groups='$delete_user_groups',delete_lists='$delete_lists',delete_campaigns='$delete_campaigns',delete_ingroups='$delete_ingroups',delete_remote_agents='$delete_remote_agents',load_leads='$load_leads',campaign_detail='$campaign_detail',ast_admin_access='$ast_admin_access',ast_delete_phones='$ast_delete_phones',delete_scripts='$delete_scripts',modify_leads='$modify_leads',hotkeys_active='$hotkeys_active',change_agent_campaign='$change_agent_campaign',agent_choose_ingroups='$agent_choose_ingroups',closer_campaigns='$groups_value',scheduled_callbacks='$scheduled_callbacks',agentonly_callbacks='$agentonly_callbacks',agentcall_manual='$agentcall_manual',vicidial_recording='$vicidial_recording',vicidial_transfers='$vicidial_transfers',delete_filters='$delete_filters',alter_agent_interface_options='$alter_agent_interface_options',closer_default_blended='$closer_default_blended',delete_call_times='$delete_call_times',modify_call_times='$modify_call_times',modify_users='$modify_users',modify_campaigns='$modify_campaigns',modify_lists='$modify_lists',modify_scripts='$modify_scripts',modify_filters='$modify_filters',modify_ingroups='$modify_ingroups',modify_usergroups='$modify_usergroups',modify_remoteagents='$modify_remoteagents',modify_servers='$modify_servers',view_reports='$view_reports',vicidial_recording_override='$vicidial_recording_override',alter_custdata_override='$alter_custdata_override',qc_enabled='$qc_enabled',qc_user_level='$qc_user_level',qc_pass='$qc_pass',qc_finish='$qc_finish',qc_commit='$qc_commit',add_timeclock_log='$add_timeclock_log',modify_timeclock_log='$modify_timeclock_log',delete_timeclock_log='$delete_timeclock_log',alter_custphone_override='$alter_custphone_override',vdc_agent_api_access='$vdc_agent_api_access',modify_inbound_dids='$modify_inbound_dids',delete_inbound_dids='$delete_inbound_dids',active='$active',download_lists='$download_lists',agent_shift_enforcement_override='$agent_shift_enforcement_override',manager_shift_enforcement_override='$manager_shift_enforcement_override',export_reports='$export_reports',delete_from_dnc='$delete_from_dnc',email='$email',user_code='$user_code',territory='$territory',allow_alerts='$allow_alerts',agent_choose_territories='$agent_choose_territories',custom_one='$custom_one',custom_two='$custom_two',custom_three='$custom_three',custom_four='$custom_four',custom_five='$custom_five',voicemail_id='$voicemail_id',agent_call_log_view_override='$agent_call_log_view_override',callcard_admin='$callcard_admin',agent_choose_blended='$agent_choose_blended',realtime_block_user_info='$realtime_block_user_info',custom_fields_modify='$custom_fields_modify',force_change_password='$force_change_password',agent_lead_search_override='$agent_lead_search',modify_shifts='$modify_shifts',modify_phones='$modify_phones',modify_carriers='$modify_carriers',modify_labels='$modify_labels',modify_statuses='$modify_statuses',modify_voicemail='$modify_voicemail',modify_audiostore='$modify_audiostore',modify_moh='$modify_moh',modify_tts='$modify_tts',preset_contact_search='$preset_contact_search',modify_contacts='$modify_contacts',modify_same_user_level='$modify_same_user_level',admin_hide_lead_data='$admin_hide_lead_data',admin_hide_phone_data='$admin_hide_phone_data',agentcall_email='$agentcall_email',agentcall_chat='$agentcall_chat',modify_email_accounts='$modify_email_accounts',failed_login_count=0,alter_admin_interface_options='$alter_admin_interface_options',max_inbound_calls='$max_inbound_calls',modify_custom_dialplans='$modify_custom_dialplans',wrapup_seconds_override='$wrapup_seconds_override',modify_languages='$modify_languages',selected_language='$selected_language',user_choose_language='$user_choose_language',ignore_group_on_search='$ignore_group_on_search',api_list_restrict='$api_list_restrict',api_allowed_functions='$api_allowed_functions',lead_filter_id='$lead_filter_id',admin_cf_show_hidden='$admin_cf_show_hidden',user_hide_realtime='$user_hide_realtime',access_recordings='$access_recordings',modify_colors='$modify_colors',user_nickname='$user_nickname',user_new_lead_limit='$user_new_lead_limit',api_only_user='$api_only_user',modify_auto_reports='$modify_auto_reports',modify_ip_lists='$modify_ip_lists',ignore_ip_list='$ignore_ip_list',ready_max_logout='$ready_max_logout' $pass_hashSQL where user='$user' $LOGadmin_viewable_groupsSQL;"; + $stmt="UPDATE vicidial_users set pass='$pass',full_name='$full_name',user_level='$user_level',user_group='$user_group',phone_login='$phone_login',phone_pass='$phone_pass',delete_users='$delete_users',delete_user_groups='$delete_user_groups',delete_lists='$delete_lists',delete_campaigns='$delete_campaigns',delete_ingroups='$delete_ingroups',delete_remote_agents='$delete_remote_agents',load_leads='$load_leads',campaign_detail='$campaign_detail',ast_admin_access='$ast_admin_access',ast_delete_phones='$ast_delete_phones',delete_scripts='$delete_scripts',modify_leads='$modify_leads',hotkeys_active='$hotkeys_active',change_agent_campaign='$change_agent_campaign',agent_choose_ingroups='$agent_choose_ingroups',closer_campaigns='$groups_value',scheduled_callbacks='$scheduled_callbacks',agentonly_callbacks='$agentonly_callbacks',agentcall_manual='$agentcall_manual',vicidial_recording='$vicidial_recording',vicidial_transfers='$vicidial_transfers',delete_filters='$delete_filters',alter_agent_interface_options='$alter_agent_interface_options',closer_default_blended='$closer_default_blended',delete_call_times='$delete_call_times',modify_call_times='$modify_call_times',modify_users='$modify_users',modify_campaigns='$modify_campaigns',modify_lists='$modify_lists',modify_scripts='$modify_scripts',modify_filters='$modify_filters',modify_ingroups='$modify_ingroups',modify_usergroups='$modify_usergroups',modify_remoteagents='$modify_remoteagents',modify_servers='$modify_servers',view_reports='$view_reports',vicidial_recording_override='$vicidial_recording_override',alter_custdata_override='$alter_custdata_override',qc_enabled='$qc_enabled',qc_user_level='$qc_user_level',qc_pass='$qc_pass',qc_finish='$qc_finish',qc_commit='$qc_commit',add_timeclock_log='$add_timeclock_log',modify_timeclock_log='$modify_timeclock_log',delete_timeclock_log='$delete_timeclock_log',alter_custphone_override='$alter_custphone_override',vdc_agent_api_access='$vdc_agent_api_access',modify_inbound_dids='$modify_inbound_dids',delete_inbound_dids='$delete_inbound_dids',active='$active',download_lists='$download_lists',agent_shift_enforcement_override='$agent_shift_enforcement_override',manager_shift_enforcement_override='$manager_shift_enforcement_override',export_reports='$export_reports',delete_from_dnc='$delete_from_dnc',email='$email',user_code='$user_code',territory='$territory',allow_alerts='$allow_alerts',agent_choose_territories='$agent_choose_territories',custom_one='$custom_one',custom_two='$custom_two',custom_three='$custom_three',custom_four='$custom_four',custom_five='$custom_five',voicemail_id='$voicemail_id',agent_call_log_view_override='$agent_call_log_view_override',callcard_admin='$callcard_admin',agent_choose_blended='$agent_choose_blended',realtime_block_user_info='$realtime_block_user_info',custom_fields_modify='$custom_fields_modify',force_change_password='$force_change_password',agent_lead_search_override='$agent_lead_search',modify_shifts='$modify_shifts',modify_phones='$modify_phones',modify_carriers='$modify_carriers',modify_labels='$modify_labels',modify_statuses='$modify_statuses',modify_voicemail='$modify_voicemail',modify_audiostore='$modify_audiostore',modify_moh='$modify_moh',modify_tts='$modify_tts',preset_contact_search='$preset_contact_search',modify_contacts='$modify_contacts',modify_same_user_level='$modify_same_user_level',admin_hide_lead_data='$admin_hide_lead_data',admin_hide_phone_data='$admin_hide_phone_data',agentcall_email='$agentcall_email',agentcall_chat='$agentcall_chat',modify_email_accounts='$modify_email_accounts',failed_login_count=0,alter_admin_interface_options='$alter_admin_interface_options',max_inbound_calls='$max_inbound_calls',modify_custom_dialplans='$modify_custom_dialplans',wrapup_seconds_override='$wrapup_seconds_override',modify_languages='$modify_languages',selected_language='$selected_language',user_choose_language='$user_choose_language',ignore_group_on_search='$ignore_group_on_search',api_list_restrict='$api_list_restrict',api_allowed_functions='$api_allowed_functions',lead_filter_id='$lead_filter_id',admin_cf_show_hidden='$admin_cf_show_hidden',user_hide_realtime='$user_hide_realtime',access_recordings='$access_recordings',modify_colors='$modify_colors',user_nickname='$user_nickname',user_new_lead_limit='$user_new_lead_limit',api_only_user='$api_only_user',modify_auto_reports='$modify_auto_reports',modify_ip_lists='$modify_ip_lists',ignore_ip_list='$ignore_ip_list',ready_max_logout='$ready_max_logout',export_gdpr_leads='$export_gdpr_leads' $pass_hashSQL where user='$user' $LOGadmin_viewable_groupsSQL;"; $rslt=mysql_to_mysqli($stmt, $link); ### LOG INSERTION Admin Log Table ### @@ -17005,7 +17014,7 @@ if ($ADD==411111111111111) } } - $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',allow_ip_lists='$allow_ip_lists',system_ip_blacklist='$system_ip_blacklist',agent_push_events='$agent_push_events',agent_push_url='$agent_push_url',hide_inactive_lists='$hide_inactive_lists',allow_manage_active_lists='$allow_manage_active_lists',expired_lists_inactive='$expired_lists_inactive',did_system_filter='$did_system_filter',anyone_callback_inactive_lists='$anyone_callback_inactive_lists'$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',allow_ip_lists='$allow_ip_lists',system_ip_blacklist='$system_ip_blacklist',agent_push_events='$agent_push_events',agent_push_url='$agent_push_url',hide_inactive_lists='$hide_inactive_lists',allow_manage_active_lists='$allow_manage_active_lists',expired_lists_inactive='$expired_lists_inactive',did_system_filter='$did_system_filter',anyone_callback_inactive_lists='$anyone_callback_inactive_lists',enable_gdpr_download_deletion='$enable_gdpr_download_deletion'$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) ) @@ -17020,11 +17029,19 @@ if ($ADD==411111111111111) $rslt=mysql_to_mysqli($stmtC, $link); } + $update_gdpr_users_stmt="update vicidial_users set export_gdpr_leads='$enable_gdpr_download_deletion' where export_gdpr_leads>$enable_gdpr_download_deletion"; + $update_gdpr_users_rslt=mysql_to_mysqli($update_gdpr_users_stmt, $link); + $update_gdpr_rows=mysqli_affected_rows($link); + if ($update_gdpr_rows>0) + { + $event_notes="$update_gdpr_rows "._QXZ("GDPR-enabled users downgraded due to setting change"); + } + ### LOG INSERTION Admin Log Table ### $SQL_log = "$stmt|$stmtB|$stmtC|"; $SQL_log = preg_replace('/;/', '', $SQL_log); $SQL_log = addslashes($SQL_log); - $stmt="INSERT INTO vicidial_admin_log set event_date='$SQLdate', user='$PHP_AUTH_USER', ip_address='$ip', event_section='SYSTEMSETTINGS', event_type='MODIFY', record_id='system_settings', event_code='ADMIN MODIFY SYSTEM SETTINGS', event_sql=\"$SQL_log\", event_notes='';"; + $stmt="INSERT INTO vicidial_admin_log set event_date='$SQLdate', user='$PHP_AUTH_USER', ip_address='$ip', event_section='SYSTEMSETTINGS', event_type='MODIFY', record_id='system_settings', event_code='ADMIN MODIFY SYSTEM SETTINGS', event_sql=\"$SQL_log\", event_notes='$event_notes';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); } @@ -20518,7 +20535,7 @@ if ($ADD==3) echo "\n"; echo "\n"; echo "\n"; - echo "\n"; + echo "\n"; + echo "\n"; echo "\n"; echo "\n"; @@ -35370,7 +35394,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,enable_drop_lists,allow_ip_lists,system_ip_blacklist,agent_push_events,agent_push_url,hide_inactive_lists,allow_manage_active_lists,expired_lists_inactive,did_system_filter,anyone_callback_inactive_lists 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,allow_ip_lists,system_ip_blacklist,agent_push_events,agent_push_url,hide_inactive_lists,allow_manage_active_lists,expired_lists_inactive,did_system_filter,anyone_callback_inactive_lists,enable_gdpr_download_deletion from system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $version = $row[0]; @@ -35542,6 +35566,7 @@ if ($ADD==311111111111111) $expired_lists_inactive = $row[166]; $did_system_filter = $row[167]; $anyone_callback_inactive_lists = $row[168]; + $enable_gdpr_download_deletion = $row[169]; if ($pass_hash_enabled > 0) {$pass_hash_enabled = 'ENABLED';} else {$pass_hash_enabled = 'DISABLED';} @@ -35807,6 +35832,8 @@ if ($ADD==311111111111111) echo "\n"; + echo "\n"; + echo "\n"; echo "\n"; @@ -36546,7 +36573,7 @@ if ($ADD==660) $SQL = preg_replace('/\sand$/i', '', $SQL); if (strlen($SQL)>5) {$SQL = "and $SQL";} - $stmt="SELECT user_id,user,pass,full_name,user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override,qc_enabled,qc_user_level,qc_pass,qc_finish,qc_commit,add_timeclock_log,modify_timeclock_log,delete_timeclock_log,alter_custphone_override,vdc_agent_api_access,modify_inbound_dids,delete_inbound_dids,active,alert_enabled,download_lists,agent_shift_enforcement_override,manager_shift_enforcement_override,shift_override_flag,export_reports,delete_from_dnc,email,user_code,territory,allow_alerts from vicidial_users where user_level <= $LOGuser_level $LOGadmin_viewable_groupsSQL $SQL order by full_name desc;"; + $stmt="SELECT user_id,user,pass,full_name,user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override,qc_enabled,qc_user_level,qc_pass,qc_finish,qc_commit,add_timeclock_log,modify_timeclock_log,delete_timeclock_log,alter_custphone_override,vdc_agent_api_access,modify_inbound_dids,delete_inbound_dids,active,alert_enabled,download_lists,agent_shift_enforcement_override,manager_shift_enforcement_override,shift_override_flag,export_reports,delete_from_dnc,email,user_code,territory,allow_alerts,export_gdpr_leads from vicidial_users where user_level <= $LOGuser_level $LOGadmin_viewable_groupsSQL $SQL order by full_name desc;"; # echo "\n|$stmt|\n"; $rslt=mysql_to_mysqli($stmt, $link); $people_to_print = mysqli_num_rows($rslt); diff --git a/www/vicidial/admin_modify_lead.php b/www/vicidial/admin_modify_lead.php index 928ce38d..1057e76a 100644 --- a/www/vicidial/admin_modify_lead.php +++ b/www/vicidial/admin_modify_lead.php @@ -86,6 +86,7 @@ # 170826-0858 - Added link to turn on/off archived logs display # 171001-1109 - Added in-browser audio control, if recording access control is disabled # 171216-2058 - Added ability to modify all active scheduled callbacks, and view callbacks log +# 180212-2340 - Added GDPR compliance features # require("dbconnect_mysqli.php"); @@ -200,6 +201,8 @@ if (isset($_GET["archive_log"])) {$archive_log=$_GET["archive_log"];} elseif (isset($_POST["archive_log"])) {$archive_log=$_POST["archive_log"];} if (isset($_GET["date_of_birth"])) {$date_of_birth=$_GET["date_of_birth"];} elseif (isset($_POST["date_of_birth"])) {$date_of_birth=$_POST["date_of_birth"];} +if (isset($_GET["gdpr_action"])) {$gdpr_action=$_GET["gdpr_action"];} + elseif (isset($_POST["gdpr_action"])) {$gdpr_action=$_POST["gdpr_action"];} if ($archive_search=="Yes") {$vl_table="vicidial_list_archive";} @@ -225,7 +228,7 @@ if ($nonselectable_statuses > 0) ############################################# ##### START SYSTEM_SETTINGS LOOKUP ##### -$stmt = "SELECT use_non_latin,custom_fields_enabled,webroot_writable,allow_emails,enable_languages,language_method,active_modules,log_recording_access FROM system_settings;"; +$stmt = "SELECT use_non_latin,custom_fields_enabled,webroot_writable,allow_emails,enable_languages,language_method,active_modules,log_recording_access,admin_screen_colors,enable_gdpr_download_deletion FROM system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $qm_conf_ct = mysqli_num_rows($rslt); @@ -240,6 +243,8 @@ if ($qm_conf_ct > 0) $SSlanguage_method = $row[5]; $active_modules = $row[6]; $log_recording_access = $row[7]; + $SSadmin_screen_colors = $row[8]; + $enable_gdpr_download_deletion = $row[9]; } ##### END SETTINGS LOOKUP ##### ########################################### @@ -409,6 +414,259 @@ if ( (!preg_match('/\-ALL/i', $LOGallowed_campaigns)) and ($LOGignore_group_on_s $whereLOGallowed_listsSQL = "where list_id IN($camp_lists)"; } + +$SSmenu_background='015B91'; +$SSframe_background='D9E6FE'; +$SSstd_row1_background='9BB9FB'; +$SSstd_row2_background='B9CBFD'; +$SSstd_row3_background='8EBCFD'; +$SSstd_row4_background='B6D3FC'; +$SSstd_row5_background='A3C3D6'; +$SSalt_row1_background='BDFFBD'; +$SSalt_row2_background='99FF99'; +$SSalt_row3_background='CCFFCC'; +$SSweb_logo='default_old'; + +if ($SSadmin_screen_colors != 'default') + { + $stmt = "SELECT menu_background,frame_background,std_row1_background,std_row2_background,std_row3_background,std_row4_background,std_row5_background,alt_row1_background,alt_row2_background,alt_row3_background,web_logo FROM vicidial_screen_colors where colors_id='$SSadmin_screen_colors';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($DB) {echo "$stmt\n";} + $colors_ct = mysqli_num_rows($rslt); + if ($colors_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $SSmenu_background = $row[0]; + $SSframe_background = $row[1]; + $SSstd_row1_background = $row[2]; + $SSstd_row2_background = $row[3]; + $SSstd_row3_background = $row[4]; + $SSstd_row4_background = $row[5]; + $SSstd_row5_background = $row[6]; + $SSalt_row1_background = $row[7]; + $SSalt_row2_background = $row[8]; + $SSalt_row3_background = $row[9]; + $SSweb_logo = $row[10]; + } + } + + +if ($enable_gdpr_download_deletion>0) + { + $stmt="SELECT export_gdpr_leads from vicidial_users where user='$PHP_AUTH_USER' and export_gdpr_leads >= 1;"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $gdpr_display=$row[0]; + + if ($gdpr_display>=1 && $gdpr_action && $lead_id) + { + $table_array=array("vicidial_list", "recording_log", "vicidial_log", "vicidial_xfer_log", "vicidial_closer_log", "vicidial_carrier_log", "vicidial_agent_log"); + $date_field_array=array("entry_date", "start_time", "call_date", "call_date", "call_date", "call_date", "event_time"); + $purge_field_array=array( + "vicidial_list" => array("phone_code", "phone_number", "title", "first_name", "middle_initial", "last_name", "address1", "address2", "address3", "city", "state", "province", "postal_code", "country_code", "gender", "date_of_birth", "alt_phone", "email", "security_phrase", "comments"), + "vicidial_log" => array(), + "vicidial_xfer_log" => array(), + "vicidial_closer_log" => array(), + "vicidial_carrier_log" => array(), + "vicidial_agent_log" => array(), + "recording_log" => array("filename", "location") + ); + $table_count=count($table_array); + + $CSV_text=""; + $HTML_text=""; + $SQL_log = ""; + + if ($gdpr_action=="confirm_purge") + { + $archive_table_name=use_archive_table("vicidial_list"); + $mysql_stmt="(select list_id from vicidial_list where lead_id='$lead_id')"; + if ($archive_table_name!="vicidial_list") {$mysql_stmt.=" UNION (select list_id from ".$archive_table_name." where lead_id='$lead_id')";} + $mysql_rslt=mysql_to_mysqli($mysql_stmt, $link); + if(mysqli_num_rows($mysql_rslt)>0) + { + $mysql_row=mysqli_fetch_row($mysql_rslt); + $list_id=$mysql_row[0]; + } + + for ($t=0; $t<$table_count; $t++) + { + $table_name=$table_array[$t]; + $archive_table_name=use_archive_table($table_name); + + if ($list_id && $table_name=="vicidial_list" && table_exists("custom_$list_id")) + { + array_splice($table_array, 1, 0, "custom_$list_id"); + array_splice($date_field_array, 1, 0, "lead_id"); + $custom_table_array=array("custom_$list_id" => array()); + $purge_field_array=array_merge($purge_field_array, $custom_table_array); + $table_count++; + + $custom_stmt="SHOW COLUMNS FROM custom_".$list_id.""; + $custom_rslt=mysql_to_mysqli($custom_stmt, $link); + while($custom_row=mysqli_fetch_row($custom_rslt)) + { + if ($custom_row[0]!="lead_id") + { + array_push($purge_field_array["custom_$list_id"], $custom_row[0]); + } + } + } + + if(count($purge_field_array["$table_name"])>0) + { + if ($table_name=="recording_log") + { + $ins_stmt="insert ignore into recording_log_deletion_queue(recording_id,lead_id, filename, location, date_queued) (select recording_id,lead_id, filename, location, now() from recording_log where lead_id='$lead_id') UNION (select recording_id,lead_id, filename, location, now() from recording_log_archive where lead_id='$lead_id')"; + $ins_rslt=mysql_to_mysqli($ins_stmt, $link); + } + + $upd_clause=implode("=null, ", $purge_field_array["$table_name"])."=null "; + $upd_stmt="update $table_name set $upd_clause where lead_id='$lead_id'"; + $upd_rslt=mysql_to_mysqli($upd_stmt, $link); + $SQL_log.="$upd_stmt|"; + if ($archive_table_name!=$table_name) + { + $upd_stmt="update $archive_table_name set $upd_clause where lead_id='$lead_id'"; + $upd_rslt=mysql_to_mysqli($upd_stmt, $link); + $SQL_log.="$upd_stmt|"; + } + } + } + + $SQL_log = addslashes($SQL_log); + $stmt="INSERT INTO vicidial_admin_log set event_date='$NOW_TIME', user='$PHP_AUTH_USER', ip_address='$ip', event_section='LEADS', event_type='DELETE', record_id='$lead_id', event_code='GDPR PURGE LEAD DATA', event_sql=\"$SQL_log\", event_notes='';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + + } + + $HTML_text.="

"; + $HTML_text.="
\n"; echo ""; - $stmt="SELECT user_id,user,pass,full_name,user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override,qc_enabled,qc_user_level,qc_pass,qc_finish,qc_commit,add_timeclock_log,modify_timeclock_log,delete_timeclock_log,alter_custphone_override,vdc_agent_api_access,modify_inbound_dids,delete_inbound_dids,active,alert_enabled,download_lists,agent_shift_enforcement_override,manager_shift_enforcement_override,shift_override_flag,export_reports,delete_from_dnc,email,user_code,territory,allow_alerts,agent_choose_territories,custom_one,custom_two,custom_three,custom_four,custom_five,voicemail_id,agent_call_log_view_override,callcard_admin,agent_choose_blended,realtime_block_user_info,custom_fields_modify,force_change_password,agent_lead_search_override,modify_shifts,modify_phones,modify_carriers,modify_labels,modify_statuses,modify_voicemail,modify_audiostore,modify_moh,modify_tts,preset_contact_search,modify_contacts,modify_same_user_level,admin_hide_lead_data,admin_hide_phone_data,agentcall_email,modify_email_accounts,failed_login_count,last_login_date,last_ip,alter_admin_interface_options,max_inbound_calls,modify_custom_dialplans,wrapup_seconds_override,modify_languages,selected_language,user_choose_language,ignore_group_on_search,api_list_restrict,api_allowed_functions,lead_filter_id,agentcall_chat,admin_cf_show_hidden,user_hide_realtime,access_recordings,modify_colors,user_nickname,user_new_lead_limit,api_only_user,modify_auto_reports,modify_ip_lists,ignore_ip_list,ready_max_logout from vicidial_users where user='$user' $LOGadmin_viewable_groupsSQL;"; + $stmt="SELECT user_id,user,pass,full_name,user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override,qc_enabled,qc_user_level,qc_pass,qc_finish,qc_commit,add_timeclock_log,modify_timeclock_log,delete_timeclock_log,alter_custphone_override,vdc_agent_api_access,modify_inbound_dids,delete_inbound_dids,active,alert_enabled,download_lists,agent_shift_enforcement_override,manager_shift_enforcement_override,shift_override_flag,export_reports,delete_from_dnc,email,user_code,territory,allow_alerts,agent_choose_territories,custom_one,custom_two,custom_three,custom_four,custom_five,voicemail_id,agent_call_log_view_override,callcard_admin,agent_choose_blended,realtime_block_user_info,custom_fields_modify,force_change_password,agent_lead_search_override,modify_shifts,modify_phones,modify_carriers,modify_labels,modify_statuses,modify_voicemail,modify_audiostore,modify_moh,modify_tts,preset_contact_search,modify_contacts,modify_same_user_level,admin_hide_lead_data,admin_hide_phone_data,agentcall_email,modify_email_accounts,failed_login_count,last_login_date,last_ip,alter_admin_interface_options,max_inbound_calls,modify_custom_dialplans,wrapup_seconds_override,modify_languages,selected_language,user_choose_language,ignore_group_on_search,api_list_restrict,api_allowed_functions,lead_filter_id,agentcall_chat,admin_cf_show_hidden,user_hide_realtime,access_recordings,modify_colors,user_nickname,user_new_lead_limit,api_only_user,modify_auto_reports,modify_ip_lists,ignore_ip_list,ready_max_logout,export_gdpr_leads from vicidial_users where user='$user' $LOGadmin_viewable_groupsSQL;"; $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $user_id = $row[0]; @@ -20645,6 +20662,7 @@ if ($ADD==3) $modify_ip_lists = $row[123]; $ignore_ip_list = $row[124]; $ready_max_logout = $row[125]; + $export_gdpr_leads = $row[126]; if ( ( ($user_level >= $LOGuser_level) and ($LOGuser_level < 9) ) or ( ($LOGmodify_same_user_level < 1) and ($LOGuser_level > 8) and ($user_level > 8) ) ) { @@ -20915,7 +20933,13 @@ if ($ADD==3) echo "
"._QXZ("Delete Lists").": $NWB#users-delete_lists$NWE
"._QXZ("Load Leads").": $NWB#users-load_leads$NWE
"._QXZ("Modify Leads").": $NWB#users-modify_leads$NWE
"._QXZ("Download Lists").": $NWB#users-modify_leads$NWE
"._QXZ("GDPR-Compliant Export Delete Leads").": $NWB#users-export_gdpr_leads$NWE
"._QXZ("Download Lists").": $NWB#users-download_lists$NWE
"._QXZ("Export Reports").": $NWB#users-export_reports$NWE
"._QXZ("Delete From DNC Lists").": $NWB#users-delete_from_dnc$NWE
"._QXZ("Lead Manager Active Lists").": $NWB#settings-allow_manage_active_lists$NWE
"._QXZ("Enable GDPR-compliant Data Download Deletion").": $NWB#settings-enable_gdpr_download_deletion$NWE
"._QXZ("Expired Lists Auto Inactive").": $NWB#settings-expired_lists_inactive$NWE
"._QXZ("Enable Drop Lists").": $NWB#settings-enable_drop_lists$NWE
\n"; + $HTML_text.="\n"; + $HTML_text.="\t"; + $HTML_text.="\t"; + $HTML_text.="\t"; + $HTML_text.=""; + $HTML_text.="
"._QXZ("GDPR DATA PURGE PREVIEW")." ("._QXZ("greyed fields will be emptied")."):"._QXZ("DOWNLOAD").""._QXZ("CONFIRM PURGE")."


"; + + for ($t=0; $t<$table_count; $t++) + { + $table_name=$table_array[$t]; + $archive_table_name=use_archive_table($table_name); + $mysql_stmt="(select * from ".$table_name." where lead_id='$lead_id')"; + if ($archive_table_name!=$table_name) {$mysql_stmt.=" UNION (select * from ".$archive_table_name." where lead_id='$lead_id')";} + $list_id=""; $HTML_header=""; $CSV_header=""; $HTML_body=""; $CSV_body=""; + + $mysql_stmt.=" order by ".$date_field_array[$t]." desc"; + $mysql_rslt=mysql_to_mysqli($mysql_stmt, $link); + if ($DB) {echo "|$mysql_stmt|\n";} + if (mysqli_num_rows($mysql_rslt)>0) + { + $CSV_text.="\""._QXZ("TABLE NAME").":\",\"$table_name\"\n"; + $HTML_text.=""._QXZ("TABLE NAME").": $table_name
\n"; + $HTML_text.="\n"; + + $j=0; + while($row=mysqli_fetch_array($mysql_rslt,MYSQLI_ASSOC)) + { + if ($j%2==0) + { + $bgcolor=$SSstd_row2_background; + } + else + { + $bgcolor=$SSstd_row3_background; + } + + if ($j==0) + { + $HTML_header.="\n"; + } + $HTML_body.="\n"; + while (list($key, $val)=each($row)) + { + if ($key=="entry_list_id") {$list_id=$val;} + if (in_array($key, $purge_field_array["$table_name"]) || (preg_match("/^custom_/", $table_name) && $key!="lead_id")) + { + $bgcolor="bgcolor='#999999'"; + $sb=""; + $eb=""; + } + else + { + $bgcolor="bgcolor='#$SSstd_row1_background'"; + $sb=""; + $eb=""; + } + if ($j==0) + { + $CSV_header.="\"".$key."\","; + $HTML_header.="\t\n"; + } + $CSV_body.="\"$val\","; + $HTML_body.="\t\n"; + } + if ($j==0) + { + $CSV_header=substr($CSV_header, 0, -1)."\n"; + $HTML_header.="\n"; + } + $CSV_body=substr($CSV_body, 0, -1)."\n"; + $HTML_body.="\n"; + $j++; + } + + $CSV_text.=$CSV_header.$CSV_body; + $HTML_text.=$HTML_header.$HTML_body; + + $CSV_text.="\n"; + $HTML_text.="
$sb".$key."$eb$sb".$val."$eb


"; + + } + + if ($list_id && $table_name=="vicidial_list" && table_exists("custom_$list_id") && !in_array("custom_$list_id", $table_array)) + { + array_splice($table_array, 1, 0, "custom_$list_id"); + array_splice($date_field_array, 1, 0, "lead_id"); + $custom_table_array=array("custom_$list_id" => array()); + $purge_field_array=array_merge($purge_field_array, $custom_table_array); + $table_count++; + } + } + + if (strlen($CSV_text)>0 && $gdpr_action=="download") + { + $stmt="INSERT INTO vicidial_admin_log set event_date='$NOW_TIME', user='$PHP_AUTH_USER', ip_address='$ip', event_section='LEADS', event_type='EXPORT', record_id='$lead_id', event_code='GDPR EXPORT LEAD DATA', event_sql=\"$SQL_log\", event_notes='';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + + + $FILE_TIME = date("Ymd-His"); + $CSVfilename = "GDPR_export_$US$FILE_TIME.csv"; + $CSV_text=preg_replace('/^\s+/', '', $CSV_text); + $CSV_text=preg_replace('/ +\"/', '"', $CSV_text); + $CSV_text=preg_replace('/\" +/', '"', $CSV_text); + // We'll be outputting a TXT file + header('Content-type: application/octet-stream'); + + // It will be called LIST_101_20090209-121212.txt + header("Content-Disposition: attachment; filename=\"$CSVfilename\""); + header('Expires: 0'); + header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); + header('Pragma: public'); + ob_clean(); + flush(); + + echo "$CSV_text"; + exit; + } + } + + + } + + $label_title = _QXZ("Title"); $label_first_name = _QXZ("First"); $label_middle_initial = _QXZ("MI"); @@ -634,6 +892,14 @@ $short_header=1; require("admin_header.php"); echo "\n"; + +if ($gdpr_display==2 && preg_match("/purge$/", $gdpr_action)) + { + echo $HTML_text; + echo ""; + exit; + } + echo "\n"; ### BEGIN - Add a new lead in the system ### @@ -943,9 +1209,9 @@ else { $row=mysqli_fetch_row($rslt); if (preg_match("/1$|3$|5$|7$|9$/i", $c)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $c++; $alts_output .= ""; @@ -982,9 +1248,9 @@ else $row=mysqli_fetch_row($rslt); if (strlen($log_campaign)<1) {$log_campaign = $row[3];} if (preg_match("/1$|3$|5$|7$|9$/i", $u)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $u++; $call_log .= ""; @@ -1031,9 +1297,9 @@ else $row=mysqli_fetch_row($rslt); if (strlen($Alog_campaign)<1) {$Alog_campaign = $row[5];} if (preg_match("/1$|3$|5$|7$|9$/i", $y)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $y++; $agent_log .= ""; @@ -1066,9 +1332,9 @@ else $row=mysqli_fetch_row($rslt); if (strlen($Clog_campaign)<1) {$Clog_campaign = $row[3];} if (preg_match("/1$|3$|5$|7$|9$/i", $y)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $y++; $closer_log .= ""; @@ -1119,9 +1385,9 @@ else $row=mysqli_fetch_row($rslt); if (strlen($log_campaign)<1) {$log_campaign = $row[3];} if (preg_match("/1$|3$|5$|7$|9$/i", $u)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $u++; $call_log .= ""; @@ -1168,9 +1434,9 @@ else $row=mysqli_fetch_row($rslt); if (strlen($Alog_campaign)<1) {$Alog_campaign = $row[5];} if (preg_match("/1$|3$|5$|7$|9$/i", $y)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $y++; $agent_log .= ""; @@ -1203,9 +1469,9 @@ else $row=mysqli_fetch_row($rslt); if (strlen($Clog_campaign)<1) {$Clog_campaign = $row[3];} if (preg_match("/1$|3$|5$|7$|9$/i", $y)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $y++; $closer_log .= ""; @@ -1498,7 +1764,7 @@ else echo "
\n"; } - echo ""._QXZ("Disposition").": \n"; ### find out if status(dispo) is a scheduled callback status $scheduled_callback=''; @@ -1574,10 +1840,10 @@ else echo " ("._QXZ("with")." $list_campaign "._QXZ("statuses").")\n"; - echo ""._QXZ("Modify vicidial log")." \n"; - echo ""._QXZ("Modify agent log")." \n"; - echo ""._QXZ("Modify closer log")." \n"; - echo ""._QXZ("Add closer log record")." \n"; + echo ""._QXZ("Modify vicidial log")." \n"; + echo ""._QXZ("Modify agent log")." \n"; + echo ""._QXZ("Modify closer log")." \n"; + echo ""._QXZ("Add closer log record")." \n"; } else { @@ -1593,7 +1859,7 @@ else if ($lead_id != 'NEW') { - echo "
\n"; + echo "
\n"; echo _QXZ("Callback Details").":
\n"; if ( ($dispo == 'CALLBK') or ($dispo == 'CBHOLD') or ($scheduled_callback == 'Y') ) { @@ -1606,7 +1872,7 @@ else if ($CB_to_print>0) { echo "
"; - echo ""; + echo "
"; echo ""; echo ""; echo ""; @@ -1663,9 +1929,9 @@ else {$statuses_list .= "\n";} if ($u%2==0) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $u++; echo ""; @@ -1736,9 +2002,9 @@ else while ($CB_to_print > $cb) { if (preg_match("/1$|3$|5$|7$|9$/i", $cb)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $rowx=mysqli_fetch_row($cb_rslt); $cb++; $callbacks_log .= ""; @@ -1769,9 +2035,9 @@ else while ($CBA_to_print > $cba) { if (preg_match("/1$|3$|5$|7$|9$/i", $cb)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $rowx=mysqli_fetch_row($cb_rslt); $cb++; $cba++; @@ -1822,9 +2088,9 @@ else while ($CB_to_print > $cb) { if (preg_match("/1$|3$|5$|7$|9$/i", $cb)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $rowx=mysqli_fetch_row($cb_rslt); $cb++; $callbacks_log .= ""; @@ -1855,9 +2121,9 @@ else while ($CBA_to_print > $cba) { if (preg_match("/1$|3$|5$|7$|9$/i", $cb)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $rowx=mysqli_fetch_row($cb_rslt); $cb++; $cba++; @@ -1978,9 +2244,9 @@ else { $row=mysqli_fetch_array($rslt); if (preg_match("/1$|3$|5$|7$|9$/i", $u)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $u++; echo ""; @@ -2014,9 +2280,9 @@ else { $row=mysqli_fetch_row($rslt); if (preg_match("/1$|3$|5$|7$|9$/i", $u)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $u++; echo ""; @@ -2047,9 +2313,9 @@ else { $row=mysqli_fetch_row($rslt); if (preg_match("/1$|3$|5$|7$|9$/i", $u)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} if (strlen($row[6])>100) {$row[6]=substr($row[6],0,100)."...";} $row[8]=preg_replace('/\|/', ', ', $row[8]); $row[8]=preg_replace('/,\s+$/', '', $row[8]); @@ -2085,9 +2351,9 @@ else { $row=mysqli_fetch_row($rslt); if (preg_match("/1$|3$|5$|7$|9$/i", $u)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $location = $row[11]; @@ -2162,9 +2428,9 @@ else { $row=mysqli_fetch_row($rslt); if (preg_match("/1$|3$|5$|7$|9$/i", $u)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $location = $row[11]; @@ -2249,9 +2515,9 @@ else { $row=mysqli_fetch_row($rslt); if (preg_match("/1$|3$|5$|7$|9$/i", $u)) - {$bgcolor='bgcolor="#B9CBFD"';} + {$bgcolor="bgcolor=\"#$SSstd_row2_background\"";} else - {$bgcolor='bgcolor="#9BB9FB"';} + {$bgcolor="bgcolor=\"#$SSstd_row1_background\"";} $u++; echo ""; @@ -2312,6 +2578,31 @@ else } } + if ($enable_gdpr_download_deletion > 0) + { + if ($gdpr_display>=1) + { + echo "


"; + echo ""._QXZ("GDPR compliance").":\n"; + echo "
"._QXZ("CallBack Date/Time").":"._QXZ("CallBack Disposition").":
\n"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "
"; + echo ""._QXZ("Click here to download GDPR-formatted data for this lead")."
\n"; + echo "
"; + if ($gdpr_display>=2) + { + echo ""._QXZ("Click here to review and purge customer data on lead")."\n"; + } + echo "
"; + } + } + echo "\n"; + + $ENDtime = date("U"); $RUNtime = ($ENDtime - $STARTtime); diff --git a/www/vicidial/help.php b/www/vicidial/help.php index 3092abcc..d700787a 100644 --- a/www/vicidial/help.php +++ b/www/vicidial/help.php @@ -640,7 +640,7 @@ if ($SScustom_fields_enabled > 0)

- - + -
@@ -5558,7 +5558,7 @@ FR_SPAC 00 00 00 00 00 -

- - + -