From d1749e6447da19533eadc3b7abc1e6d1b68141eb Mon Sep 17 00:00:00 2001 From: mattf Date: Wed, 15 Sep 2010 21:10:34 +0000 Subject: [PATCH] Added dispo_move_list.php script which can be used in the Dispo Call URL option for a campaign or in-group, allows for chaning of a list_id for a lead depending on the agent disposition status choice git-svn-id: svn://192.168.202.10@1520 3d104415-ff17-0410-8863-d5cf3c621b8a --- agc_2-X/trunk/UPGRADE | 8 + agc_2-X/trunk/www/agc/dispo_move_list.php | 170 ++++++++++++++++++++++ 2 files changed, 178 insertions(+) create mode 100644 agc_2-X/trunk/www/agc/dispo_move_list.php diff --git a/agc_2-X/trunk/UPGRADE b/agc_2-X/trunk/UPGRADE index 5a303ddf..56b51cc3 100644 --- a/agc_2-X/trunk/UPGRADE +++ b/agc_2-X/trunk/UPGRADE @@ -325,6 +325,14 @@ OTHER CHANGES: 71. Added ability to view Inbound Report by selected DIDs instead of by in-groups. Link added to Reports page. +72. Added dispo_move_list.php script which can be used in the Dispo Call URL + option for a campaign or in-group. This script can be used to move a + lead into a different list_id after the agent disposition depending on + the disposition that is selected. Optionally, the lead can also be reset + so that it can be dialed back immediately. See the code comments for + more information. + + diff --git a/agc_2-X/trunk/www/agc/dispo_move_list.php b/agc_2-X/trunk/www/agc/dispo_move_list.php new file mode 100644 index 00000000..6a7bb645 --- /dev/null +++ b/agc_2-X/trunk/www/agc/dispo_move_list.php @@ -0,0 +1,170 @@ + LICENSE: AGPLv2 +# +# This script is designed to be used in the "Dispo URL" field of a campaign +# or in-group. It should take in the lead_id to check for the same lead_id +# in order to change it's list_id to whatever new_list_id is set to. The +# sale_status field is a list of statuses separated by three dashes each '---' +# which contain the statuses for which the process should be run. +# +# This script is part of the API group and any modifications of data are +# logged to the vicidial_api_log table. +# +# This script limits the number of altered leads to 1 per instance and it will +# not run if the search field of the lead is empty. +# +# Example of what to put in the Dispo URL field: +# VARhttp://192.168.1.1/agc/dispo_move_list.php?lead_id=--A--lead_id--B--&new_list_id=10411099&dispo=--A--dispo--B--&user=--A--user--B--&pass=--A--pass--B--&sale_status=SALE---SSALE---XSALE&reset_dialed=Y&log_to_file=1 +# +# +# CHANGES +# 100915-1600 - First Build +# + +$api_script = 'deactivate'; + +header ("Content-type: text/html; charset=utf-8"); + +require("dbconnect.php"); + +$filedate = date("Ymd"); +$filetime = date("H:i:s"); +$IP = getenv ("REMOTE_ADDR"); +$BR = getenv ("HTTP_USER_AGENT"); + +$PHP_AUTH_USER=$_SERVER['PHP_AUTH_USER']; +$PHP_AUTH_PW=$_SERVER['PHP_AUTH_PW']; +$PHP_SELF=$_SERVER['PHP_SELF']; +if (isset($_GET["lead_id"])) {$lead_id=$_GET["lead_id"];} + elseif (isset($_POST["lead_id"])) {$lead_id=$_POST["lead_id"];} +if (isset($_GET["sale_status"])) {$sale_status=$_GET["sale_status"];} + elseif (isset($_POST["sale_status"])) {$sale_status=$_POST["sale_status"];} +if (isset($_GET["dispo"])) {$dispo=$_GET["dispo"];} + elseif (isset($_POST["dispo"])) {$dispo=$_POST["dispo"];} +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"];} +if (isset($_GET["reset_dialed"])) {$reset_dialed=$_GET["reset_dialed"];} + elseif (isset($_POST["reset_dialed"])) {$reset_dialed=$_POST["reset_dialed"];} +if (isset($_GET["user"])) {$user=$_GET["user"];} + elseif (isset($_POST["user"])) {$user=$_POST["user"];} +if (isset($_GET["pass"])) {$pass=$_GET["pass"];} + elseif (isset($_POST["pass"])) {$pass=$_POST["pass"];} +if (isset($_GET["DB"])) {$DB=$_GET["DB"];} + elseif (isset($_POST["DB"])) {$DB=$_POST["DB"];} +if (isset($_GET["log_to_file"])) {$log_to_file=$_GET["log_to_file"];} + elseif (isset($_POST["log_to_file"])) {$log_to_file=$_POST["log_to_file"];} + + +#$DB = '1'; # DEBUG override +$US = '_'; +$TD = '---'; +$STARTtime = date("U"); +$NOW_TIME = date("Y-m-d H:i:s"); +$sale_status = "$TD$sale_status$TD"; +$search_value=''; + +if ($DB>0) {echo "$lead_id|$search_field|$campaign_check|$sale_status|$dispo|$new_status|$user|$pass|$DB|$log_to_file|\n";} + +if (preg_match("/$TD$dispo$TD/",$sale_status)) + { + ############################################# + ##### START SYSTEM_SETTINGS INFO LOOKUP ##### + $stmt = "SELECT use_non_latin FROM system_settings;"; + $rslt=mysql_query($stmt, $link); + if ($DB) {echo "$stmt\n";} + $ss_conf_ct = mysql_num_rows($rslt); + if ($ss_conf_ct > 0) + { + $row=mysql_fetch_row($rslt); + $non_latin = $row[0]; + } + ##### END SYSTEM_SETTINGS INFO LOOKUP ##### + ########################################### + + if ($non_latin < 1) + { + $user=ereg_replace("[^-_0-9a-zA-Z]","",$user); + $pass=ereg_replace("[^-_0-9a-zA-Z]","",$pass); + } + else + { + $user = ereg_replace("'|\"|\\\\|;","",$user); + $pass = ereg_replace("'|\"|\\\\|;","",$pass); + } + + $stmt="SELECT count(*) from vicidial_users where user='$user' and pass='$pass' and user_level > 0;"; + if ($DB) {echo "|$stmt|\n";} + if ($non_latin > 0) {$rslt=mysql_query("SET NAMES 'UTF8'");} + $rslt=mysql_query($stmt, $link); + $row=mysql_fetch_row($rslt); + $auth=$row[0]; + + $stmt="SELECT count(*) from vicidial_live_agents where user='$user';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_query($stmt, $link); + $row=mysql_fetch_row($rslt); + $authlive=$row[0]; + + if( (strlen($user)<2) or (strlen($pass)<2) or ($auth==0) or ($authlive==0)) + { + echo "Invalid Username/Password: |$user|$pass|$auth|$authlive\n"; + exit; + } + + if ( (strlen($lead_id) > 0) and (strlen($new_list_id) > 2) ) + { + $search_count=0; + $stmt = "SELECT count(*) FROM vicidial_list where lead_id='$lead_id' and list_id!='$new_list_id';"; + $rslt=mysql_query($stmt, $link); + if ($DB) {echo "$stmt\n";} + $sc_ct = mysql_num_rows($rslt); + if ($sc_ct > 0) + { + $row=mysql_fetch_row($rslt); + $search_count = $row[0]; + } + + if ($search_count > 0) + { + $reset_dialedSQL=''; + if ($reset_dialed=='Y') {$reset_dialedSQL=", called_since_last_reset='N'";} + $stmt="UPDATE vicidial_list SET list_id='$new_list_id' $reset_dialedSQL where lead_id='$lead_id' limit 1;"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_query($stmt, $link); + $affected_rows = mysql_affected_rows($link); + + $SQL_log = "$stmt|"; + $SQL_log = ereg_replace(';','',$SQL_log); + $SQL_log = addslashes($SQL_log); + $stmt="INSERT INTO vicidial_api_log set user='$user',agent_user='$user',function='deactivate_lead',value='$lead_id',result='$affected_rows',result_reason='$lead_id',source='vdc',data='$SQL_log',api_date='$NOW_TIME',api_script='$api_script';"; + $rslt=mysql_query($stmt, $link); + + $MESSAGE = "DONE: $search_count match found, $affected_rows updated to $new_list_id with $dispo status"; + echo "$MESSAGE\n"; + } + else + { + $MESSAGE = "DONE: no match found within $lead_id |$new_list_id|"; + echo "$MESSAGE\n"; + } + } + else + { + $MESSAGE = "DONE: $search_field is empty for lead $lead_id"; + echo "$MESSAGE\n"; + } + } +else + { + $MESSAGE = "DONE: dispo is not a sale status: $dispo"; + echo "$MESSAGE\n"; + } + +if ($log_to_file > 0) + { + $fp = fopen ("./dispo_move_list.txt", "a"); + fwrite ($fp, "$NOW_TIME|$lead_id|$new_list_id|$sale_status|$dispo|$user|$pass|$DB|$log_to_file|$MESSAGE|\n"); + fclose($fp); + }