LICENSE: AGPLv2 # # This script is designed to allow QC review and modification of leads, contributed by poundteam.com # # changes: # 121116-1324 - First build, added to vicidial codebase # 121130-1034 - Changed scheduled callback user ID field to be 20 characters, issue #467 # 130621-2328 - Finalized changing of all ereg instances to preg # - Added filtering of input to prevent SQL injection attacks and new user auth # 130902-0904 - Changed to mysqli PHP functions, fixes for issue #699 # 140706-0837 - Incorporated into standard admin code # 141007-2152 - Finalized adding QXZ translation to all admin files # 141128-0902 - Code cleanup for QXZ functions # 141229-1742 - Added code for on-the-fly language translations display # 150808-1437 - Added compatibility for custom fields data options # 150908-1531 - Fixed input lengths for several standard fields to match DB # 150917-1311 - Added dynamic default field maxlengths based on DB schema # 160611-1217 - Fixed for external server IP recording link issue # 170409-1542 - Added IP List validation code # 170513-2256 - Added QC Webform, issue #1010 # 170527-2252 - Fix for rare inbound logging issue #1017 # 171001-1110 - Added in-browser audio control, if recording access control is disabled # 210304-1650 - Added modify_leads=5 read-only option # 210306-0854 - Redesign of QC module # 210827-1818 - Fix for security issue # 220224-2143 - Added allow_web_debug system setting # require("dbconnect_mysqli.php"); require("functions.php"); $PHP_AUTH_USER=$_SERVER['PHP_AUTH_USER']; $PHP_AUTH_PW=$_SERVER['PHP_AUTH_PW']; $PHP_SELF=$_SERVER['PHP_SELF']; $PHP_SELF = preg_replace('/\.php.*/i','.php',$PHP_SELF); if (isset($_GET["vendor_id"])) {$vendor_id=$_GET["vendor_id"];} elseif (isset($_POST["vendor_id"])) {$vendor_id=$_POST["vendor_id"];} if (isset($_GET["phone"])) {$phone=$_GET["phone"];} elseif (isset($_POST["phone"])) {$phone=$_POST["phone"];} if (isset($_GET["old_phone"])) {$old_phone=$_GET["old_phone"];} elseif (isset($_POST["old_phone"])) {$old_phone=$_POST["old_phone"];} if (isset($_GET["lead_id"])) {$lead_id=$_GET["lead_id"];} elseif (isset($_POST["lead_id"])) {$lead_id=$_POST["lead_id"];} if (isset($_GET["title"])) {$title=$_GET["title"];} elseif (isset($_POST["title"])) {$title=$_POST["title"];} if (isset($_GET["first_name"])) {$first_name=$_GET["first_name"];} elseif (isset($_POST["first_name"])) {$first_name=$_POST["first_name"];} if (isset($_GET["middle_initial"])) {$middle_initial=$_GET["middle_initial"];} elseif (isset($_POST["middle_initial"])) {$middle_initial=$_POST["middle_initial"];} if (isset($_GET["last_name"])) {$last_name=$_GET["last_name"];} elseif (isset($_POST["last_name"])) {$last_name=$_POST["last_name"];} if (isset($_GET["lead_name"])) {$lead_name=$_GET["lead_name"];} elseif (isset($_POST["lead_name"])) {$lead_name=$_POST["lead_name"];} if (isset($_GET["phone_number"])) {$phone_number=$_GET["phone_number"];} elseif (isset($_POST["phone_number"])) {$phone_number=$_POST["phone_number"];} if (isset($_GET["end_call"])) {$end_call=$_GET["end_call"];} elseif (isset($_POST["end_call"])) {$end_call=$_POST["end_call"];} if (isset($_GET["DB"])) {$DB=$_GET["DB"];} elseif (isset($_POST["DB"])) {$DB=$_POST["DB"];} if (isset($_GET["dispo"])) {$dispo=$_GET["dispo"];} elseif (isset($_POST["dispo"])) {$dispo=$_POST["dispo"];} if (isset($_GET["list_id"])) {$list_id=$_GET["list_id"];} elseif (isset($_POST["list_id"])) {$list_id=$_POST["list_id"];} if (isset($_GET["campaign_id"])) {$campaign_id=$_GET["campaign_id"];} elseif (isset($_POST["campaign_id"])) {$campaign_id=$_POST["campaign_id"];} if (isset($_GET["group_id"])) {$group_id=$_GET["group_id"];} elseif (isset($_POST["group_id"])) {$group_id=$_POST["group_id"];} if (isset($_GET["phone_code"])) {$phone_code=$_GET["phone_code"];} elseif (isset($_POST["phone_code"])) {$phone_code=$_POST["phone_code"];} if (isset($_GET["server_ip"])) {$server_ip=$_GET["server_ip"];} elseif (isset($_POST["server_ip"])) {$server_ip=$_POST["server_ip"];} if (isset($_GET["extension"])) {$extension=$_GET["extension"];} elseif (isset($_POST["extension"])) {$extension=$_POST["extension"];} if (isset($_GET["channel"])) {$channel=$_GET["channel"];} elseif (isset($_POST["channel"])) {$channel=$_POST["channel"];} if (isset($_GET["call_began"])) {$call_began=$_GET["call_began"];} elseif (isset($_POST["call_began"])) {$call_began=$_POST["call_began"];} if (isset($_GET["parked_time"])) {$parked_time=$_GET["parked_time"];} elseif (isset($_POST["parked_time"])) {$parked_time=$_POST["parked_time"];} if (isset($_GET["tsr"])) {$tsr=$_GET["tsr"];} elseif (isset($_POST["tsr"])) {$tsr=$_POST["tsr"];} if (isset($_GET["address1"])) {$address1=$_GET["address1"];} elseif (isset($_POST["address1"])) {$address1=$_POST["address1"];} if (isset($_GET["address2"])) {$address2=$_GET["address2"];} elseif (isset($_POST["address2"])) {$address2=$_POST["address2"];} if (isset($_GET["address3"])) {$address3=$_GET["address3"];} elseif (isset($_POST["address3"])) {$address3=$_POST["address3"];} if (isset($_GET["city"])) {$city=$_GET["city"];} elseif (isset($_POST["city"])) {$city=$_POST["city"];} if (isset($_GET["state"])) {$state=$_GET["state"];} elseif (isset($_POST["state"])) {$state=$_POST["state"];} if (isset($_GET["postal_code"])) {$postal_code=$_GET["postal_code"];} elseif (isset($_POST["postal_code"])) {$postal_code=$_POST["postal_code"];} if (isset($_GET["province"])) {$province=$_GET["province"];} elseif (isset($_POST["province"])) {$province=$_POST["province"];} if (isset($_GET["country_code"])) {$country_code=$_GET["country_code"];} elseif (isset($_POST["country_code"])) {$country_code=$_POST["country_code"];} if (isset($_GET["alt_phone"])) {$alt_phone=$_GET["alt_phone"];} elseif (isset($_POST["alt_phone"])) {$alt_phone=$_POST["alt_phone"];} if (isset($_GET["email"])) {$email=$_GET["email"];} elseif (isset($_POST["email"])) {$email=$_POST["email"];} if (isset($_GET["security"])) {$security=$_GET["security"];} elseif (isset($_POST["security"])) {$security=$_POST["security"];} if (isset($_GET["comments"])) {$comments=$_GET["comments"];} elseif (isset($_POST["comments"])) {$comments=$_POST["comments"];} if (isset($_GET["status"])) {$status=$_GET["status"];} elseif (isset($_POST["status"])) {$status=$_POST["status"];} if (isset($_GET["rank"])) {$rank=$_GET["rank"];} elseif (isset($_POST["rank"])) {$rank=$_POST["rank"];} if (isset($_GET["owner"])) {$owner=$_GET["owner"];} elseif (isset($_POST["owner"])) {$owner=$_POST["owner"];} if (isset($_GET["submit"])) {$submit=$_GET["submit"];} elseif (isset($_POST["submit"])) {$submit=$_POST["submit"];} if (isset($_GET["SUBMIT"])) {$SUBMIT=$_GET["SUBMIT"];} elseif (isset($_POST["SUBMIT"])) {$SUBMIT=$_POST["SUBMIT"];} if (isset($_GET["CBchangeUSERtoANY"])) {$CBchangeUSERtoANY=$_GET["CBchangeUSERtoANY"];} elseif (isset($_POST["CBchangeUSERtoANY"])) {$CBchangeUSERtoANY=$_POST["CBchangeUSERtoANY"];} if (isset($_GET["CBchangeUSERtoUSER"])) {$CBchangeUSERtoUSER=$_GET["CBchangeUSERtoUSER"];} elseif (isset($_POST["CBchangeUSERtoUSER"])) {$CBchangeUSERtoUSER=$_POST["CBchangeUSERtoUSER"];} if (isset($_GET["CBchangeANYtoUSER"])) {$CBchangeANYtoUSER=$_GET["CBchangeANYtoUSER"];} elseif (isset($_POST["CBchangeANYtoUSER"])) {$CBchangeANYtoUSER=$_POST["CBchangeANYtoUSER"];} if (isset($_GET["CBchangeDATE"])) {$CBchangeDATE=$_GET["CBchangeDATE"];} elseif (isset($_POST["CBchangeDATE"])) {$CBchangeDATE=$_POST["CBchangeDATE"];} if (isset($_GET["callback_id"])) {$callback_id=$_GET["callback_id"];} elseif (isset($_POST["callback_id"])) {$callback_id=$_POST["callback_id"];} if (isset($_GET["CBuser"])) {$CBuser=$_GET["CBuser"];} elseif (isset($_POST["CBuser"])) {$CBuser=$_POST["CBuser"];} if (isset($_GET["modify_logs"])) {$modify_logs=$_GET["modify_logs"];} elseif (isset($_POST["modify_logs"])) {$modify_logs=$_POST["modify_logs"];} if (isset($_GET["modify_closer_logs"])) {$modify_closer_logs=$_GET["modify_closer_logs"];} elseif (isset($_POST["modify_closer_logs"])) {$modify_closer_logs=$_POST["modify_closer_logs"];} if (isset($_GET["modify_agent_logs"])) {$modify_agent_logs=$_GET["modify_agent_logs"];} elseif (isset($_POST["modify_agent_logs"])) {$modify_agent_logs=$_POST["modify_agent_logs"];} if (isset($_GET["add_closer_record"])) {$add_closer_record=$_GET["add_closer_record"];} elseif (isset($_POST["add_closer_record"])) {$add_closer_record=$_POST["add_closer_record"];} if (isset($_POST["appointment_date"])) {$appointment_date=$_POST["appointment_date"];} elseif (isset($_GET["appointment_date"])) {$appointment_date=$_GET["appointment_date"];} if (isset($_POST["appointment_time"])) {$appointment_time=$_POST["appointment_time"];} elseif (isset($_GET["appointment_time"])) {$appointment_time=$_GET["appointment_time"];} if (isset($_POST["claim_QC"])) {$claim_QC=$_POST["claim_QC"];} elseif (isset($_GET["claim_QC"])) {$claim_QC=$_GET["claim_QC"];} if (isset($_POST["qc_agent"])) {$qc_agent=$_POST["qc_agent"];} elseif (isset($_GET["qc_agent"])) {$qc_agent=$_GET["qc_agent"];} if (isset($_POST["qc_log_id"])) {$qc_log_id=$_POST["qc_log_id"];} elseif (isset($_GET["qc_log_id"])) {$qc_log_id=$_GET["qc_log_id"];} if (isset($_POST["qc_process_status"])) {$qc_process_status=$_POST["qc_process_status"];} elseif (isset($_GET["qc_process_status"])) {$qc_process_status=$_GET["qc_process_status"];} if (isset($_POST["finish_qc"])) {$finish_qc=$_POST["finish_qc"];} elseif (isset($_GET["finish_qc"])) {$finish_qc=$_GET["finish_qc"];} if (isset($_POST["qc_display_method"])) {$qc_display_method=$_POST["qc_display_method"];} elseif (isset($_GET["qc_display_method"])) {$qc_display_method=$_GET["qc_display_method"];} if (isset($_POST["qc_display_group_type"])) {$qc_display_group_type=$_POST["qc_display_group_type"];} elseif (isset($_GET["qc_display_group_type"])) {$qc_display_group_type=$_GET["qc_display_group_type"];} if (isset($_POST["qc_status"])) {$qc_status=$_POST["qc_status"];} elseif (isset($_GET["qc_status"])) {$qc_status=$_GET["qc_status"];} if (isset($_POST["agent_log_id"])) {$agent_log_id=$_POST["agent_log_id"];} elseif (isset($_GET["agent_log_id"])) {$agent_log_id=$_GET["agent_log_id"];} if (isset($_POST["referring_section"])) {$referring_section=$_POST["referring_section"];} elseif (isset($_GET["referring_section"])) {$referring_section=$_GET["referring_section"];} if (isset($_POST["referring_element"])) {$referring_element=$_POST["referring_element"];} elseif (isset($_GET["referring_element"])) {$referring_element=$_GET["referring_element"];} $DB=preg_replace('/[^0-9]/','',$DB); ############################################# ##### START SYSTEM_SETTINGS LOOKUP ##### $stmt = "SELECT use_non_latin,custom_fields_enabled,enable_languages,language_method,active_modules,log_recording_access,allow_web_debug FROM system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); #if ($DB) {echo "$stmt\n";} $qm_conf_ct = mysqli_num_rows($rslt); if ($qm_conf_ct > 0) { $row=mysqli_fetch_row($rslt); $non_latin = $row[0]; $custom_fields_enabled = $row[1]; $SSenable_languages = $row[2]; $SSlanguage_method = $row[3]; $active_modules = $row[4]; $log_recording_access = $row[5]; $SSallow_web_debug = $row[6]; } if ($SSallow_web_debug < 1) {$DB=0;} ##### END SETTINGS LOOKUP ##### ########################################### $CBchangeANYtoUSER=preg_replace('/[^A-Z]/','',$CBchangeANYtoUSER); $CBchangeDATE=preg_replace('/[^A-Z]/','',$CBchangeDATE); $CBchangeUSERtoANY=preg_replace('/[^A-Z]/','',$CBchangeUSERtoANY); $CBchangeUSERtoUSER=preg_replace('/[^A-Z]/','',$CBchangeUSERtoUSER); $claim_QC=preg_replace('/[^A-Z]/','',$claim_QC); $referring_section=preg_replace('/[^A-Z]/','',$referring_section); $call_began = preg_replace("/\<|\>|\'|\"|\\\\|;/","",$call_began); 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); $user = preg_replace('/[^-\_0-9a-zA-Z]/','',$user); $tsr = preg_replace('/[^-\_0-9a-zA-Z]/','',$tsr); $CBuser = preg_replace('/[^-\_0-9a-zA-Z]/','',$CBuser); $qc_agent = preg_replace('/[^-\_0-9a-zA-Z]/','',$qc_agent); $title = preg_replace('/[^- \'\_\.0-9a-zA-Z]/','',$title); $first_name = preg_replace('/[^- \'\+\_\.0-9a-zA-Z]/','',$first_name); $middle_initial = preg_replace('/[^0-9a-zA-Z]/','',$middle_initial); $last_name = preg_replace('/[^- \'\+\_\.0-9a-zA-Z]/','',$last_name); $lead_name = preg_replace('/[^- \'\+\_\.0-9a-zA-Z]/','',$lead_name); $address1 = preg_replace('/[^- \'\+\.\:\/\@\_0-9a-zA-Z]/','',$address1); $address2 = preg_replace('/[^- \'\+\.\:\/\@\_0-9a-zA-Z]/','',$address2); $address3 = preg_replace('/[^- \'\+\.\:\/\@\_0-9a-zA-Z]/','',$address3); $city = preg_replace('/[^- \'\+\.\:\/\@\_0-9a-zA-Z]/','',$city); $state = preg_replace('/[^- 0-9a-zA-Z]/','',$state); $province = preg_replace('/[^- \'\+\.\_0-9a-zA-Z]/','',$province); $postal_code = preg_replace('/[^- \'\+0-9a-zA-Z]/','',$postal_code); $alt_phone = preg_replace('/[^- \'\+\_\.0-9a-zA-Z]/','',$alt_phone); $email = preg_replace('/[^- \'\+\.\:\/\@\%\_0-9a-zA-Z]/','',$email); $security = preg_replace('/[^- \'\+\.\:\/\@\_0-9a-zA-Z]/','',$security); $campaign_id = preg_replace('/[^-\_0-9a-zA-Z]/', '',$campaign_id); $owner = preg_replace('/[^- \'\+\.\:\/\@\_0-9a-zA-Z]/','',$owner); $country_code = preg_replace('/[^A-Z]/','',$country_code); $gender = preg_replace('/[^A-Z]/','',$gender); $qc_display_group_type = preg_replace('/[^A-Z]/','',$qc_display_group_type); $qc_display_method = preg_replace('/[^A-Z]/','',$qc_display_method); $qc_process_status = preg_replace('/[^A-Z]/','',$qc_process_status); $channel = preg_replace('/[^- \'\+\.\:\/\@\_0-9a-zA-Z]/','',$channel); $dispo = preg_replace('/[^-\_0-9a-zA-Z]/', '',$dispo); $status = preg_replace('/[^-\_0-9a-zA-Z]/', '',$status); $qc_status = preg_replace('/[^-\_0-9a-zA-Z]/', '',$qc_status); $referring_element = preg_replace('/[^-\_0-9a-zA-Z]/', '',$referring_element); $submit = preg_replace('/[^- 0-9a-zA-Z]/','',$submit); $SUBMIT = preg_replace('/[^- 0-9a-zA-Z]/','',$SUBMIT); } 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); $user=preg_replace('/[^-_0-9\p{L}]/u','',$user); $tsr=preg_replace('/[^-_0-9\p{L}]/u','',$tsr); $CBuser=preg_replace('/[^-_0-9\p{L}]/u','',$CBuser); $qc_agent=preg_replace('/[^-_0-9\p{L}]/u','',$qc_agent); $title = preg_replace('/[^- \'\_\.0-9\p{L}]/u','',$title); $first_name = preg_replace('/[^- \'\+\_\.0-9\p{L}]/u','',$first_name); $middle_initial = preg_replace('/[^0-9\p{L}]/u','',$middle_initial); $last_name = preg_replace('/[^- \'\+\_\.0-9\p{L}]/u','',$last_name); $lead_name = preg_replace('/[^- \'\+\_\.0-9\p{L}]/u','',$lead_name); $address1 = preg_replace('/[^- \'\+\.\:\/\@\_0-9\p{L}]/u','',$address1); $address2 = preg_replace('/[^- \'\+\.\:\/\@\_0-9\p{L}]/u','',$address2); $address3 = preg_replace('/[^- \'\+\.\:\/\@\_0-9\p{L}]/u','',$address3); $city = preg_replace('/[^- \'\+\.\:\/\@\_0-9\p{L}]/u','',$city); $state = preg_replace('/[^- 0-9\p{L}]/u','',$state); $province = preg_replace('/[^- \'\+\.\_0-9\p{L}]/u','',$province); $postal_code = preg_replace('/[^- \'\+0-9\p{L}]/u','',$postal_code); $alt_phone = preg_replace('/[^- \'\+\_\.0-9\p{L}]/u','',$alt_phone); $email = preg_replace('/[^- \'\+\.\:\/\@\%\_0-9\p{L}]/u','',$email); $security = preg_replace('/[^- \'\+\.\:\/\@\_0-9\p{L}]/u','',$security); $campaign_id = preg_replace('/[^-\_0-9\p{L}]/u', '',$campaign_id); $owner = preg_replace('/[^- \'\+\.\:\/\@\_0-9\p{L}]/u','',$owner); $country_code = preg_replace('/[^\p{L}]/u','',$country_code); $gender = preg_replace('/[^\p{L}]/u','',$gender); $qc_display_group_type = preg_replace('/[^\p{L}]/u','',$qc_display_group_type); $qc_display_method = preg_replace('/[^\p{L}]/u','',$qc_display_method); $qc_process_status = preg_replace('/[^\p{L}]/u','',$qc_process_status); $channel = preg_replace('/[^- \'\+\.\:\/\@\_0-9\p{L}]/u','',$channel); $dispo = preg_replace('/[^-_0-9\p{L}]/u','',$dispo); $status = preg_replace('/[^-_0-9\p{L}]/u','',$status); $qc_status = preg_replace('/[^-_0-9\p{L}]/u','',$qc_status); $referring_element = preg_replace('/[^-\_0-9\p{L}]/u', '',$referring_element); $submit = preg_replace('/[^- 0-9\p{L}]/u','',$submit); $SUBMIT = preg_replace('/[^- 0-9\p{L}]/u','',$SUBMIT); } $first_name = preg_replace('/\+/',' ',$first_name); $last_name = preg_replace('/\+/',' ',$last_name); $address1 = preg_replace('/\+/',' ',$address1); $address2 = preg_replace('/\+/',' ',$address2); $address3 = preg_replace('/\+/',' ',$address3); $city = preg_replace('/\+/',' ',$city); $province = preg_replace('/\+/',' ',$province); $postal_code = preg_replace('/\+/',' ',$postal_code); $alt_phone = preg_replace('/\+/',' ',$alt_phone); $email = preg_replace('/\+/',' ',$email); $security_phrase = preg_replace('/\+/',' ',$security_phrase); $owner = preg_replace('/\+/',' ',$owner); $list_id = preg_replace('/[^0-9]/','',$list_id); $lead_id = preg_replace('/[^0-9a-zA-Z]/','',$lead_id); $entry_list_id = preg_replace('/[^0-9]/','',$entry_list_id); $phone_code = preg_replace('/[^0-9]/','',$phone_code); $update_phone_number=preg_replace('/[^A-Z]/','',$update_phone_number); $phone_number = preg_replace('/[^0-9]/','',$phone_number); $old_phone = preg_replace('/[^0-9]/','',$old_phone); $phone = preg_replace('/[^0-9]/','',$phone); $vendor_lead_code = preg_replace('/;|#/','',$vendor_lead_code); $vendor_lead_code = preg_replace('/\+/',' ',$vendor_lead_code); $vendor_id = preg_replace('/;|#/','',$vendor_id); $vendor_id = preg_replace('/\+/',' ',$vendor_id); $source_id = preg_replace('/;|#/','',$source_id); $source_id = preg_replace('/\+/',' ',$source_id); $gmt_offset_now = preg_replace('/[^-\_\.0-9]/','',$gmt_offset_now); $comments = preg_replace('/;|#/','',$comments); $comments = preg_replace('/\+/',' ',$comments); $rank = preg_replace('/[^0-9]/','',$rank); $no_update = preg_replace('/[^A-Z]/','',$no_update); $called_count=preg_replace('/[^0-9]/','',$called_count); $local_gmt=preg_replace('/[^-\.0-9]/','',$local_gmt); $callback = preg_replace('/[^A-Z]/','',$callback); $callback_type = preg_replace('/[^A-Z]/','',$callback_type); $add_closer_record = preg_replace('/[^0-9]/','',$add_closer_record); $agent_log_id = preg_replace('/[^0-9]/','',$agent_log_id); $appointment_date = preg_replace('/[^-0-9]/','',$appointment_date); $appointment_time = preg_replace('/[^0-9\:]/','',$appointment_time); $parked_time = preg_replace('/[^0-9\:\-]/','',$parked_time); $callback_id = preg_replace('/[^0-9]/','',$callback_id); $server_ip=preg_replace("/[^0-9\.]/", "", $server_ip); $end_call=preg_replace('/[^0-9]/','',$end_call); $finish_qc=preg_replace('/[^0-9]/','',$finish_qc); $group_id=preg_replace('/[^-_0-9\p{L}]/u','',$group_id); $extension=preg_replace('/[^0-9]/','',$extension); $qc_log_id = preg_replace('/[^0-9\:\-]/','',$qc_log_id); $modify_agent_logs = preg_replace('/[^0-9]/','',$modify_agent_logs); $modify_closer_logs = preg_replace('/[^0-9]/','',$modify_closer_logs); $modify_logs = preg_replace('/[^0-9]/','',$modify_logs); $STARTtime = date("U"); $defaultappointment = date("Y-m-d"); $NOW_TIME = date("Y-m-d H:i:s"); $back_link="./admin.php?ADD=881&qc_display_group_type=$referring_section"; switch($referring_section) # was $scorecard_source { case "CAMPAIGN": $back_link.="&campaign_id=$referring_element"; break; case "LIST": $back_link.="&list_id=$referring_element"; break; case "INGROUP": $back_link.="&group_id=$referring_element"; break; } $rights_stmt = "SELECT modify_leads,qc_enabled,full_name,modify_leads,user_group,selected_language 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); $modify_leads = $rights_row[0]; $qc_enabled = $rights_row[1]; $LOGfullname = $rights_row[2]; $LOGmodify_leads = $rights_row[3]; $LOGuser_group = $rights_row[4]; $VUselected_language = $rights_row[5]; if (strlen($phone_number)<6) {$phone_number=$old_phone;} require("screen_colors.php"); $Mhead_color = $SSstd_row5_background; $Mmain_bgcolor = $SSmenu_background; $Mhead_color = $SSstd_row5_background; $auth=0; $auth_message = user_authorization($PHP_AUTH_USER,$PHP_AUTH_PW,'QC',1,0); if ( ($auth_message == 'GOOD') or ($auth_message == '2FA') ) { $auth=1; if ($auth_message == '2FA') { header ("Content-type: text/html; charset=utf-8"); echo _QXZ("Your session is expired").". "._QXZ("Click here to log in").".\n"; exit; } } 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; } # check their permissions #if ( $modify_leads < 1 ) # { # header ("Content-type: text/html; charset=utf-8"); # echo "You do not have permissions to modify leads\n"; # exit; # } if ( $qc_enabled < 1 ) { header ("Content-type: text/html; charset=utf-8"); echo _QXZ("QC is not enabled for your user account")."\n"; exit; } if ($submit=="SUBMIT" && $auth==1) { $stmt="UPDATE vicidial_list set status='" . mysqli_real_escape_string($link, $status) . "',title='" . mysqli_real_escape_string($link, $title) . "',first_name='" . mysqli_real_escape_string($link, $first_name) . "',middle_initial='" . mysqli_real_escape_string($link, $middle_initial) . "',last_name='" . mysqli_real_escape_string($link, $last_name) . "',address1='" . mysqli_real_escape_string($link, $address1) . "',address2='" . mysqli_real_escape_string($link, $address2) . "',address3='" . mysqli_real_escape_string($link, $address3) . "',city='" . mysqli_real_escape_string($link, $city) . "',state='" . mysqli_real_escape_string($link, $state) . "',province='" . mysqli_real_escape_string($link, $province) . "',postal_code='" . mysqli_real_escape_string($link, $postal_code) . "',country_code='" . mysqli_real_escape_string($link, $country_code) . "',alt_phone='" . mysqli_real_escape_string($link, $alt_phone) . "',phone_number='$phone_number',phone_code='$phone_code',email='" . mysqli_real_escape_string($link, $email) . "',security_phrase='" . mysqli_real_escape_string($link, $security) . "',comments='" . mysqli_real_escape_string($link, $comments) . "',rank='" . mysqli_real_escape_string($link, $rank) . "',owner='" . mysqli_real_escape_string($link, $owner) . "' where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "'"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); } if ($finish_qc && $qc_log_id && $qc_process_status && $qc_agent==$PHP_AUTH_USER) { $qc_queue_stmt="select * from quality_control_queue where qc_log_id='$qc_log_id'"; $qc_queue_rslt=mysql_to_mysqli($qc_queue_stmt, $link); $q=0; while ($queue_row=mysqli_fetch_array($qc_queue_rslt)) { $scorecard_source=$queue_row["scorecard_source"]; $campaign_id=$queue_row["campaign_id"]; $group_id=$queue_row["group_id"]; $list_id=$queue_row["list_id"]; $redirect_URL_str="&qc_display_group_type=$referring_section"; # was $scorecard_source switch($referring_section) # was $scorecard_source { case "CAMPAIGN": $redirect_URL_str.="&campaign_id=$referring_element"; $display_ID=$campaign_id; break; case "LIST": $redirect_URL_str.="&list_id=$referring_element"; $display_ID=$list_id; break; case "INGROUP": $redirect_URL_str.="&group_id=$referring_element"; $display_ID=$group_id; break; } } if ($qc_process_status=="RELEASE") { $del_stmt="delete from quality_control_queue where qc_log_id='$qc_log_id'"; $del_rslt=mysqli_query($link, $del_stmt); $del_stmt2="delete from quality_control_checkpoint_log where qc_log_id='$qc_log_id'"; $del_rslt2=mysqli_query($link, $del_stmt2); } else { if ($lead_id) { $upd_lead_stmt="UPDATE vicidial_list set status='" . mysqli_real_escape_string($link, $status) . "' where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "'"; $upd_lead_rslt=mysqli_query($link, $upd_lead_stmt); } else { echo _QXZ("Error. No lead ID"); exit; } $upd_stmt="update quality_control_queue set qc_status='$qc_process_status', date_completed=now() where qc_log_id='$qc_log_id'"; if ($DB) {echo "|$upd_stmt|\n";} $upd_rslt=mysqli_query($link, $upd_stmt); } header("Location: ./admin.php?ADD=881$redirect_URL_str"); } if ($claim_QC && $auth==1) { if ((!$qc_display_group_type) || ($qc_display_group_type=="CAMPAIGN" && !$campaign_id) || ($qc_display_group_type=="LIST" && !$list_id) || ($qc_display_group_type=="INGROUP" && !$group_id)) { echo _QXZ("Error. QC type is not defined or missing info")." ($qc_display_group_type => $campaign_id|$list_id|$group_id)"; exit; } if ($qc_display_method) { $list_id=0; if ($agent_log_id) {$alid_clause="and agent_log_id='$agent_log_id'";} # Get specific agent log record related to selected call to ascertain the appropriate prioritization of the QC scorecards based on the call direction and list ID $agent_log_stmt="select agent_log_id, user, user_group, campaign_id, uniqueid, event_time+INTERVAL(pause_sec+wait_sec) SECOND as call_time, if(comments='CHAT' or comments='EMAIL' or comments='INBOUND', 'INBOUND', 'OUTBOUND') as direction from vicidial_agent_log where lead_id='$lead_id' and status='$qc_status' $alid_clause order by agent_log_id desc limit 1"; if ($DB) {echo $agent_log_stmt."
";} # http://svn.eflo.net:40080/vicidial/qc_modify_lead.php?claim_QC=CLAIM&qc_display_method=LEAD&agent_log_id=&qc_status=NP&lead_id=813114&campaign_id=TESTCAMP&lead_name=Test+Lead+17917 $agent_log_rslt=mysql_to_mysqli($agent_log_stmt, $link); if (mysqli_num_rows($agent_log_rslt)>0) { $alog_row=mysqli_fetch_array($agent_log_rslt); $agent_log_id=$alog_row["agent_log_id"]; $user=$alog_row["user"]; $user_group=$alog_row["user_group"]; $campaign_id=$alog_row["campaign_id"]; $uniqueid=$alog_row["uniqueid"]; $direction=$alog_row["direction"]; $call_time=$alog_row["call_time"]; } switch($direction) { case "OUTBOUND": $log_stmt="select list_id from vicidial_log where uniqueid='$uniqueid'"; break; case "INBOUND": $log_stmt="select list_id, campaign_id from vicidial_closer_log where lead_id='$lead_id' and uniqueid='$uniqueid'".($group_id ? "and campaign_id='$group_id'" : ""); break; } $list_scorecard_clause=""; $ingroup_scorecard_clause=""; $log_rslt=mysql_to_mysqli($log_stmt, $link); while($log_row=mysqli_fetch_array($log_rslt)) { # Both outbound and inbound calls have a list ID, list ID takes priority over outbound campaign, but not ingroup $list_id=$log_row["list_id"]; $list_scorecard_clause="UNION select qc_scorecard_id, 'LIST' as scorecard_source, qc_web_form_address, if(qc_scorecard_id!='', 2, 200) as priority from vicidial_lists where list_id='$list_id'"; # Inbound calls' QC scorecard takes priority over list ID and campaign ID. if (!$group_id) {$group_id=$log_row["campaign_id"];} if ($group_id) { $ingroup_scorecard_clause="UNION select qc_scorecard_id, 'INGROUP' as scorecard_source, qc_web_form_address, if(qc_scorecard_id!='', 1, 100) as priority from vicidial_inbound_groups where group_id='$group_id'"; } } # Get scorecard ID $qc_scorecard_id=""; $scorecard_stmt="select qc_scorecard_id, 'CAMPAIGN' as scorecard_source, qc_web_form_address, if(qc_scorecard_id!='', 3, 300) as priority from vicidial_campaigns where campaign_id='$campaign_id' $list_scorecard_clause $ingroup_scorecard_clause order by priority asc limit 1"; # echo $scorecard_stmt."
"; $scorecard_rslt=mysql_to_mysqli($scorecard_stmt, $link); while($scorecard_row=mysqli_fetch_array($scorecard_rslt)) { $qc_scorecard_id=$scorecard_row["qc_scorecard_id"]; $scorecard_source=$scorecard_row["scorecard_source"]; $qc_web_form_address=$scorecard_row["qc_web_form_address"]; } if (!$qc_scorecard_id) { echo _QXZ("Cannot claim this - no QC scorecard found")."\n"; exit; } # select the nearest recording_id based on timestamp. 'Nearest' can be in either direction from the call time (i.e. before or after). $recording_id=''; $rec_log_stmt="select recording_id, if(vicidial_id='$uniqueid', 1, 0) as priority, ABS(TIMESTAMPDIFF(SECOND, start_time, '$call_time')) as priority2 from recording_log where lead_id='$lead_id' order by priority desc, priority2 asc limit 1"; $rec_log_rslt=mysql_to_mysqli($rec_log_stmt, $link); while($rec_log_row=mysqli_fetch_array($rec_log_rslt)) { $recording_id=$rec_log_row["recording_id"]; } $ins_stmt="insert into quality_control_queue(qc_display_method, lead_id, agent_log_id, user, user_group, campaign_id, group_id, list_id, vicidial_id, recording_id, qc_scorecard_id, qc_agent, qc_user_group, qc_status, date_claimed, scorecard_source, status, call_date, qc_web_form_address) VALUES('$qc_display_method', '$lead_id', '$agent_log_id', '$user', '$user_group', '$campaign_id', '$group_id', '$list_id', '$uniqueid', '$recording_id', '$qc_scorecard_id', '$PHP_AUTH_USER', '$LOGuser_group', 'CLAIMED', now(), '$scorecard_source', '$qc_status', '$call_time', '$qc_web_form_address')"; # echo $ins_stmt."
"; $ins_rslt=mysql_to_mysqli($ins_stmt, $link); $qc_log_id=mysqli_insert_id($link); if (!$qc_log_id) {echo _QXZ("ERROR - INSERT INTO QUALITY CONTROL QUEUE FAILED!"); exit;} if ($scorecard_source!=$qc_display_group_type) { $alert="
WARNING: $scorecard_source setting overrides $qc_display_group_type - using scorecard $qc_scorecard_id"; } $checkpoint_log_stmt="select * from quality_control_checkpoints where qc_scorecard_id='$qc_scorecard_id' order by checkpoint_rank asc"; $checkpoint_log_rslt=mysql_to_mysqli($checkpoint_log_stmt, $link); while ($checkpoint_row=mysqli_fetch_array($checkpoint_log_rslt)) { $checkpoint_ins_stmt="insert into quality_control_checkpoint_log(qc_log_id, campaign_id, group_id, list_id, qc_scorecard_id, checkpoint_row_id, checkpoint_text, checkpoint_text_presets, checkpoint_rank, checkpoint_points, checkpoint_points_earned, instant_fail) VALUES ('$qc_log_id', '$campaign_id', '$group_id', '$list_id', '$qc_scorecard_id', '$checkpoint_row[checkpoint_row_id]', '$checkpoint_row[checkpoint_text]', '$checkpoint_row[checkpoint_text_presets]', '$checkpoint_row[checkpoint_rank]', '$checkpoint_row[checkpoint_points]', '$checkpoint_row[checkpoint_points]', '$checkpoint_row[instant_fail]')"; $checkpoint_ins_rslt=mysql_to_mysqli($checkpoint_ins_stmt, $link); # echo $checkpoint_ins_stmt."
"; } #exit; } else { echo _QXZ("Cannot claim this - there is no QC display method")."\n"; exit; } } if (!$qc_log_id) { echo _QXZ("No QC record detected - exiting."); exit; } else { $qc_queue_stmt="select * from quality_control_queue where qc_log_id='$qc_log_id'"; $qc_queue_rslt=mysql_to_mysqli($qc_queue_stmt, $link); $q=0; while ($queue_row=mysqli_fetch_array($qc_queue_rslt)) { $qc_id=$queue_row["qc_log_id"]; $qc_agent=$queue_row["qc_agent"]; $lead_id=$queue_row["lead_id"]; $date_claimed=$queue_row["date_claimed"]; $date_modified=$queue_row["date_modified"]; $scorecard_source=$queue_row["scorecard_source"]; $campaign_id=$queue_row["campaign_id"]; $group_id=$queue_row["group_id"]; $list_id=$queue_row["list_id"]; $qc_webform=$queue_row['qc_web_form_address']; $redirect_URL_str="&qc_display_group_type=$scorecard_source"; switch($scorecard_source) { case "CAMPAIGN": $redirect_URL_str.="&campaign_id=$campaign_id"; $display_ID=$campaign_id; break; case "LIST": $redirect_URL_str.="&list_id=$list_id"; $display_ID=$list_id; break; case "INGROUP": $redirect_URL_str.="&group_id=$group_id"; $display_ID=$group_id; break; } } } if ($qc_log_id && $qc_agent!=$PHP_AUTH_USER) { echo "Access denied - you are not the agent who claimed this QC record."; exit; } $label_title = _QXZ("Title"); $label_first_name = _QXZ("First"); $label_middle_initial = _QXZ("MI"); $label_last_name = _QXZ("Last"); $label_address1 = _QXZ("Address1"); $label_address2 = _QXZ("Address2"); $label_address3 = _QXZ("Address3"); $label_city = _QXZ("City"); $label_state = _QXZ("State"); $label_province = _QXZ("Province"); $label_postal_code = _QXZ("Postal Code"); $label_vendor_lead_code = _QXZ("Vendor ID"); $label_gender = _QXZ("Gender"); $label_phone_number = _QXZ("Phone"); $label_phone_code = _QXZ("DialCode"); $label_alt_phone = _QXZ("Alt. Phone"); $label_security_phrase = _QXZ("Show"); $label_email = _QXZ("Email"); $label_comments = _QXZ("Comments"); ### find any custom field labels $stmt="SELECT 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 from system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); if (strlen($row[0])>0) {$label_title = $row[0];} if (strlen($row[1])>0) {$label_first_name = $row[1];} if (strlen($row[2])>0) {$label_middle_initial = $row[2];} if (strlen($row[3])>0) {$label_last_name = $row[3];} if (strlen($row[4])>0) {$label_address1 = $row[4];} if (strlen($row[5])>0) {$label_address2 = $row[5];} if (strlen($row[6])>0) {$label_address3 = $row[6];} if (strlen($row[7])>0) {$label_city = $row[7];} if (strlen($row[8])>0) {$label_state = $row[8];} if (strlen($row[9])>0) {$label_province = $row[9];} if (strlen($row[10])>0) {$label_postal_code = $row[10];} if (strlen($row[11])>0) {$label_vendor_lead_code = $row[11];} if (strlen($row[12])>0) {$label_gender = $row[12];} if (strlen($row[13])>0) {$label_phone_number = $row[13];} if (strlen($row[14])>0) {$label_phone_code = $row[14];} if (strlen($row[15])>0) {$label_alt_phone = $row[15];} if (strlen($row[16])>0) {$label_security_phrase = $row[16];} if (strlen($row[17])>0) {$label_email = $row[17];} if (strlen($row[18])>0) {$label_comments = $row[18];} ##### BEGIN vicidial_list FIELD LENGTH LOOKUP ##### $MAXvendor_lead_code = '20'; $MAXphone_code = '10'; $MAXphone_number = '18'; $MAXtitle = '4'; $MAXfirst_name = '30'; $MAXmiddle_initial = '1'; $MAXlast_name = '30'; $MAXaddress1 = '100'; $MAXaddress2 = '100'; $MAXaddress3 = '100'; $MAXcity = '50'; $MAXstate = '2'; $MAXprovince = '50'; $MAXpostal_code = '10'; $MAXalt_phone = '12'; $MAXemail = '70'; $MAXsecurity_phrase = '100'; $MAXcountry_code = '3'; $MAXowner = '20'; $stmt = "SHOW COLUMNS FROM vicidial_list;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $scvl_ct = mysqli_num_rows($rslt); $s=0; while ($scvl_ct > $s) { $row=mysqli_fetch_row($rslt); $vl_field = $row[0]; $vl_type = preg_replace("/[^0-9]/",'',$row[1]); if (strlen($vl_type) > 0) { if ( ($vl_field == 'vendor_lead_code') and ($MAXvendor_lead_code != $vl_type) ) {$MAXvendor_lead_code = $vl_type;} if ( ($vl_field == 'phone_code') and ($MAXphone_code != $vl_type) ) {$MAXphone_code = $vl_type;} if ( ($vl_field == 'phone_number') and ($MAXphone_number != $vl_type) ) {$MAXphone_number = $vl_type;} if ( ($vl_field == 'title') and ($MAXtitle != $vl_type) ) {$MAXtitle = $vl_type;} if ( ($vl_field == 'first_name') and ($MAXfirst_name != $vl_type) ) {$MAXfirst_name = $vl_type;} if ( ($vl_field == 'middle_initial') and ($MAXmiddle_initial != $vl_type) ) {$MAXmiddle_initial = $vl_type;} if ( ($vl_field == 'last_name') and ($MAXlast_name != $vl_type) ) {$MAXlast_name = $vl_type;} if ( ($vl_field == 'address1') and ($MAXaddress1 != $vl_type) ) {$MAXaddress1 = $vl_type;} if ( ($vl_field == 'address2') and ($MAXaddress2 != $vl_type) ) {$MAXaddress2 = $vl_type;} if ( ($vl_field == 'address3') and ($MAXaddress3 != $vl_type) ) {$MAXaddress3 = $vl_type;} if ( ($vl_field == 'city') and ($MAXcity != $vl_type) ) {$MAXcity = $vl_type;} if ( ($vl_field == 'state') and ($MAXstate != $vl_type) ) {$MAXstate = $vl_type;} if ( ($vl_field == 'province') and ($MAXprovince != $vl_type) ) {$MAXprovince = $vl_type;} if ( ($vl_field == 'postal_code') and ($MAXpostal_code != $vl_type) ) {$MAXpostal_code = $vl_type;} if ( ($vl_field == 'alt_phone') and ($MAXalt_phone != $vl_type) ) {$MAXalt_phone = $vl_type;} if ( ($vl_field == 'email') and ($MAXemail != $vl_type) ) {$MAXemail = $vl_type;} if ( ($vl_field == 'security_phrase') and ($MAXsecurity_phrase != $vl_type) ) {$MAXsecurity_phrase = $vl_type;} if ( ($vl_field == 'country_code') and ($MAXcountry_code != $vl_type) ) {$MAXcountry_code = $vl_type;} if ( ($vl_field == 'owner') and ($MAXowner != $vl_type) ) {$MAXowner = $vl_type;} } $s++; } ##### END vicidial_list FIELD LENGTH LOOKUP ##### //Added by Poundteam for QC. Gather record data to display on page and prepopulate title and hrefs, etc. #$stmt="SELECT * from vicidial_list A inner join vicidial_lists B on A.list_id=B.list_id inner join vicidial_campaigns C on B.campaign_id=C.campaign_id left outer join vicidial_statuses D on A.status=D.status left outer join vicidial_qc_codes E on A.status=E.code where A.lead_id='$lead_id'"; #$rslt=mysql_to_mysqli($stmt, $link); #if (mysqli_num_rows ($rslt) < '1' ) # { # if($DB) { echo "$stmt\n"; } # exit(); # } #$row=mysqli_fetch_assoc($rslt); #$original_record = $row; #$campaign_id = $row['campaign_id']; #$campaign_name = $row['campaign_name']; #$phone_number = $row['phone_number']; #$phone_code = $row['phone_code']; #$scheduled_callback = $row['scheduled_callback']; ##### grab vicidial_list data for lead ##### $lead_stmt="SELECT lead_id,entry_date,modify_date,status,user,vendor_lead_code,source_id,list_id,gmt_offset_now,called_since_last_reset,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,called_count,last_local_call_time,rank,owner,entry_list_id from vicidial_list where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "'"; $lead_rslt=mysql_to_mysqli($lead_stmt, $link); if ($DB) {echo "$stmt\n";} $row=mysqli_fetch_array($lead_rslt); if (strlen($row[0]) > 0) {$lead_id = $row[0];} $modify_date = $row[2]; $dispo = $row[3]; $tsr = $row[4]; $vendor_id = $row[5]; $list_id = $row[7]; $gmt_offset_now = $row[8]; $phone_code = $row[10]; $phone_number = $row[11]; $title = $row[12]; $first_name = $row[13]; $middle_initial = $row[14]; $last_name = $row[15]; $address1 = $row[16]; $address2 = $row[17]; $address3 = $row[18]; $city = $row[19]; $state = $row[20]; $province = $row[21]; $postal_code = $row[22]; $country_code = $row[23]; $gender = $row[24]; $date_of_birth = $row[25]; $alt_phone = $row[26]; $email = $row[27]; $security = $row[28]; $comments = $row[29]; $called_count = $row[30]; $last_local_call_time = $row[31]; $rank = $row[32]; $owner = $row[33]; $entry_list_id = $row[34]; $lead_name = trim(trim($row['first_name'].' '.$row['middle_initial']).' '.$row['last_name']); ### BEGIN Replace variables with values for qc_webform ### $qc_webform = str_replace('--A--lead_id--B--', $row['lead_id'], $qc_webform); $qc_webform = str_replace('--A--vendor_lead_code--B--', $row['vendor_lead_code'], $qc_webform); $qc_webform = str_replace('--A--list_id--B--', $row['list_id'], $qc_webform); $qc_webform = str_replace('--A--gmt_offset_now--B--', $row['gmt_offset_now'], $qc_webform); $qc_webform = str_replace('--A--phone_code--B--', $row['phone_code'], $qc_webform); $qc_webform = str_replace('--A--phone_number--B--', $row['phone_number'], $qc_webform); $qc_webform = str_replace('--A--title--B--', $row['title'], $qc_webform); $qc_webform = str_replace('--A--first_name--B--', $row['first_name'], $qc_webform); $qc_webform = str_replace('--A--middle_initial--B--', $row['middle_initial'], $qc_webform); $qc_webform = str_replace('--A--last_name--B--', $row['last_name'], $qc_webform); $qc_webform = str_replace('--A--address1--B--', $row['address1'], $qc_webform); $qc_webform = str_replace('--A--address2--B--', $row['address2'], $qc_webform); $qc_webform = str_replace('--A--address3--B--', $row['address3'], $qc_webform); $qc_webform = str_replace('--A--city--B--', $row['city'], $qc_webform); $qc_webform = str_replace('--A--state--B--', $row['state'], $qc_webform); $qc_webform = str_replace('--A--province--B--', $row['province'], $qc_webform); $qc_webform = str_replace('--A--postal_code--B--', $row['postal_code'], $qc_webform); $qc_webform = str_replace('--A--country_code--B--', $row['country_code'], $qc_webform); $qc_webform = str_replace('--A--gender--B--', $row['gender'], $qc_webform); $qc_webform = str_replace('--A--date_of_birth--B--', $row['date_of_birth'], $qc_webform); $qc_webform = str_replace('--A--alt_phone--B--', $row['alt_phone'], $qc_webform); $qc_webform = str_replace('--A--email--B--', $row['email'], $qc_webform); $qc_webform = str_replace('--A--security_phrase--B--', $row['security_phrase'], $qc_webform); $qc_webform = str_replace('--A--comments--B--', $row['comments'], $qc_webform); $qc_webform = str_replace('--A--user--B--', $row['user'], $qc_webform); $qc_webform = str_replace('--A--campaign--B--', $row['campaign'], $qc_webform); $qc_webform = str_replace('--A--phone_login--B--', $row['phone_login'], $qc_webform); $qc_webform = str_replace('--A--rank--B--', $row['rank'], $qc_webform); $qc_webform = str_replace('--A--owner--B--', $row['owner'], $qc_webform); $qc_webform = str_replace('--A--security_phrase--B--', $row['security_phrase'], $qc_webform); $qc_webform = str_replace('--A--current_user--B--', $PHP_AUTH_USER, $qc_webform); $qc_webform = str_replace('--A--called_count--B--', $row['called_count'], $qc_webform); ### END of replace variables code ### $vdc_form_display = 'vdc_form_display.php'; if (preg_match("/cf_encrypt/",$active_modules)) {$vdc_form_display = 'vdc_form_display_encrypt.php';} ?> <?php echo _QXZ("QC Modify Lead"); ?>: <?php echo _QXZ("QC $scorecard_source")." $display_ID, $lead_id - ".urldecode($lead_name); ?> \n"; echo ""._QXZ("QC $scorecard_source")." $display_ID: "._QXZ("Lead")." $lead_id - ".urldecode($lead_name)."   GO BACK"; echo $alert; echo "\n"; echo " \n"; echo "\t\n"; echo "\t\t\n"; echo "\t\t\n"; echo "\t\t\n"; echo "\t\t\n"; echo "\t\n"; echo " \n"; echo "\n"; //end_call is set by submit button to denote "save", without it this is a VIEW, with it this is a SAVE $qc_master_span_visibility="block"; $lead_information_span_visibility="none"; $qc_call_information_visibility="none"; $call_logs_span_visibility="none"; if ($end_call > 0) { if ($LOGmodify_leads == '5') { echo "ERROR: "._QXZ("You do not have permission to modify leads").": $LOGmodify_leads \n"; exit; } $qc_master_span_visibility="none"; $lead_information_span_visibility="block"; if($DB) { echo __LINE__."\n"; } ### update the lead record in the vicidial_list table $stmt="UPDATE vicidial_list set status='" . mysqli_real_escape_string($link, $status) . "',title='" . mysqli_real_escape_string($link, $title) . "',first_name='" . mysqli_real_escape_string($link, $first_name) . "',middle_initial='" . mysqli_real_escape_string($link, $middle_initial) . "',last_name='" . mysqli_real_escape_string($link, $last_name) . "',address1='" . mysqli_real_escape_string($link, $address1) . "',address2='" . mysqli_real_escape_string($link, $address2) . "',address3='" . mysqli_real_escape_string($link, $address3) . "',city='" . mysqli_real_escape_string($link, $city) . "',state='" . mysqli_real_escape_string($link, $state) . "',province='" . mysqli_real_escape_string($link, $province) . "',postal_code='" . mysqli_real_escape_string($link, $postal_code) . "',country_code='" . mysqli_real_escape_string($link, $country_code) . "',alt_phone='" . mysqli_real_escape_string($link, $alt_phone) . "',phone_number='$phone_number',phone_code='$phone_code',email='" . mysqli_real_escape_string($link, $email) . "',security_phrase='" . mysqli_real_escape_string($link, $security) . "',comments='" . mysqli_real_escape_string($link, $comments) . "',rank='" . mysqli_real_escape_string($link, $rank) . "',owner='" . mysqli_real_escape_string($link, $owner) . "' where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "'"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); //STATUS just changed, re-capture all data for client! //Added by Poundteam for QC. Gather record data to display on page and prepopulate title and hrefs, etc. $stmt="SELECT * from vicidial_list A inner join vicidial_lists B on A.list_id=B.list_id inner join vicidial_campaigns C on B.campaign_id=C.campaign_id left outer join vicidial_statuses D on A.status=D.status left outer join vicidial_qc_codes E on A.status=E.code where A.lead_id='$lead_id'"; if($DB) { echo "$stmt\n"; } $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_assoc($rslt); //QUALITY CONTROL CHANGE LOG BEGIN - CHANGE VERSION (VIEW VERSION IS BELOW, WHICH CREATES THE RECORD, THIS ONE MERELY MODIFIES THE EXISTING RECORD) $new_record=$row; //if status has changed, the join query above will have the "status" field of "vicidial_list" overwritten by the status field of "vicidial_statuses" ... which will be EMPTY if there is no matching status to the new QC status chosen. This will cause the changelog to be incorrect. if ( strlen($new_record['status']) == '0' ) { $new_record['status']=$new_record['code']; } if($original_record != $new_record) { //Information changed: Find out what and record it, first disable "view" logging $qcchange='Y'; $qcchangelist=''; $qcchangecounter=0; foreach($original_record as $key=>$value) { //only list the changes in the first 35 fiels, those are from the vicidial_list table (the rest are from joined tables, and the changes cascade) if(($new_record[$key]!=$value)&&($qcchangecounter<=35)) $qcchangelist.="----$key----\n$value => $new_record[$key]\n"; $qcchangecounter++; } ### insert a NEW record to the vicidial_closer_log table $qcchangelist=mysqli_real_escape_string($link, $qcchangelist); $view_epoch = preg_replace('/[^0-9]/','',$_POST['viewtime']); $elapsed_seconds=$STARTtime-$view_epoch; $stmt="UPDATE vicidial_qc_agent_log set save_datetime='$NOW_TIME',save_epoch='$STARTtime',elapsed_seconds='$elapsed_seconds',old_status='{$original_record['status']}',new_status='{$new_record['status']}',details='$qcchangelist' where view_epoch='$view_epoch' and lead_id='$lead_id'"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); } //QUALITY CONTROL CHANGE LOG END $original_sales_rep = $row['user']; $campaign_id = $row['campaign_id']; $campaign_name = $row['campaign_name']; $lead_name = trim(trim($row['first_name'].' '.$row['middle_initial']).' '.$row['last_name']); $scheduled_callback = $row['scheduled_callback']; echo "
"._QXZ("information modified")."

\n"; echo ""._QXZ("Go back to re-modify this QC lead")."


\n"; echo "
"._QXZ("Proceed to QC CAMPAIGN")." $campaign_id "._QXZ("Queue")."

"._QXZ("Callback Information").":\n"; ### LOG INSERTION Admin Log Table ### $SQL_log = "$stmt|"; $SQL_log = preg_replace('/;/', '', $SQL_log); $SQL_log = addslashes($SQL_log); $stmt="INSERT INTO vicidial_admin_log set event_date='$NOW_TIME', user='$PHP_AUTH_USER', ip_address='$ip', event_section='LEADS', event_type='MODIFY', record_id='$lead_id', event_code='ADMIN MODIFY LEAD', event_sql=\"$SQL_log\", event_notes='';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); if($DB) { echo __LINE__."\n"; } if ( ($dispo != $status) and ($dispo == 'CBHOLD') ) { if($DB) { echo __LINE__."\n"; } ### inactivate vicidial_callbacks record for this lead $stmt="UPDATE vicidial_callbacks set status='INACTIVE' where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "' and status='ACTIVE';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); echo "
"._QXZ("vicidial_callback record inactivated").": $lead_id
\n"; } //Duped CBHOLD version for vicidial status type 'Scheduled Callback' if ( ($dispo != $status) and ($scheduled_callback == 'Y') ) { if($DB) { echo __LINE__."\n"; } ### inactivate vicidial_callbacks record for this lead $stmt="UPDATE vicidial_callbacks set status='INACTIVE' where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "' and status='ACTIVE';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); echo "
"._QXZ("vicidial_callback record inactivated").": $lead_id
\n"; } if ( ($dispo != $status) and ($dispo == 'CALLBK') ) { if($DB) { echo __LINE__."\n"; } ### inactivate vicidial_callbacks record for this lead $stmt="UPDATE vicidial_callbacks set status='INACTIVE' where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "' and status IN('ACTIVE','LIVE');"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); echo "
"._QXZ("vicidial_callback record inactivated").": $lead_id
\n"; } if ( ($dispo != $status) and ($status == 'CBHOLD') ) { if($DB) { echo __LINE__."\n"; } ### find any vicidial_callback records for this lead $stmt="select callback_id from vicidial_callbacks where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "' and status IN('ACTIVE','LIVE') order by callback_id desc LIMIT 1;"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); $CBM_to_print = mysqli_num_rows($rslt); if ($CBM_to_print > 0) { $rowx=mysqli_fetch_row($rslt); $callback_id = $rowx[0]; } else { $defaultappointment = date("Y-m-d H:i:s", mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y"))); $stmt="INSERT INTO vicidial_callbacks SET lead_id='" . mysqli_real_escape_string($link, $lead_id) . "',recipient='ANYONE',status='ACTIVE',user='$PHP_AUTH_USER',user_group='ADMIN',list_id='" . mysqli_real_escape_string($link, $list_id) . "',callback_time='$defaultappointment 12:00:00',entry_time='$NOW_TIME',comments='',campaign_id='" . mysqli_real_escape_string($link, $campaign_id) . "';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); echo "
"._QXZ("Scheduled Callback added").": $lead_id - $phone_number
\n"; } } //Duped CBHOLD version for vicidial status type 'Scheduled Callback' //This entry creates the callback if ( ($dispo != $status) and ($scheduled_callback == 'Y') ) { if($DB) { echo __LINE__."\n"; } ### find any vicidial_callback records for this lead $stmt="select callback_id from vicidial_callbacks where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "' and status IN('ACTIVE','LIVE') order by callback_id desc LIMIT 1;"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); $CBM_to_print = mysqli_num_rows($rslt); if ($CBM_to_print > 0) { $rowx=mysqli_fetch_row($rslt); $callback_id = $rowx[0]; } else { $defaultappointment = date("Y-m-d H:i:s", mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y"))); $stmt="INSERT INTO vicidial_callbacks SET lead_id='" . mysqli_real_escape_string($link, $lead_id) . "',recipient='USERONLY',status='ACTIVE',user='$original_sales_rep',user_group='ADMIN',list_id='" . mysqli_real_escape_string($link, $list_id) . "',callback_time='$defaultappointment 12:00:00',entry_time='$NOW_TIME',comments='',campaign_id='" . mysqli_real_escape_string($link, $campaign_id) . "';"; $debug1=$stmt; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); echo "
"._QXZ("Scheduled Callback added").": $lead_id - $phone_number
\n"; } } if ( ($dispo != $status) and ($status == 'DNC') ) { if($DB) { echo __LINE__."\n"; } ### add lead to the internal DNC list $stmt="INSERT INTO vicidial_dnc (phone_number) values('" . mysqli_real_escape_string($link, $phone_number) . "');"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); echo "
"._QXZ("Lead added to DNC List").": $lead_id - $phone_number
\n"; } ### update last record in vicidial_log table if (($dispo != $status) and ($modify_logs > 0)) { if($DB) { echo __LINE__."\n"; } $stmt="UPDATE vicidial_log set status='" . mysqli_real_escape_string($link, $status) . "' where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "' order by call_date desc limit 1"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); } ### update last record in vicidial_closer_log table if (($dispo != $status) and ($modify_closer_logs > 0)) { if($DB) { echo __LINE__."\n"; } $stmt="UPDATE vicidial_closer_log set status='" . mysqli_real_escape_string($link, $status) . "' where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "' order by closecallid desc limit 1"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); } ### update last record in vicidial_agent_log table if (($dispo != $status) and ($modify_agent_logs > 0)) { if($DB) { echo __LINE__."\n"; } $stmt="UPDATE vicidial_agent_log set status='" . mysqli_real_escape_string($link, $status) . "' where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "' order by agent_log_id desc limit 1"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); } if ($add_closer_record > 0) { if($DB) echo __LINE__."\n"; ### insert a NEW record to the vicidial_closer_log table $stmt="INSERT INTO vicidial_closer_log (lead_id,list_id,campaign_id,call_date,start_epoch,end_epoch,length_in_sec,status,phone_code,phone_number,user,comments,processed) values('" . mysqli_real_escape_string($link, $lead_id) . "','" . mysqli_real_escape_string($link, $list_id) . "','" . mysqli_real_escape_string($link, $campaign_id) . "','" . mysqli_real_escape_string($link, $parked_time) . "','$NOW_TIME','$STARTtime','1','" . mysqli_real_escape_string($link, $status) . "','" . mysqli_real_escape_string($link, $phone_code) . "','" . mysqli_real_escape_string($link, $phone_number) . "','$PHP_AUTH_USER','" . mysqli_real_escape_string($link, $comments) . "','Y')"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); } } else { # JCJ - call span echo "\n\n
\n"; echo _QXZ("PLACE A CALL TO LEAD").":

\n"; /* JCJ - Commented out, moved to AJAX //Not a "Submit" result, viewing the record (possibly with URL options such as those below which modify callback status but not record data) if ($CBchangeUSERtoANY == 'YES') { if($DB) echo __LINE__."\n"; ### set vicidial_callbacks record to an ANYONE callback for this lead $stmt="UPDATE vicidial_callbacks set recipient='ANYONE' where callback_id='" . mysqli_real_escape_string($link, $callback_id) . "';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); echo "
"._QXZ("vicidial_callback record changed to ANYONE")."
\n"; $qcchange='Y'; } if ($CBchangeUSERtoUSER == 'YES') { if($DB) echo __LINE__."\n"; ### set vicidial_callbacks record to a different USERONLY callback record for this lead $stmt="UPDATE vicidial_callbacks set user='" . mysqli_real_escape_string($link, $CBuser) . "' where callback_id='" . mysqli_real_escape_string($link, $callback_id) . "';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); echo "
"._QXZ("vicidial_callback record user changed to")." $CBuser
\n"; $qcchange='Y'; } if ($CBchangeANYtoUSER == 'YES') { if($DB) echo __LINE__."\n"; ### set vicidial_callbacks record to an USERONLY callback for this lead $stmt="UPDATE vicidial_callbacks set user='" . mysqli_real_escape_string($link, $CBuser) . "',recipient='USERONLY' where callback_id='" . mysqli_real_escape_string($link, $callback_id) . "';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); echo "
"._QXZ("vicidial_callback record changed to USERONLY, user").": $CBuser
\n"; $qcchange='Y'; } if ($CBchangeDATE == 'YES') { if($DB) echo __LINE__."\n"; ### change date/time of vicidial_callbacks record for this lead $stmt="UPDATE vicidial_callbacks set callback_time='" . mysqli_real_escape_string($link, $appointment_date) . " " . mysqli_real_escape_string($link, $appointment_time) . "',comments='" . mysqli_real_escape_string($link, $comments) . "' where callback_id='" . mysqli_real_escape_string($link, $callback_id) . "';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); echo "
"._QXZ("vicidial_callback record changed to")." $appointment_date $appointment_time
\n"; $qcchange='Y'; } */ //QUALITY CONTROL LOGGING BEGIN - VIEW ONLY //If no changes have been made, record "view" of this record. if ($qcchange != 'Y') { if($DB) echo __LINE__."\n QCCHANGE != Y"; ### insert a NEW record to the vicidial_closer_log table $stmt="INSERT INTO vicidial_qc_agent_log (qc_user,qc_user_group,qc_user_ip,lead_user,web_server_ip,view_datetime,view_epoch,lead_id,list_id,campaign_id,processed,qc_log_id) values('" . mysqli_real_escape_string($link, $PHP_AUTH_USER) . "','$LOGuser_group','{$_SERVER['REMOTE_ADDR']}','{$original_record['user']}','{$_SERVER['SERVER_ADDR']}','$NOW_TIME','$STARTtime','" . mysqli_real_escape_string($link, $lead_id) . "','" . mysqli_real_escape_string($link, $original_record['list_id']) . "','" . mysqli_real_escape_string($link, $campaign_id) . "','N', '$qc_log_id')"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); } //QUALITY CONTROL LOGGING END if($DB) echo __LINE__."\n"; $stmt="SELECT count(*) from vicidial_list where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "'"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $row=mysqli_fetch_row($rslt); $lead_count = $row[0]; ##### CALLBACK INFORMATION ##### echo "
"; echo "
"; echo _QXZ("Callback Details").":
"; //Added scheduled_callback regular statuses option if ( ($dispo == 'CALLBK') or ($dispo == 'CBHOLD') || $scheduled_callback=='Y' ) { if($DB) { echo __LINE__.""; } ### find any vicidial_callback records for this lead $stmt="select callback_id,lead_id,list_id,campaign_id,status,entry_time,callback_time,modify_date,user,recipient,comments,user_group from vicidial_callbacks where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "' and status IN('ACTIVE','LIVE') order by callback_id desc LIMIT 1;"; if ($DB) {echo "|$stmt|";} $rslt=mysql_to_mysqli($stmt, $link); $CB_to_print = mysqli_num_rows($rslt); $rowx=mysqli_fetch_row($rslt); if ($CB_to_print>0) { ?>
:
> "; echo ""; # echo ""; echo ""; # } else { echo "
($rowx[9])"; # echo ""; # } $appointment_datetimeARRAY = explode(" ",$rowx[6]); $appointment_date = $appointment_datetimeARRAY[0]; $appointment_timeARRAY = explode(":",$appointment_datetimeARRAY[1]); $appointment_hour = $appointment_timeARRAY[0]; $appointment_min = $appointment_timeARRAY[1]; ?>
"; # echo ""; # echo ""; # echo ""; # echo ""; echo _QXZ("New Callback Owner UserID").": "; echo ""; echo "
 "; #
echo ""; # echo ""; # echo ""; # echo ""; echo "
"; echo "
"; echo ""; # echo ""; # echo ""; # echo ""; echo _QXZ("New Callback Owner UserID").": "; echo "

:     :
:
" name=smt id=smt onClick="ChangeCallbackDateTime(this.form.callback_id.value)">
"._QXZ("No Callback records found")."
"; } } else { if($DB) { echo __LINE__.""; } //Modifed text to allow for other than CBHOLD via custom statuses with scheduled callback chosen # echo "
"._QXZ("If you want to change this lead to a scheduled callback, first change the Disposition to CBHOLD or similar, then submit and you will be able to set the callback date and time.")."
"; echo "
"._QXZ("This lead is not currently a recognized callback status, such as CALLBK or CBHOLD, or a campaign or system status where the -scheduled callback- parameter is set to -Y-.")."
"; } echo "
"; echo "
"; ################################ # JCJ - end call span if ($lead_count > 0) { if($DB) echo __LINE__."\n"; ##### grab vicidial_list_alt_phones records ##### $stmt="select phone_code,phone_number,alt_phone_note,alt_phone_count,active from vicidial_list_alt_phones where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "' order by alt_phone_count limit 500;"; $rslt=mysql_to_mysqli($stmt, $link); $alts_to_print = mysqli_num_rows($rslt); $c=0; $alts_output = ''; while ($alts_to_print > $c) { if($DB) { echo __LINE__."\n"; } $row=mysqli_fetch_row($rslt); if (preg_match("/1$|3$|5$|7$|9$/i", $c)) {$bgcolor="bgcolor='#".$SSstd_row2_background."'";} else {$bgcolor="bgcolor='#".$SSstd_row1_background."'";} $c++; $alts_output .= ""; $alts_output .= "$c"; $alts_output .= "$row[0] $row[1]"; $alts_output .= " $row[2]\n"; $alts_output .= " $row[3]\n"; $alts_output .= " $row[4] \n"; } } else { echo _QXZ("lead lookup FAILED for lead_id")." $lead_id       $NOW_TIME\n

\n"; # echo "Close this window\n

\n"; } #### START LOG RECORD GENERATION ##### ##### grab vicidial_log records ##### $stmt="select uniqueid,lead_id,list_id,campaign_id,call_date,start_epoch,end_epoch,length_in_sec,status,phone_code,phone_number,user,comments,processed,user_group,term_reason,alt_dial from vicidial_log where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "' order by uniqueid desc limit 500;"; $rslt=mysql_to_mysqli($stmt, $link); $logs_to_print = mysqli_num_rows($rslt); if($DB) echo __LINE__."
\n"; $u=0; $call_log = ''; $log_campaign = ''; while ($logs_to_print > $u) { if($DB) echo __LINE__."
\n"; $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='#".$SSstd_row2_background."'";} else {$bgcolor="bgcolor='#".$SSstd_row1_background."'";} $u++; $call_log .= ""; $call_log .= "$u"; $call_log .= "$row[4]"; $call_log .= " $row[7]\n"; $call_log .= " $row[8]\n"; $call_log .= " $row[11] \n"; $call_log .= " $row[3] \n"; $call_log .= " $row[2] \n"; $call_log .= " $row[1] \n"; $call_log .= " $row[15] \n"; $call_log .= "  $row[10] \n"; $campaign_id = $row[3]; } ##### grab vicidial_agent_log records ##### $stmt="select agent_log_id,user,server_ip,event_time,lead_id,campaign_id,pause_epoch,pause_sec,wait_epoch,wait_sec,talk_epoch,talk_sec,dispo_epoch,dispo_sec,status,user_group,comments,sub_status from vicidial_agent_log where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "' order by agent_log_id desc limit 500;"; $rslt=mysql_to_mysqli($stmt, $link); $Alogs_to_print = mysqli_num_rows($rslt); if($DB) echo __LINE__."
\n"; $y=0; $agent_log = ''; $Alog_campaign = ''; while ($Alogs_to_print > $y) { $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='#".$SSstd_row2_background."'";} else {$bgcolor="bgcolor='#".$SSstd_row1_background."'";} $y++; $agent_log .= ""; $agent_log .= "$y"; $agent_log .= "$row[3]"; $agent_log .= " $row[5]\n"; $agent_log .= " $row[1] \n"; $agent_log .= " $row[7]\n"; $agent_log .= " $row[9] \n"; $agent_log .= " $row[11] \n"; $agent_log .= " $row[13] \n"; $agent_log .= "   $row[14] \n"; $agent_log .= "   $row[15] \n"; $agent_log .= "   $row[17] \n"; $campaign_id = $row[5]; } ##### grab vicidial_qc_agent_log records ##### //Differentiate between View and Mod $stmt="select * from vicidial_qc_agent_log where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "' and view_epoch<'$STARTtime' order by qc_agent_log_id desc limit 100;"; $rslt=mysql_to_mysqli($stmt, $link); $Alogs_to_print = mysqli_num_rows($rslt); if($DB) echo "$stmt
\n"; $y=0; $qc_agent_log = ''; $Alog_campaign = ''; while ($Alogs_to_print > $y) { $row=mysqli_fetch_assoc($rslt); if (strlen($Alog_campaign)<1) {$Alog_campaign = $row[5];} if (preg_match("/1$|3$|5$|7$|9$/i", $y)) {$bgcolor="bgcolor='#".$SSstd_row2_background."'";} else {$bgcolor="bgcolor='#".$SSstd_row1_background."'";} $y++; if (strlen($row['save_epoch'])=='0') { //VIEW ONLY record $qc_agent_log .= ""; $qc_agent_log .= "$y"; $qc_agent_log .= "{$row['view_datetime']}"; $qc_agent_log .= ""._QXZ("View Only - No changes").""; $qc_agent_log .= "{$row['qc_user']}"; $qc_agent_log .= "{$row['lead_user']}"; $qc_agent_log .= "{$row['campaign_id']}"; $qc_agent_log .= "{$row['list_id']}"; $qc_agent_log .= " "; $qc_agent_log .= " \n"; } else { // CHANGE record $detailtooltip=str_replace("\n", " ", $row['details']); // tool tip line break and both work in IE, but not firefox. $qc_agent_log .= ""; $qc_agent_log .= "$y"; $qc_agent_log .= "{$row['view_datetime']}"; $qc_agent_log .= "{$row['old_status']}"; $qc_agent_log .= "{$row['new_status']}"; $qc_agent_log .= "{$row['qc_user']}"; $qc_agent_log .= "{$row['lead_user']}"; $qc_agent_log .= "{$row['campaign_id']}"; $qc_agent_log .= "{$row['list_id']}"; $qc_agent_log .= "".($row['elapsed_seconds']+0).""; $qc_agent_log .= ""._QXZ("DETAILS")."\n"; } } ##### grab vicidial_closer_log records ##### $stmt="SELECT closecallid,lead_id,list_id,campaign_id,call_date,start_epoch,end_epoch,length_in_sec,status,phone_code,phone_number,user,comments,processed,queue_seconds,user_group,xfercallid,term_reason,uniqueid,agent_only from vicidial_closer_log where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "' order by closecallid desc limit 500;"; $rslt=mysql_to_mysqli($stmt, $link); $Clogs_to_print = mysqli_num_rows($rslt); $y=0; $closer_log = ''; $Clog_campaign = ''; while ($Clogs_to_print > $y) { $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='#".$SSstd_row2_background."'";} else {$bgcolor="bgcolor='#".$SSstd_row1_background."'";} $y++; $closer_log .= ""; $closer_log .= "$y"; $closer_log .= "$row[4]"; $closer_log .= " $row[7]\n"; $closer_log .= " $row[8]\n"; $closer_log .= " $row[11] \n"; $closer_log .= " $row[3] \n"; $closer_log .= " $row[2] \n"; $closer_log .= " $row[1] \n"; $closer_log .= "   $row[14] \n"; $closer_log .= "   $row[17] \n"; $campaign_id = $row[3]; } #### END LOG RECORD GENERATION ##### # JCJ - Lead information span echo "\n\n
"; if($DB) { echo __LINE__."\n"; } echo "
"._QXZ("Call information").": $first_name $last_name - $phone_number

"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; $stmt="SELECT user_id, timestamp, list_id, campaign_id, comment from vicidial_comments where lead_id='$lead_id' order by timestamp"; $rslt=mysql_to_mysqli($stmt, $link); $row_count = mysqli_num_rows($rslt); $o=0; $comments=false; while ($row_count > $o) { if (!$comments) { echo "\n"; $comments=true; } $rowx=mysqli_fetch_row($rslt); echo "\n"; $o++; } /* JCJ - Removed, as it's on the scorecard now if ($comments) { # echo "\n"; } echo "\n"; */ // Section Modified for QC Functionality By PoundTeam // echo "\n"; // echo "\n"; // echo "\n"; // echo "\n"; // echo "\n"; echo "\n"; echo "
"._QXZ("Status").":     $dispo
$label_vendor_lead_code: $vendor_id     "._QXZ("Lead ID").": $lead_id
"._QXZ("Fronter").": $tsr     "._QXZ("List ID").": $list_id     "._QXZ("Called Count").": $called_count
$label_title:   \n"; echo "$label_first_name:
$label_middle_initial:   \n"; echo " $label_last_name:
$label_address1 :
$label_address2 :
$label_address3 :
$label_city :
$label_state:   \n"; echo " $label_postal_code:
$label_province :
"._QXZ("Country")." :
$label_phone_number :
$label_phone_code :
$label_alt_phone :
$label_email :
$label_security_phrase :
"._QXZ("Rank")." :
"._QXZ("Owner")." :
$label_comments :
"._QXZ("Comment History")."
$rowx[0] :
$rowx[1]
"._QXZ("List ID").": $rowx[2]; "._QXZ("Campaign ID").": $rowx[3]
$rowx[4]

"._QXZ("QC Result").": ("._QXZ("with")." $list_campaign "._QXZ("statuses").")
Modify vicidial log
Modify agent log
Modify closer log
"._QXZ("Disable QC log entry")." ("._QXZ("this feature is not active yet").")
"; if (strlen($qc_webform) > 4) { echo ""._QXZ("QC Webform")."\n"; } else { echo " "; } echo " 
\n"; if ($c > 0) { if($DB) { echo __LINE__."\n"; } echo "
"._QXZ("EXTENDED ALTERNATE PHONE NUMBERS FOR THIS LEAD").":\n"; echo "\n"; echo "\n"; echo "$alts_output\n"; echo "
# "._QXZ("ALT PHONE")." "._QXZ("ALT NOTE")." "._QXZ("ALT COUNT")." "._QXZ("ACTIVE")."
\n"; echo "

\n"; } ### iframe for custom fields display/editing if ($custom_fields_enabled > 0) { $CLlist_id = $list_id; if (strlen($entry_list_id) > 2) {$CLlist_id = $entry_list_id;} $stmt="SHOW TABLES LIKE \"custom_$CLlist_id\";"; if ($DB>0) {echo "$stmt";} $rslt=mysql_to_mysqli($stmt, $link); $tablecount_to_print = mysqli_num_rows($rslt); if ($tablecount_to_print > 0) { $stmt="SELECT count(*) from custom_$CLlist_id where lead_id='$lead_id';"; if ($DB>0) {echo "$stmt";} $rslt=mysql_to_mysqli($stmt, $link); $fieldscount_to_print = mysqli_num_rows($rslt); if ($fieldscount_to_print > 0) { $rowx=mysqli_fetch_row($rslt); $custom_records_count = $rowx[0]; $submit_buttonURL = '&submit_button=YES'; if ($LOGmodify_leads == '5') {$submit_buttonURL = '&submit_button=READONLY';} echo ""._QXZ("CUSTOM FIELDS FOR THIS LEAD").":
\n"; echo "\n"; echo "

"; } } } echo "
"; # JCJ - END LEAD INFO span # JCJ - CALL LOG span echo "\n\n
"; echo ""._QXZ("QUALITY CONTROL LOG RECORDS FOR THIS LEAD").":\n"; echo "\n"; echo "\n"; echo "$qc_agent_log"; echo "
# "._QXZ("DATE/TIME")." "._QXZ("OLD STATUS").""._QXZ("NEW STATUS").""._QXZ("QC USER").""._QXZ("AGENT").""._QXZ("CAMPAIGN").""._QXZ("LIST").""._QXZ("ELAPSED")." 
\n"; echo "

\n\n"; echo ""._QXZ("CALLS TO THIS LEAD").":\n"; echo "\n"; echo "\n"; echo "$call_log"; echo "
# "._QXZ("DATE/TIME")." "._QXZ("LENGTH")." "._QXZ("STATUS")." "._QXZ("TSR")." "._QXZ("CAMPAIGN")." "._QXZ("LIST")." "._QXZ("LEAD")." "._QXZ("HANGUP REASON")." "._QXZ("PHONE")."
\n"; echo "

\n\n"; echo ""._QXZ("CLOSER RECORDS FOR THIS LEAD").":\n"; echo "\n"; echo "\n"; echo "$closer_log"; echo "
# "._QXZ("DATE/TIME")." "._QXZ("LENGTH")." "._QXZ("STATUS")." "._QXZ("TSR")." "._QXZ("CAMPAIGN")." "._QXZ("LIST")." "._QXZ("LEAD")." "._QXZ("WAIT")." "._QXZ("HANGUP REASON")."
\n"; echo "

\n\n"; echo ""._QXZ("AGENT LOG RECORDS FOR THIS LEAD").":\n"; echo "\n"; echo "\n"; echo "$agent_log"; echo "
# "._QXZ("DATE/TIME")." "._QXZ("CAMPAIGN")." "._QXZ("TSR")." "._QXZ("PAUSE")." "._QXZ("WAIT")." "._QXZ("TALK")." "._QXZ("DISPO")." "._QXZ("STATUS")." "._QXZ("GROUP")." "._QXZ("SUB")."
\n"; echo "

\n\n"; echo "
\n"; # JCJ - END CALL LOG SPAN # JCJ - QC LOG span echo "\n\n
\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; if ($qc_log_id) { $checkpoint_stmt="select * from quality_control_checkpoint_log where qc_log_id='$qc_log_id' order by checkpoint_rank asc"; $checkpoint_rslt=mysql_to_mysqli($checkpoint_stmt, $link); if (mysqli_num_rows($checkpoint_rslt)==0) { echo _QXZ("ERROR - NO QUALITY CONTROL RECORD FOUND!"); } else { $scorecard_stmt="select qc_scorecard_id, recording_id from quality_control_queue where qc_log_id='$qc_log_id'"; $scorecard_rslt=mysql_to_mysqli($scorecard_stmt, $link); $scorecard_row=mysqli_fetch_row($scorecard_rslt); $qc_scorecard_id=$scorecard_row[0]; $qc_recording_id=$scorecard_row[1]; $stmt="select recording_id,channel,server_ip,extension,start_time,start_epoch,end_time,end_epoch,length_in_sec,length_in_min,filename,location,lead_id,user,vicidial_id from recording_log where recording_id='" . mysqli_real_escape_string($link, $qc_recording_id) . "' order by recording_id desc limit 500;"; $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $location = $row[11]; if (strlen($location)>2) { $URLserver_ip = $location; $URLserver_ip = preg_replace('/http:\/\//i', '',$URLserver_ip); $URLserver_ip = preg_replace('/https:\/\//i', '',$URLserver_ip); $URLserver_ip = preg_replace('/\/.*/i', '',$URLserver_ip); $stmt="select count(*) from servers where server_ip='$URLserver_ip';"; $rsltx=mysql_to_mysqli($stmt, $link); $rowx=mysqli_fetch_row($rsltx); if ($rowx[0] > 0) { $stmt="select recording_web_link,alt_server_ip,external_server_ip from servers where server_ip='$URLserver_ip';"; $rsltx=mysql_to_mysqli($stmt, $link); $rowx=mysqli_fetch_row($rsltx); if (preg_match("/ALT_IP/i",$rowx[0])) { $location = preg_replace("/$URLserver_ip/i", "$rowx[1]", $location); } if (preg_match("/EXTERNAL_IP/i",$rowx[0])) { $location = preg_replace("/$URLserver_ip/i", "$rowx[2]", $location); } } } if (strlen($location)>30) {$locat = substr($location,0,27); $locat = "$locat...";} else {$locat = $location;} $play_audio=''; if ( (preg_match('/ftp/i',$location)) or (preg_match('/http/i',$location)) ) { $play_audio = "     \n"; if ($log_recording_access<1) { $location = "$locat"; } else { $location = "$locat"; } } else {$location = $locat;} echo "\n"; echo ""; echo ""; echo ""; echo "\n"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "\n"; $i=1; while ($checkpoint_row=mysqli_fetch_array($checkpoint_rslt)) { $qccl_id=$checkpoint_row["qc_checkpoint_log_id"]; $instant_fail_active=$checkpoint_row["instant_fail"]; $instant_fail_value=$checkpoint_row["instant_fail_value"]; if (preg_match("/1$|3$|5$|7$|9$/i", $i)) {$bgcolor="bgcolor='#".$SSstd_row3_background."'";} else {$bgcolor="bgcolor='#".$SSstd_row2_background."'";} echo ""; echo ""; echo ""; if ($instant_fail_active=="Y") { echo ""; } else { echo ""; } echo ""; echo ""; echo ""; echo ""; $i++; } echo ""; echo ""; echo ""; echo "\n"; echo ""; echo ""; # echo ""; echo ""; # echo ""; echo ""; echo "\n"; echo "
"._QXZ("SCORECARD ID").": $qc_scorecard_id"._QXZ("RECORDING ID").":
 "._QXZ("Checkpoint").""._QXZ("Fail")."?"._QXZ("Points")."/th>"; echo ""._QXZ("Comments")." 
$i$checkpoint_row[checkpoint_text]  / $checkpoint_row[checkpoint_points]"; echo ""; echo "
"; echo "
"; if (strlen($checkpoint_row["checkpoint_text_presets"])>0) { echo "Presets:
\n"; echo "
"; echo ""; } else { echo " "; } echo "
$play_audio  $location
"._QXZ("FINISH QC").":
"._QXZ("QC Result").": ("._QXZ("with")." $list_campaign "._QXZ("statuses").")
\n"; } echo "


"; } echo ""._QXZ("ALL RECORDINGS FOR THIS LEAD").":\n"; echo "\n"; echo "\n"; $stmt="select recording_id,channel,server_ip,extension,start_time,start_epoch,end_time,end_epoch,length_in_sec,length_in_min,filename,location,lead_id,user,vicidial_id from recording_log where lead_id='" . mysqli_real_escape_string($link, $lead_id) . "' and recording_id!='" . mysqli_real_escape_string($link, $qc_recording_id) . "' order by recording_id desc limit 500;"; $rslt=mysql_to_mysqli($stmt, $link); $logs_to_print = mysqli_num_rows($rslt); if ($DB) {echo "$logs_to_print|$stmt|\n";} $u=0; while ($logs_to_print > $u) { $row=mysqli_fetch_row($rslt); if (preg_match("/1$|3$|5$|7$|9$/i", $u)) {$bgcolor="bgcolor='#".$SSstd_row2_background."'";} else {$bgcolor="bgcolor='#".$SSstd_row1_background."'";} $location = $row[11]; if (strlen($location)>2) { $URLserver_ip = $location; $URLserver_ip = preg_replace('/http:\/\//i', '',$URLserver_ip); $URLserver_ip = preg_replace('/https:\/\//i', '',$URLserver_ip); $URLserver_ip = preg_replace('/\/.*/i', '',$URLserver_ip); $stmt="select count(*) from servers where server_ip='$URLserver_ip';"; $rsltx=mysql_to_mysqli($stmt, $link); $rowx=mysqli_fetch_row($rsltx); if ($rowx[0] > 0) { $stmt="select recording_web_link,alt_server_ip,external_server_ip from servers where server_ip='$URLserver_ip';"; $rsltx=mysql_to_mysqli($stmt, $link); $rowx=mysqli_fetch_row($rsltx); if (preg_match("/ALT_IP/i",$rowx[0])) { $location = preg_replace("/$URLserver_ip/i", "$rowx[1]", $location); } if (preg_match("/EXTERNAL_IP/i",$rowx[0])) { $location = preg_replace("/$URLserver_ip/i", "$rowx[2]", $location); } } } if (strlen($location)>30) {$locat = substr($location,0,27); $locat = "$locat...";} else {$locat = $location;} $play_audio=''; if ( (preg_match('/ftp/i',$location)) or (preg_match('/http/i',$location)) ) { $play_audio = "\n"; if ($log_recording_access<1) { $location = "$locat"; } else { $location = "$locat"; } } else {$location = $locat;} $u++; echo ""; echo ""; echo ""; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo ""; echo "$play_audio"; echo "\n"; } echo "
# "._QXZ("LEAD").""._QXZ("DATE/TIME")." "._QXZ("SECONDS")."   "._QXZ("RECID").""._QXZ("FILENAME").""._QXZ("LOCATION").""._QXZ("TSR")." 
 
$u $row[12] $row[4] $row[8] $row[0]   $row[10] $location $row[13]


\n"; echo "
\n"; echo "\n"; echo "\n"; # END QC LOG SPAN $stmt="SELECT count(*) from vicidial_users where user='$PHP_AUTH_USER' and pass='$PHP_AUTH_PW' and user_level >= 9 and modify_leads IN('1','2','3','4');"; if ($DB) {echo "|$stmt|\n";} if ($non_latin > 0) {$rslt=mysql_to_mysqli("SET NAMES 'UTF8'", $link);} $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $admin_display=$row[0]; if ($admin_display > 0) { echo ""._QXZ("Click here to see Lead Modify changes to this lead")."\n"; } } echo "\n"; $ENDtime = date("U"); $RUNtime = ($ENDtime - $STARTtime); echo "\n\n\n


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


\n"._QXZ("script runtime").": $RUNtime "._QXZ("seconds")."
"; ?> "._QXZ("original_record").":
"; print_r($original_record); echo "
"._QXZ("new_record").":
"; print_r($new_record); echo _QXZ("scheduled_callback").":
"; print_r($scheduled_callback); echo _QXZ("debug1").":
"; print_r($debug1); echo _QXZ("Post").":
"; print_r($_POST); echo _QXZ("qcchangelist").":
"; print_r($qcchangelist); echo "
"; } exit; ?>