LICENSE: AGPLv2 # # CHANGES # 161004-2240 - Initial Build # 170409-1548 - Added IP List validation code # 170819-1000 - Added allow_manage_active_lists option # 180508-2215 - Added new help display # 191101-1630 - Translation patch, removed function.js # 201117-1350 - Translation bug fixed, Issue #1236 # 220227-2210 - Added allow_web_debug system setting # 240801-1133 - Code updates for PHP8 compatibility # 260415-1738 - More code updates for PHP8 compatibility # $version = '2.14-6'; $build = '260415-1738'; require("dbconnect_mysqli.php"); require("functions.php"); $PHP_AUTH_USER=(array_key_exists('PHP_AUTH_USER', $_SERVER) ? $_SERVER['PHP_AUTH_USER'] : ""); $PHP_AUTH_PW=(array_key_exists('PHP_AUTH_PW', $_SERVER) ? $_SERVER['PHP_AUTH_PW'] : ""); $PHP_SELF=$_SERVER['PHP_SELF']; $PHP_SELF = preg_replace('/\.php.*/i','.php',$PHP_SELF); $ip = getenv("REMOTE_ADDR"); $SQLdate = date("Y-m-d H:i:s"); $DB=0; $submit = ""; $confirm = ""; $available_lists = ""; $start_dest_list_id = ""; $num_leads = 0; if (isset($_GET["DB"])) {$DB=$_GET["DB"];} elseif (isset($_POST["DB"])) {$DB=$_POST["DB"];} if (isset($_GET["submit"])) {$submit=$_GET["submit"];} elseif (isset($_POST["submit"])) {$submit=$_POST["submit"];} if (isset($_GET["confirm"])) {$confirm=$_GET["confirm"];} elseif (isset($_POST["confirm"])) {$confirm=$_POST["confirm"];} if (isset($_GET["available_lists"])) {$available_lists=$_GET["available_lists"];} elseif (isset($_POST["available_lists"])) {$available_lists=$_POST["available_lists"];} if (isset($_GET["start_dest_list_id"])) {$start_dest_list_id=$_GET["start_dest_list_id"];} elseif (isset($_POST["start_dest_list_id"])) {$start_dest_list_id=$_POST["start_dest_list_id"];} if (isset($_GET["num_leads"])) {$num_leads=$_GET["num_leads"];} elseif (isset($_POST["num_leads"])) {$num_leads=$_POST["num_leads"];} if (isset($_GET["destination_list_id"])) {$destination_list_id=$_GET["destination_list_id"];} elseif (isset($_POST["destination_list_id"])) {$destination_list_id=$_POST["destination_list_id"];} else {$destination_list_id="";} if (isset($_GET["new_list_id"])) {$new_list_id=$_GET["new_list_id"];} elseif (isset($_POST["new_list_id"])) {$new_list_id=$_POST["new_list_id"];} else {$new_list_id="";} if (isset($_GET["new_list_name"])) {$new_list_name=$_GET["new_list_name"];} elseif (isset($_POST["new_list_name"])) {$new_list_name=$_POST["new_list_name"];} else {$new_list_name="";} if (isset($_GET["new_list_description"])) {$new_list_description=$_GET["new_list_description"];} elseif (isset($_POST["new_list_description"])) {$new_list_description=$_POST["new_list_description"];} else {$new_list_description="";} if (isset($_GET["active"])) {$active=$_GET["active"];} elseif (isset($_POST["active"])) {$active=$_POST["active"];} else {$active="";} if (isset($_GET["campaign_id"])) {$campaign_id=$_GET["campaign_id"];} elseif (isset($_POST["campaign_id"])) {$campaign_id=$_POST["campaign_id"];} else {$campaign_id="";} if (isset($_GET["retain_original_list"])) {$retain_original_list=$_GET["retain_original_list"];} elseif (isset($_POST["retain_original_list"])) {$retain_original_list=$_POST["retain_original_list"];} else {$retain_original_list="";} if (isset($_GET["create_new_list"])) {$create_new_list=$_GET["create_new_list"];} elseif (isset($_POST["create_new_list"])) {$create_new_list=$_POST["create_new_list"];} else {$create_new_list="";} ############################################# ##### START SYSTEM_SETTINGS LOOKUP ##### $sys_settings_stmt = "SELECT use_non_latin,outbound_autodial_active,sounds_central_control_active,enable_languages,language_method,active_modules,admin_screen_colors,allow_manage_active_lists,allow_web_debug FROM system_settings;"; $sys_settings_rslt=mysql_to_mysqli($sys_settings_stmt, $link); #if ($DB) {echo "$sys_settings_stmt\n";} $num_rows = mysqli_num_rows($sys_settings_rslt); if ($num_rows > 0) { $sys_settings_row=mysqli_fetch_row($sys_settings_rslt); $non_latin = $sys_settings_row[0]; $SSoutbound_autodial_active = $sys_settings_row[1]; $sounds_central_control_active = $sys_settings_row[2]; $SSenable_languages = $sys_settings_row[3]; $SSlanguage_method = $sys_settings_row[4]; $SSactive_modules = $sys_settings_row[5]; $SSadmin_screen_colors = $sys_settings_row[6]; $SSallow_manage_active_lists = $sys_settings_row[7]; $SSallow_web_debug = $sys_settings_row[8]; } else { # there is something really weird if there are no system settings exit; } if ($SSallow_web_debug < 1 || !isset($DB)) {$DB=0;} $DB=preg_replace("/[^0-9a-zA-Z]/","",$DB); ##### END SETTINGS LOOKUP ##### ########################################### $retain_original_list = preg_replace('/[^NY]/i','',$retain_original_list); $available_lists = preg_replace('/[^0-9\|]/','',$available_lists); $start_dest_list_id = preg_replace('/[^0-9]/','',$start_dest_list_id); $destination_list_id = preg_replace('/[^0-9]/','',$destination_list_id); $new_list_id = preg_replace('/[^0-9]/','',$new_list_id); $new_list_name = preg_replace('/[^- \.\,\_0-9a-zA-Z]/','',$new_list_name); $new_list_description = preg_replace('/[^- \.\,\_0-9a-zA-Z]/','',$new_list_description); $num_leads = preg_replace('/[^0-9]/','',$num_leads); $submit = preg_replace('/[^-_0-9a-zA-Z]/', '', $submit); $confirm = preg_replace('/[^-_0-9a-zA-Z]/', '', $confirm); $active = preg_replace('/[^-_0-9a-zA-Z]/', '', $active); $create_new_list = preg_replace('/[^-_0-9a-zA-Z]/', '', $create_new_list); if ($non_latin < 1) { $PHP_AUTH_USER = preg_replace('/[^-_0-9a-zA-Z]/', '', $PHP_AUTH_USER); $PHP_AUTH_PW = preg_replace('/[^-_0-9a-zA-Z]/', '', $PHP_AUTH_PW); $campaign_id = preg_replace('/[^-_0-9a-zA-Z]/', '', $campaign_id); } else { $PHP_AUTH_USER = preg_replace('/[^-_0-9\p{L}]/u', '', $PHP_AUTH_USER); $PHP_AUTH_PW = preg_replace('/[^-_0-9\p{L}]/u', '', $PHP_AUTH_PW); $campaign_id = preg_replace('/[^-_0-9\p{L}]/u', '', $campaign_id); } $stmt="SELECT selected_language,modify_lists from vicidial_users where user='$PHP_AUTH_USER';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); $sl_ct = mysqli_num_rows($rslt); if ($sl_ct > 0) { $row=mysqli_fetch_row($rslt); $VUselected_language = $row[0]; } $auth=0; $auth_message = user_authorization($PHP_AUTH_USER,$PHP_AUTH_PW,'',1,0); if ($auth_message == 'GOOD') {$auth=1;} if ($auth < 1) { $VDdisplayMESSAGE = _QXZ("Login incorrect, please try again"); if ($auth_message == 'LOCK') { $VDdisplayMESSAGE = _QXZ("Too many login attempts, try again in 15 minutes"); Header ("Content-type: text/html; charset=utf-8"); echo "$VDdisplayMESSAGE: |$PHP_AUTH_USER|$auth_message|\n"; exit; } if ($auth_message == 'IPBLOCK') { $VDdisplayMESSAGE = _QXZ("Your IP Address is not allowed") . ": $ip"; Header ("Content-type: text/html; charset=utf-8"); echo "$VDdisplayMESSAGE: |$PHP_AUTH_USER|$auth_message|\n"; exit; } Header("WWW-Authenticate: Basic realm=\"CONTACT-CENTER-ADMIN\""); Header("HTTP/1.0 401 Unauthorized"); echo "$VDdisplayMESSAGE: |$PHP_AUTH_USER|$PHP_AUTH_PW|$auth_message|\n"; exit; } header ("Content-type: text/html; charset=utf-8"); header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header ("Pragma: no-cache"); // HTTP/1.0 # valid user $rights_stmt = "SELECT user_level, user_group, load_leads, modify_leads, modify_lists from vicidial_users where user='$PHP_AUTH_USER';"; if ($DB) {echo "|$stmt|\n";} $rights_rslt=mysql_to_mysqli($rights_stmt, $link); $rights_row=mysqli_fetch_row($rights_rslt); $user_level = $rights_row[0]; $user_group = $rights_row[1]; $load_leads = $rights_row[2]; $modify_leads = $rights_row[3]; $modify_lists = $rights_row[4]; # check their permissions if ( $user_level < 9 ) { header ("Content-type: text/html; charset=utf-8"); echo _QXZ("You need to be a level 9 user to use this tool"); exit; } if ( $load_leads < 1 ) { header ("Content-type: text/html; charset=utf-8"); echo _QXZ("You do not have permissions to load leads"); exit; } if ( $modify_leads < 1 ) { header ("Content-type: text/html; charset=utf-8"); echo _QXZ("You do not have permissions to modify leads"); exit; } if ( $modify_lists < 1 ) { header ("Content-type: text/html; charset=utf-8"); echo _QXZ("You do not have permissions to modify lists"); exit; } echo "\n"; echo "
\n"; echo ""; #echo "\n"; ?> \n"; echo "\n"; echo ""; echo "\n"; echo "\n"; echo "| \n"; echo "\n"; echo ""._QXZ("List Merge Tool")."\n"; echo "\n"; echo " | \n"; echo "\n"; echo " |
| \n";
if ($DB>0)
{
echo "DB: $DB \n"; echo "submit: $submit \n"; echo "confirm: $confirm \n"; echo "available_lists: $available_lists \n"; echo "start_dest_list_id: $start_dest_list_id \n"; echo "num_leads: $num_leads \n"; } # figure out which campaigns this user is allowed to work on # moved here from below because campaign list is needed multiple times $allowed_campaigns_stmt="SELECT allowed_campaigns from vicidial_user_groups where user_group='$user_group';"; if ($DB) { echo "|$allowed_campaigns_stmt|\n"; } $rslt = mysql_to_mysqli($allowed_campaigns_stmt, $link); $allowed_campaigns_row = mysqli_fetch_row($rslt); $allowed_campaigns = $allowed_campaigns_row[0]; if ($DB) { echo "|$allowed_campaigns|\n"; } $allowed_campaigns_sql = ""; if ( preg_match("/ALL\-CAMPAIGNS/i",$allowed_campaigns) ) { if ($DB) { echo "|Processing All Campaigns|\n"; } $campaign_id_stmt = "SELECT campaign_id FROM vicidial_campaigns;"; $campaign_id_rslt = mysql_to_mysqli($campaign_id_stmt, $link); $campaign_id_num_rows = mysqli_num_rows($campaign_id_rslt); if ($DB) { echo "|campaign_id_num_rows = $campaign_id_num_rows|\n"; } if ($campaign_id_num_rows > 0) { $i = 0; while ( $i < $campaign_id_num_rows ) { $campaign_id_row = mysqli_fetch_row($campaign_id_rslt); if ( $i == 0 ) { $allowed_campaigns_sql = "'$campaign_id_row[0]'"; } else { $allowed_campaigns_sql = "$allowed_campaigns_sql, '$campaign_id_row[0]'"; } $i++; } } } else { $allowed_campaigns_sql = preg_replace("/ -/",'',$allowed_campaigns); $allowed_campaigns_sql = preg_replace("/^ /",'',$allowed_campaigns_sql); $allowed_campaigns_sql = preg_replace("/ $/",'',$allowed_campaigns_sql); $allowed_campaigns_sql = preg_replace("/ /","','",$allowed_campaigns_sql); $allowed_campaigns_sql = "'$allowed_campaigns_sql'"; } # confirmation page if ($submit == _QXZ("submit") ) { if(count($available_lists)<1) { echo " "._QXZ("No list ids to merge given.")." \n"; echo ""._QXZ("Click here to start over.")." \n"; exit; } if ($new_list_id) { # Check if "new" list is actually new $list_stmt="select list_id, list_name, list_description, campaign_id, active FROM vicidial_lists where list_id = '$new_list_id';"; $list_rslt=mysql_to_mysqli($list_stmt, $link); $list_row = mysqli_fetch_row($list_rslt); $list_rows = mysqli_num_rows($list_rslt); # If the new list ID already exists, get the existing information, not the new one. if ($list_rows>0) { $new_list_name=$list_row[1]; $new_list_description=$list_row[2]; $campaign_id=$list_row[3]; $active=$list_row[4]; if (!preg_match("/ $campaign_id /", $allowed_campaigns) && !preg_match("/ALL\-CAMPAIGNS/i",$allowed_campaigns)) { echo ""._QXZ("Cannot move leads - access is denied to the specified list ID ($campaign_id - $allowed_campaigns):")." $new_list_id \n"; echo ""._QXZ("Click here to start over.")." \n"; exit; } } else { if (!$new_list_name || !$campaign_id) { echo ""._QXZ("Cannot move leads - list specified is new and missing information.")." \n"; echo ""._QXZ("Click here to start over.")." \n"; exit; } $create_new_list=1; } $destination_list_id=$new_list_id; } else if ($destination_list_id) { # make sure the original list id is valid $id_chk_stmt = "SELECT list_id, list_name, list_description, campaign_id, active FROM vicidial_lists where list_id = '$destination_list_id';"; if ($DB) { echo "|$id_chk_stmt|\n"; } $id_chk_rslt = mysql_to_mysqli($id_chk_stmt, $link); $id_chk_rows = mysqli_num_rows($id_chk_rslt); if ( $id_chk_rows < 1 ) { echo "$destination_list_id "._QXZ("is not a valid list id in the system.")." \n"; echo ""._QXZ("Click here to start over.")." \n"; echo "\n\n"; exit; } } else { echo ""._QXZ("No valid destination list id given.")." \n"; echo ""._QXZ("Click here to start over.")." \n"; exit; } # Get the number of leads in the available_lists $orig_count_stmt = "SELECT count(*) FROM vicidial_list where list_id in ('".implode("','", $available_lists)."');"; if ($DB) { echo "|$orig_count_stmt|\n"; } $orig_count_rslt = mysql_to_mysqli($orig_count_stmt, $link); $orig_count_row = mysqli_fetch_row($orig_count_rslt); $orig_count = $orig_count_row[0]; $num_lists = ceil( MathZDC($orig_count, $num_leads) ); echo ""._QXZ("You are about to merge list(s)
into list ID %2s. TOTAL LEADS TO BE MOVED: %3s",0,'',implode(" "; } echo " | |