Patched sec_convert to fix rounding time bug, issue #1011

Added start_call_url function to manual-dial calls

git-svn-id: svn://192.168.202.10@2746 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
mattf
2017-05-04 22:20:13 +00:00
parent ac9a1d2432
commit 67e9452d7e
4 changed files with 731 additions and 55 deletions
+2
View File
@@ -156,6 +156,8 @@ OTHER CHANGES:
32. Added campaign options to stop recording when a 3-way call is started and
start recording when the hangup xfer line button is clicked
33. Added start call URL feature support for manual dial calls
+692 -8
View File
@@ -428,13 +428,14 @@
# 170327-1656 - Added USER_CUSTOM_ options to campaign custom callerID setting
# 170401-1437 - Added translation of callbacks statuses, issue #1006
# 170429-0835 - Added callback_display_days option
# 170504-1056 - Added start_call_url to manual-dial calls
#
$version = '2.14-322';
$build = '170429-0835';
$version = '2.14-323';
$build = '170504-1056';
$php_script = 'vdc_db_query.php';
$mel=1; # Mysql Error Log enabled = 1
$mysql_log_count=661;
$mysql_log_count=684;
$one_mysql_log=0;
$DB=0;
$VD_login=0;
@@ -3909,7 +3910,7 @@ if ($ACTION == 'manDiaLnextCaLL')
if (strlen($campaign_cid_override) > 6) {$CCID = "$campaign_cid_override"; $CCID_on++;}
### check for custom cid use
$use_custom_cid=0;
$stmt = "SELECT use_custom_cid,manual_dial_hopper_check FROM vicidial_campaigns where campaign_id='$campaign';";
$stmt = "SELECT use_custom_cid,manual_dial_hopper_check,start_call_url FROM vicidial_campaigns where campaign_id='$campaign';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00313',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
@@ -3919,6 +3920,7 @@ if ($ACTION == 'manDiaLnextCaLL')
$row=mysqli_fetch_row($rslt);
$use_custom_cid = $row[0];
$manual_dial_hopper_check = $row[1];
$OUT_start_call_url = $row[2];
if ( (preg_match('/^USER_CUSTOM/', $use_custom_cid)) and ($cid_lock < 1) )
{
$temp_vu='';
@@ -4052,7 +4054,7 @@ if ($ACTION == 'manDiaLnextCaLL')
{
### look for a dial-ingroup cid
$dial_ingroup_cid='';
$stmt = "SELECT dial_ingroup_cid FROM vicidial_inbound_groups where group_id='$dial_ingroup';";
$stmt = "SELECT dial_ingroup_cid,start_call_url FROM vicidial_inbound_groups where group_id='$dial_ingroup';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00440',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
@@ -4060,7 +4062,8 @@ if ($ACTION == 'manDiaLnextCaLL')
if ($digcid_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$dial_ingroup_cid = $row[0];
$dial_ingroup_cid = $row[0];
$IN_start_call_url = $row[1];
}
if (strlen($dial_ingroup_cid) > 6) {$CCID = "$dial_ingroup_cid"; $CCID_on++;}
@@ -4284,6 +4287,321 @@ if ($ACTION == 'manDiaLnextCaLL')
fwrite ($fp, "$NOW_TIME|$campaign|$lead_id|$agent_dialed_number|$user|M|$MqueryCID||$province\n");
fclose($fp);
}
### BEGIN start_call_url processing ###
if (strlen($IN_start_call_url) > 7)
{$VDCL_start_call_url = $IN_start_call_url;}
else
{$VDCL_start_call_url = $OUT_start_call_url;}
### Issue Start Call URL if defined
if (strlen($VDCL_start_call_url) > 7)
{
if (preg_match('/--A--user_custom_/i',$VDCL_start_call_url))
{
$stmt = "SELECT custom_one,custom_two,custom_three,custom_four,custom_five from vicidial_users where user='$user';";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00662',$user,$server_ip,$session_name,$one_mysql_log);}
$VUC_ct = mysqli_num_rows($rslt);
if ($VUC_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$user_custom_one = urlencode(trim($row[0]));
$user_custom_two = urlencode(trim($row[1]));
$user_custom_three = urlencode(trim($row[2]));
$user_custom_four = urlencode(trim($row[3]));
$user_custom_five = urlencode(trim($row[4]));
}
}
$VDCL_start_call_url = preg_replace('/^VAR/','',$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--lead_id--B--/i',urlencode(trim($lead_id)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--vendor_id--B--/i',urlencode(trim($vendor_id)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--vendor_lead_code--B--/i',urlencode(trim($vendor_id)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--list_id--B--/i',urlencode(trim($list_id)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--list_name--B--/i',urlencode(trim($list_name)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--list_description--B--/i',urlencode(trim($list_description)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--gmt_offset_now--B--/i',urlencode(trim($gmt_offset_now)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--phone_code--B--/i',urlencode(trim($phone_code)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--phone_number--B--/i',urlencode(trim($phone_number)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--title--B--/i',urlencode(trim($title)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--first_name--B--/i',urlencode(trim($first_name)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--middle_initial--B--/i',urlencode(trim($middle_initial)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--last_name--B--/i',urlencode(trim($last_name)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--address1--B--/i',urlencode(trim($address1)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--address2--B--/i',urlencode(trim($address2)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--address3--B--/i',urlencode(trim($address3)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--city--B--/i',urlencode(trim($city)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--state--B--/i',urlencode(trim($state)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--province--B--/i',urlencode(trim($province)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--postal_code--B--/i',urlencode(trim($postal_code)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--country_code--B--/i',urlencode(trim($country_code)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--gender--B--/i',urlencode(trim($gender)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--date_of_birth--B--/i',urlencode(trim($date_of_birth)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--alt_phone--B--/i',urlencode(trim($alt_phone)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--email--B--/i',urlencode(trim($email)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--security_phrase--B--/i',urlencode(trim($security_phrase)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--comments--B--/i',urlencode(trim($comments)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--user--B--/i',urlencode(trim($user)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--pass--B--/i',urlencode(trim($orig_pass)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--campaign--B--/i',urlencode(trim($campaign)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--phone_login--B--/i',urlencode(trim($phone_login)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--original_phone_login--B--/i',urlencode(trim($original_phone_login)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--phone_pass--B--/i',urlencode(trim($phone_pass)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--fronter--B--/i',urlencode(trim($fronter)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--closer--B--/i',urlencode(trim($closer)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--group--B--/i',urlencode(trim($VDADchannel_group)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--channel_group--B--/i',urlencode(trim($VDADchannel_group)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--SQLdate--B--/i',urlencode(trim($SQLdate)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--epoch--B--/i',urlencode(trim($epoch)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--uniqueid--B--/i',urlencode(trim($uniqueid)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--customer_zap_channel--B--/i',urlencode(trim($channel)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--customer_server_ip--B--/i',urlencode(trim($server_ip)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--server_ip--B--/i',urlencode(trim($server_ip)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--SIPexten--B--/i',urlencode(trim($exten)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--session_id--B--/i',urlencode(trim($conf_exten)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--phone--B--/i',urlencode(trim($phone_number)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--parked_by--B--/i',urlencode(trim($parked_by)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--dispo--B--/i',urlencode(trim($dispo)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--dialed_number--B--/i',urlencode(trim($agent_dialed_number)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--dialed_label--B--/i',urlencode(trim($agent_dialed_type)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--source_id--B--/i',urlencode(trim($source_id)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--rank--B--/i',urlencode(trim($rank)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--owner--B--/i',urlencode(trim($owner)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--camp_script--B--/i',urlencode(trim($camp_script)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--in_script--B--/i',urlencode(trim($VDCL_ingroup_script)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--fullname--B--/i',urlencode(trim($fullname)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--user_custom_one--B--/i',urlencode(trim($user_custom_one)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--user_custom_two--B--/i',urlencode(trim($user_custom_two)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--user_custom_three--B--/i',urlencode(trim($user_custom_three)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--user_custom_four--B--/i',urlencode(trim($user_custom_four)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--user_custom_five--B--/i',urlencode(trim($user_custom_five)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--talk_time--B--/i',"0",$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--talk_time_min--B--/i',"0",$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--entry_list_id--B--/i',urlencode(trim($entry_list_id)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--closecallid--B--/i',urlencode(trim($INclosecallid)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--xfercallid--B--/i',urlencode(trim($INxfercallid)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--agent_log_id--B--/i',urlencode(trim($agent_log_id)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--call_id--B--/i',urlencode(trim($MqueryCID)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--user_group--B--/i',urlencode(trim($user_group)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--entry_date--B--/i',urlencode(trim($entry_date)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--agent_email--B--/i',urlencode(trim($agent_email)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--called_count--B--/i',urlencode(trim($called_count)),$VDCL_start_call_url);
if (strlen($custom_field_names)>2)
{
$custom_field_names = preg_replace("/^\||\|$/",'',$custom_field_names);
$custom_field_names = preg_replace("/\|/",",",$custom_field_names);
$custom_field_names_ARY = explode(',',$custom_field_names);
$custom_field_names_ct = count($custom_field_names_ARY);
$custom_field_names_SQL = $custom_field_names;
if (preg_match("/cf_encrypt/",$active_modules))
{
$enc_fields=0;
$stmt = "SELECT count(*) from vicidial_lists_fields where field_encrypt='Y' and list_id='$entry_list_id';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00663',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$enc_field_ct = mysqli_num_rows($rslt);
if ($enc_field_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$enc_fields = $row[0];
}
if ($enc_fields > 0)
{
$stmt = "SELECT field_label from vicidial_lists_fields where field_encrypt='Y' and list_id='$entry_list_id';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00664',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$enc_field_ct = mysqli_num_rows($rslt);
$r=0;
while ($enc_field_ct > $r)
{
$row=mysqli_fetch_row($rslt);
$encrypt_list .= "$row[0],";
$r++;
}
$encrypt_list = ",$encrypt_list";
}
}
##### BEGIN grab the data from custom table for the lead_id
$stmt="SELECT $custom_field_names_SQL FROM custom_$entry_list_id where lead_id='$lead_id' LIMIT 1;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00665',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$list_lead_ct = mysqli_num_rows($rslt);
if ($list_lead_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$o=0;
while ($custom_field_names_ct > $o)
{
$field_name_id = $custom_field_names_ARY[$o];
$field_name_tag = "--A--" . $field_name_id . "--B--";
if ($enc_fields > 0)
{
$field_enc=''; $field_enc_all='';
if ($DB) {echo "|$column_list|$encrypt_list|\n";}
if ( (preg_match("/,$field_name_id,/",$encrypt_list)) and (strlen($row[$o]) > 0) )
{
exec("../agc/aes.pl --decrypt --text=$row[$o]", $field_enc);
$field_enc_ct = count($field_enc);
$k=0;
while ($field_enc_ct > $k)
{
$field_enc_all .= $field_enc[$k];
$k++;
}
$field_enc_all = preg_replace("/CRYPT: |\n|\r|\t/",'',$field_enc_all);
$row[$o] = base64_decode($field_enc_all);
}
}
$form_field_value = urlencode(trim("$row[$o]"));
$VDCL_start_call_url = preg_replace("/$field_name_tag/i","$form_field_value",$VDCL_start_call_url);
$o++;
}
}
}
$stmt="UPDATE vicidial_log_extended set start_url_processed='Y' where uniqueid='$uniqueid';";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00666',$user,$server_ip,$session_name,$one_mysql_log);}
$vle_update = mysqli_affected_rows($link);
### insert a new url log entry
$SQL_log = "$VDCL_start_call_url";
$SQL_log = preg_replace('/;/','',$SQL_log);
$SQL_log = addslashes($SQL_log);
$stmt = "INSERT INTO vicidial_url_log SET uniqueid='$uniqueid',url_date='$NOW_TIME',url_type='start',url='$SQL_log',url_response='';";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00667',$user,$server_ip,$session_name,$one_mysql_log);}
$affected_rows = mysqli_affected_rows($link);
$url_id = mysqli_insert_id($link);
$URLstart_sec = date("U");
### grab the call_start_url ###
if ($DB > 0) {echo "$VDCL_start_call_url<BR>\n";}
$SCUfile = file("$VDCL_start_call_url");
if ( !($SCUfile) )
{
$error_array = error_get_last();
$error_type = $error_array["type"];
$error_message = $error_array["message"];
$error_line = $error_array["line"];
$error_file = $error_array["file"];
}
if ($DB > 0) {echo "$SCUfile[0]<BR>\n";}
### update url log entry
$URLend_sec = date("U");
$URLdiff_sec = ($URLend_sec - $URLstart_sec);
if ($SCUfile)
{
$SCUfile_contents = implode("", $SCUfile);
$SCUfile_contents = ereg_replace(';','',$SCUfile_contents);
$SCUfile_contents = addslashes($SCUfile_contents);
}
else
{
$SCUfile_contents = "PHP ERROR: Type=$error_type - Message=$error_message - Line=$error_line - File=$error_file";
}
$stmt = "UPDATE vicidial_url_log SET response_sec='$URLdiff_sec',url_response='$SCUfile_contents' where url_log_id='$url_id';";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00668',$user,$server_ip,$session_name,$one_mysql_log);}
$affected_rows = mysqli_affected_rows($link);
$stage .= "|SCU|$URLdiff_sec";
##### BEGIN special filtering and response for Vtiger account balance function #####
# http://vtiger/vicidial/api.php?mode=callxfer&contactwsid=--A--vendor_lead_code--B--&minuteswarning=3
$stmt = "SELECT enable_vtiger_integration FROM system_settings;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00669',$user,$server_ip,$session_name,$one_mysql_log);}
$ss_conf_ct = mysqli_num_rows($rslt);
if ($ss_conf_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$enable_vtiger_integration = $row[0];
}
if ( ( ($enable_vtiger_integration > 0) and (preg_match('/callxfer/',$VDCL_start_call_url)) and (preg_match('/contactwsid/',$VDCL_start_call_url)) ) or (preg_match("/minuteswarning/",$VDCL_start_call_url)) )
{
$SCUoutput='';
foreach ($SCUfile as $SCUline)
{$SCUoutput .= "$SCUline";}
# {"result":true,"durationLimit":3071}
if ( (strlen($SCUoutput) > 4) or (preg_match("/minuteswarning/",$VDCL_start_call_url)) )
{
$minuteswarning=3; # default to 3
if (preg_match("/minuteswarning/",$VDCL_start_call_url))
{
$minuteswarningARY = explode('minuteswarning=',$VDCL_start_call_url);
$minuteswarning = preg_replace('/&.*/','',$minuteswarningARY[1]);
}
### add this to the Start Call URL for callcard calls to be logged "&minuteswarning=1&callcard=1"
if (preg_match("/callcard=/",$VDCL_start_call_url))
{
$stmt="SELECT balance_minutes_start FROM callcard_log where uniqueid='$uniqueid' order by call_time desc LIMIT 1;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00670',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$bms_ct = mysqli_num_rows($rslt);
if ($bms_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$durationLimit = $row[0];
$stmt="UPDATE callcard_log set agent_time='$NOW_TIME',agent='$user' where uniqueid='$uniqueid' order by call_time desc LIMIT 1;";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00671',$user,$server_ip,$session_name,$one_mysql_log);}
$ccl_update = mysqli_affected_rows($link);
}
}
else
{
$SCUresponse = explode('durationLimit',$SCUoutput);
$durationLimit = preg_replace('/\D/','',$SCUresponse[1]);
}
if (strlen($durationLimit) < 1) {$durationLimit = 0;}
$durationLimitSECnext = ( ($minuteswarning + 0) * 60);
$durationLimitSEC = ( ( ($durationLimit + 0) - $minuteswarning) * 60); # minutes - 3 for 3-minute-warning
if ($durationLimitSEC < 5) {$durationLimitSEC = 5;}
if ( ($durationLimitSECnext < 30) or (strlen($durationLimitSECnext)<1) ) {$durationLimitSECnext = 30;}
$timer_action_destination='';
if (preg_match("/nextstep=/",$VDCL_start_call_url))
{
$nextstepARY = explode('nextstep=',$VDCL_start_call_url);
$nextstep = preg_replace("/&.*/",'',$nextstepARY[1]);
$nextmessageARY = explode('nextmessage=',$VDCL_start_call_url);
$nextmessage = preg_replace("/&.*/",'',$nextmessageARY[1]);
$destinationARY = explode('destination=',$VDCL_start_call_url);
$destination = preg_replace("/&.*/",'',$destinationARY[1]);
$timer_action_destination = "nextstep---$nextstep--$durationLimitSECnext--$destination--$nextmessage--";
}
$stmt="UPDATE vicidial_live_agents set external_timer_action='D1_DIAL',external_timer_action_message='$minuteswarning minute warning for customer',external_timer_action_seconds='$durationLimitSEC',external_timer_action_destination='$timer_action_destination' where user='$user';";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00672',$user,$server_ip,$session_name,$one_mysql_log);}
$vla_update_timer = mysqli_affected_rows($link);
$fp = fopen ("./call_url_log.txt", "a");
fwrite ($fp, "$VDCL_start_call_url\n$SCUoutput\n$durationLimit|$durationLimitSEC|$vla_update_timer|$minuteswarning|$uniqueid|\n");
fclose($fp);
}
}
##### END special filtering and response for Vtiger account balance function #####
}
### END start_call_url processing ###
}
##### END if NOT preview dialing, send the call #####
@@ -4515,7 +4833,7 @@ if ($ACTION == 'manDiaLnextCaLL')
echo "HOPPER EMPTY\n";
}
}
$stage .= "|$agent_log_id|$vla_status|";
$stage .= "|$agent_log_id|$vla_status|$agent_dialed_type|$agent_dialed_number|";
}
@@ -4687,7 +5005,7 @@ if ($ACTION == 'manDiaLonly')
### check for manual dial filter and extension append settings in campaign
$use_eac=0;
$use_custom_cid=0;
$stmt = "SELECT manual_dial_filter,use_internal_dnc,use_campaign_dnc,use_other_campaign_dnc,extension_appended_cidname FROM vicidial_campaigns where campaign_id='$campaign';";
$stmt = "SELECT manual_dial_filter,use_internal_dnc,use_campaign_dnc,use_other_campaign_dnc,extension_appended_cidname,start_call_url FROM vicidial_campaigns where campaign_id='$campaign';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00325',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
@@ -4700,6 +5018,7 @@ if ($ACTION == 'manDiaLonly')
$use_campaign_dnc = $row[2];
$use_other_campaign_dnc = $row[3];
$extension_appended_cidname = $row[4];
$start_call_url = $row[5];
if ($extension_appended_cidname == 'Y')
{$use_eac++;}
}
@@ -5268,6 +5587,369 @@ if ($ACTION == 'manDiaLonly')
fwrite ($fp, "$NOW_TIME|$campaign|$lead_id|$phone_number|$user|M|$MqueryCID||$province\n");
fclose($fp);
}
### BEGIN start_call_url processing ###
$VDCL_start_call_url = $start_call_url;
### Issue Start Call URL if defined
if (strlen($VDCL_start_call_url) > 7)
{
if (preg_match('/--A--user_custom_/i',$VDCL_start_call_url))
{
$stmt = "SELECT custom_one,custom_two,custom_three,custom_four,custom_five from vicidial_users where user='$user';";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00673',$user,$server_ip,$session_name,$one_mysql_log);}
$VUC_ct = mysqli_num_rows($rslt);
if ($VUC_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$user_custom_one = urlencode(trim($row[0]));
$user_custom_two = urlencode(trim($row[1]));
$user_custom_three = urlencode(trim($row[2]));
$user_custom_four = urlencode(trim($row[3]));
$user_custom_five = urlencode(trim($row[4]));
}
}
##### grab the data from vicidial_list for the lead_id
$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='$lead_id' LIMIT 1;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00674',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$list_lead_ct = mysqli_num_rows($rslt);
if ($list_lead_ct > 0)
{
$row=mysqli_fetch_row($rslt);
# $lead_id = trim("$row[0]");
$entry_date = trim("$row[1]");
$dispo = trim("$row[3]");
$tsr = trim("$row[4]");
$vendor_id = trim("$row[5]");
$source_id = trim("$row[6]");
$list_id = trim("$row[7]");
$lead_list_id = trim("$row[7]");
$gmt_offset_now = trim("$row[8]");
$called_since_last_reset = trim("$row[9]");
$phone_code = trim("$row[10]");
if ($override_phone < 1)
{$phone_number = trim("$row[11]");}
$title = trim("$row[12]");
$first_name = trim("$row[13]");
$middle_initial = trim("$row[14]");
$last_name = trim("$row[15]");
$address1 = trim("$row[16]");
$address2 = trim("$row[17]");
$address3 = trim("$row[18]");
$city = trim("$row[19]");
$state = trim("$row[20]");
$province = trim("$row[21]");
$postal_code = trim("$row[22]");
$country_code = trim("$row[23]");
$gender = trim("$row[24]");
$date_of_birth = trim("$row[25]");
$alt_phone = trim("$row[26]");
$email = trim("$row[27]");
$security_phrase = trim("$row[28]");
$comments = stripslashes(trim("$row[29]"));
$called_count = trim("$row[30]");
$call_date = trim("$row[31]");
$rank = trim("$row[32]");
$owner = trim("$row[33]");
$entry_list_id = trim("$row[34]");
if ($entry_list_id < 100) {$entry_list_id = $list_id;}
}
$VDCL_start_call_url = preg_replace('/^VAR/','',$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--lead_id--B--/i',urlencode(trim($lead_id)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--vendor_id--B--/i',urlencode(trim($vendor_id)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--vendor_lead_code--B--/i',urlencode(trim($vendor_id)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--list_id--B--/i',urlencode(trim($list_id)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--list_name--B--/i',urlencode(trim($list_name)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--list_description--B--/i',urlencode(trim($list_description)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--gmt_offset_now--B--/i',urlencode(trim($gmt_offset_now)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--phone_code--B--/i',urlencode(trim($phone_code)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--phone_number--B--/i',urlencode(trim($phone_number)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--title--B--/i',urlencode(trim($title)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--first_name--B--/i',urlencode(trim($first_name)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--middle_initial--B--/i',urlencode(trim($middle_initial)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--last_name--B--/i',urlencode(trim($last_name)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--address1--B--/i',urlencode(trim($address1)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--address2--B--/i',urlencode(trim($address2)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--address3--B--/i',urlencode(trim($address3)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--city--B--/i',urlencode(trim($city)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--state--B--/i',urlencode(trim($state)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--province--B--/i',urlencode(trim($province)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--postal_code--B--/i',urlencode(trim($postal_code)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--country_code--B--/i',urlencode(trim($country_code)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--gender--B--/i',urlencode(trim($gender)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--date_of_birth--B--/i',urlencode(trim($date_of_birth)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--alt_phone--B--/i',urlencode(trim($alt_phone)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--email--B--/i',urlencode(trim($email)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--security_phrase--B--/i',urlencode(trim($security_phrase)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--comments--B--/i',urlencode(trim($comments)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--user--B--/i',urlencode(trim($user)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--pass--B--/i',urlencode(trim($orig_pass)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--campaign--B--/i',urlencode(trim($campaign)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--phone_login--B--/i',urlencode(trim($phone_login)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--original_phone_login--B--/i',urlencode(trim($original_phone_login)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--phone_pass--B--/i',urlencode(trim($phone_pass)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--fronter--B--/i',urlencode(trim($fronter)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--closer--B--/i',urlencode(trim($closer)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--group--B--/i',urlencode(trim($VDADchannel_group)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--channel_group--B--/i',urlencode(trim($VDADchannel_group)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--SQLdate--B--/i',urlencode(trim($SQLdate)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--epoch--B--/i',urlencode(trim($epoch)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--uniqueid--B--/i',urlencode(trim($uniqueid)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--customer_zap_channel--B--/i',urlencode(trim($channel)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--customer_server_ip--B--/i',urlencode(trim($server_ip)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--server_ip--B--/i',urlencode(trim($server_ip)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--SIPexten--B--/i',urlencode(trim($exten)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--session_id--B--/i',urlencode(trim($conf_exten)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--phone--B--/i',urlencode(trim($phone_number)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--parked_by--B--/i',urlencode(trim($parked_by)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--dispo--B--/i',urlencode(trim($dispo)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--dialed_number--B--/i',urlencode(trim($agent_dialed_number)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--dialed_label--B--/i',urlencode(trim($agent_dialed_type)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--source_id--B--/i',urlencode(trim($source_id)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--rank--B--/i',urlencode(trim($rank)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--owner--B--/i',urlencode(trim($owner)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--camp_script--B--/i',urlencode(trim($camp_script)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--in_script--B--/i',urlencode(trim($VDCL_ingroup_script)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--fullname--B--/i',urlencode(trim($fullname)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--user_custom_one--B--/i',urlencode(trim($user_custom_one)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--user_custom_two--B--/i',urlencode(trim($user_custom_two)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--user_custom_three--B--/i',urlencode(trim($user_custom_three)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--user_custom_four--B--/i',urlencode(trim($user_custom_four)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--user_custom_five--B--/i',urlencode(trim($user_custom_five)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--talk_time--B--/i',"0",$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--talk_time_min--B--/i',"0",$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--entry_list_id--B--/i',urlencode(trim($entry_list_id)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--closecallid--B--/i',urlencode(trim($INclosecallid)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--xfercallid--B--/i',urlencode(trim($INxfercallid)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--agent_log_id--B--/i',urlencode(trim($agent_log_id)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--call_id--B--/i',urlencode(trim($MqueryCID)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--user_group--B--/i',urlencode(trim($user_group)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--entry_date--B--/i',urlencode(trim($entry_date)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--agent_email--B--/i',urlencode(trim($agent_email)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--called_count--B--/i',urlencode(trim($called_count)),$VDCL_start_call_url);
if (strlen($custom_field_names)>2)
{
$custom_field_names = preg_replace("/^\||\|$/",'',$custom_field_names);
$custom_field_names = preg_replace("/\|/",",",$custom_field_names);
$custom_field_names_ARY = explode(',',$custom_field_names);
$custom_field_names_ct = count($custom_field_names_ARY);
$custom_field_names_SQL = $custom_field_names;
if (preg_match("/cf_encrypt/",$active_modules))
{
$enc_fields=0;
$stmt = "SELECT count(*) from vicidial_lists_fields where field_encrypt='Y' and list_id='$entry_list_id';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00675',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$enc_field_ct = mysqli_num_rows($rslt);
if ($enc_field_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$enc_fields = $row[0];
}
if ($enc_fields > 0)
{
$stmt = "SELECT field_label from vicidial_lists_fields where field_encrypt='Y' and list_id='$entry_list_id';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00676',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$enc_field_ct = mysqli_num_rows($rslt);
$r=0;
while ($enc_field_ct > $r)
{
$row=mysqli_fetch_row($rslt);
$encrypt_list .= "$row[0],";
$r++;
}
$encrypt_list = ",$encrypt_list";
}
}
##### BEGIN grab the data from custom table for the lead_id
$stmt="SELECT $custom_field_names_SQL FROM custom_$entry_list_id where lead_id='$lead_id' LIMIT 1;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00677',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$list_lead_ct = mysqli_num_rows($rslt);
if ($list_lead_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$o=0;
while ($custom_field_names_ct > $o)
{
$field_name_id = $custom_field_names_ARY[$o];
$field_name_tag = "--A--" . $field_name_id . "--B--";
if ($enc_fields > 0)
{
$field_enc=''; $field_enc_all='';
if ($DB) {echo "|$column_list|$encrypt_list|\n";}
if ( (preg_match("/,$field_name_id,/",$encrypt_list)) and (strlen($row[$o]) > 0) )
{
exec("../agc/aes.pl --decrypt --text=$row[$o]", $field_enc);
$field_enc_ct = count($field_enc);
$k=0;
while ($field_enc_ct > $k)
{
$field_enc_all .= $field_enc[$k];
$k++;
}
$field_enc_all = preg_replace("/CRYPT: |\n|\r|\t/",'',$field_enc_all);
$row[$o] = base64_decode($field_enc_all);
}
}
$form_field_value = urlencode(trim("$row[$o]"));
$VDCL_start_call_url = preg_replace("/$field_name_tag/i","$form_field_value",$VDCL_start_call_url);
$o++;
}
}
}
$stmt="UPDATE vicidial_log_extended set start_url_processed='Y' where uniqueid='$uniqueid';";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00678',$user,$server_ip,$session_name,$one_mysql_log);}
$vle_update = mysqli_affected_rows($link);
### insert a new url log entry
$SQL_log = "$VDCL_start_call_url";
$SQL_log = preg_replace('/;/','',$SQL_log);
$SQL_log = addslashes($SQL_log);
$stmt = "INSERT INTO vicidial_url_log SET uniqueid='$uniqueid',url_date='$NOW_TIME',url_type='start',url='$SQL_log',url_response='';";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00679',$user,$server_ip,$session_name,$one_mysql_log);}
$affected_rows = mysqli_affected_rows($link);
$url_id = mysqli_insert_id($link);
$URLstart_sec = date("U");
### grab the call_start_url ###
if ($DB > 0) {echo "$VDCL_start_call_url<BR>\n";}
$SCUfile = file("$VDCL_start_call_url");
if ( !($SCUfile) )
{
$error_array = error_get_last();
$error_type = $error_array["type"];
$error_message = $error_array["message"];
$error_line = $error_array["line"];
$error_file = $error_array["file"];
}
if ($DB > 0) {echo "$SCUfile[0]<BR>\n";}
### update url log entry
$URLend_sec = date("U");
$URLdiff_sec = ($URLend_sec - $URLstart_sec);
if ($SCUfile)
{
$SCUfile_contents = implode("", $SCUfile);
$SCUfile_contents = ereg_replace(';','',$SCUfile_contents);
$SCUfile_contents = addslashes($SCUfile_contents);
}
else
{
$SCUfile_contents = "PHP ERROR: Type=$error_type - Message=$error_message - Line=$error_line - File=$error_file";
}
$stmt = "UPDATE vicidial_url_log SET response_sec='$URLdiff_sec',url_response='$SCUfile_contents' where url_log_id='$url_id';";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00680',$user,$server_ip,$session_name,$one_mysql_log);}
$affected_rows = mysqli_affected_rows($link);
$stage .= "|SCU|$URLdiff_sec";
##### BEGIN special filtering and response for Vtiger account balance function #####
# http://vtiger/vicidial/api.php?mode=callxfer&contactwsid=--A--vendor_lead_code--B--&minuteswarning=3
$stmt = "SELECT enable_vtiger_integration FROM system_settings;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00681',$user,$server_ip,$session_name,$one_mysql_log);}
$ss_conf_ct = mysqli_num_rows($rslt);
if ($ss_conf_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$enable_vtiger_integration = $row[0];
}
if ( ( ($enable_vtiger_integration > 0) and (preg_match('/callxfer/',$VDCL_start_call_url)) and (preg_match('/contactwsid/',$VDCL_start_call_url)) ) or (preg_match("/minuteswarning/",$VDCL_start_call_url)) )
{
$SCUoutput='';
foreach ($SCUfile as $SCUline)
{$SCUoutput .= "$SCUline";}
# {"result":true,"durationLimit":3071}
if ( (strlen($SCUoutput) > 4) or (preg_match("/minuteswarning/",$VDCL_start_call_url)) )
{
$minuteswarning=3; # default to 3
if (preg_match("/minuteswarning/",$VDCL_start_call_url))
{
$minuteswarningARY = explode('minuteswarning=',$VDCL_start_call_url);
$minuteswarning = preg_replace('/&.*/','',$minuteswarningARY[1]);
}
### add this to the Start Call URL for callcard calls to be logged "&minuteswarning=1&callcard=1"
if (preg_match("/callcard=/",$VDCL_start_call_url))
{
$stmt="SELECT balance_minutes_start FROM callcard_log where uniqueid='$uniqueid' order by call_time desc LIMIT 1;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00682',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$bms_ct = mysqli_num_rows($rslt);
if ($bms_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$durationLimit = $row[0];
$stmt="UPDATE callcard_log set agent_time='$NOW_TIME',agent='$user' where uniqueid='$uniqueid' order by call_time desc LIMIT 1;";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00683',$user,$server_ip,$session_name,$one_mysql_log);}
$ccl_update = mysqli_affected_rows($link);
}
}
else
{
$SCUresponse = explode('durationLimit',$SCUoutput);
$durationLimit = preg_replace('/\D/','',$SCUresponse[1]);
}
if (strlen($durationLimit) < 1) {$durationLimit = 0;}
$durationLimitSECnext = ( ($minuteswarning + 0) * 60);
$durationLimitSEC = ( ( ($durationLimit + 0) - $minuteswarning) * 60); # minutes - 3 for 3-minute-warning
if ($durationLimitSEC < 5) {$durationLimitSEC = 5;}
if ( ($durationLimitSECnext < 30) or (strlen($durationLimitSECnext)<1) ) {$durationLimitSECnext = 30;}
$timer_action_destination='';
if (preg_match("/nextstep=/",$VDCL_start_call_url))
{
$nextstepARY = explode('nextstep=',$VDCL_start_call_url);
$nextstep = preg_replace("/&.*/",'',$nextstepARY[1]);
$nextmessageARY = explode('nextmessage=',$VDCL_start_call_url);
$nextmessage = preg_replace("/&.*/",'',$nextmessageARY[1]);
$destinationARY = explode('destination=',$VDCL_start_call_url);
$destination = preg_replace("/&.*/",'',$destinationARY[1]);
$timer_action_destination = "nextstep---$nextstep--$durationLimitSECnext--$destination--$nextmessage--";
}
$stmt="UPDATE vicidial_live_agents set external_timer_action='D1_DIAL',external_timer_action_message='$minuteswarning minute warning for customer',external_timer_action_seconds='$durationLimitSEC',external_timer_action_destination='$timer_action_destination' where user='$user';";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00684',$user,$server_ip,$session_name,$one_mysql_log);}
$vla_update_timer = mysqli_affected_rows($link);
$fp = fopen ("./call_url_log.txt", "a");
fwrite ($fp, "$VDCL_start_call_url\n$SCUoutput\n$durationLimit|$durationLimitSEC|$vla_update_timer|$minuteswarning|$uniqueid|\n");
fclose($fp);
}
}
##### END special filtering and response for Vtiger account balance function #####
}
### END start_call_url processing ###
$stage .= "|$agent_dialed_type|$agent_dialed_number|";
}
}
@@ -7955,6 +8637,7 @@ if ($ACTION == 'VDADcheckINCOMING')
$VDCL_start_call_url = preg_replace('/--A--did_custom_four--B--/i',urlencode(trim($DID_custom_four)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--did_custom_five--B--/i',urlencode(trim($DID_custom_five)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--agent_email--B--/i',urlencode(trim($agent_email)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--called_count--B--/i',urlencode(trim($called_count)),$VDCL_start_call_url);
if (strlen($custom_field_names)>2)
{
@@ -9190,6 +9873,7 @@ if ($ACTION == 'VDADcheckINCOMINGother')
$VDCL_start_call_url = preg_replace('/--A--did_custom_four--B--/i',urlencode(trim($DID_custom_four)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--did_custom_five--B--/i',urlencode(trim($DID_custom_five)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--agent_email--B--/i',urlencode(trim($agent_email)),$VDCL_start_call_url);
$VDCL_start_call_url = preg_replace('/--A--called_count--B--/i',urlencode(trim($called_count)),$VDCL_start_call_url);
if (strlen($custom_field_names)>2)
{
+36 -46
View File
@@ -29,6 +29,7 @@
# 161102-0039 - Patched sec_convert function to display hours
# 170227-2230 - Change to allow horizontal_bar_chart header to be translated, issue #991
# 170409-1003 - Added IP List features to user_authorization
# 170503-2130 - Patched sec_convert to fix rounding time bug, issue #1011
#
##### BEGIN validate user login credentials, check for failed lock out #####
@@ -225,57 +226,46 @@ function sec_convert($sec,$precision)
{
if ($precision == 'HF' || $precision == 'H')
{return "0:00:00";}
elseif ($precision == 'S')
{return "0";}
else
{
if ($precision == 'S')
{return "0";}
else
{return "0:00";}
}
{return "0:00";}
}
if ($precision == 'HF')
{$precision='H';}
else
{
if ($precision == 'HF')
{$precision='H';}
else
{
# if ( ($sec < 3600) and ($precision != 'S') ) {$precision='M';}
}
if ($precision == 'H')
{
$Fhours_H = MathZDC($sec, 3600);
$Fhours_H_int = floor($Fhours_H);
$Fhours_H_int = intval("$Fhours_H_int");
$Fhours_M = ($Fhours_H - $Fhours_H_int);
$Fhours_M = ($Fhours_M * 60);
$Fhours_M_int = floor($Fhours_M);
$Fhours_M_int = intval("$Fhours_M_int");
$Fhours_S = ($Fhours_M - $Fhours_M_int);
$Fhours_S = ($Fhours_S * 60);
$Fhours_S = round($Fhours_S, 0);
if ($Fhours_S < 10) {$Fhours_S = "0$Fhours_S";}
if ($Fhours_M_int < 10) {$Fhours_M_int = "0$Fhours_M_int";}
$Ftime = "$Fhours_H_int:$Fhours_M_int:$Fhours_S";
}
if ($precision == 'M')
{
$Fminutes_M = MathZDC($sec, 60);
$Fminutes_M_int = floor($Fminutes_M);
$Fminutes_M_int = intval("$Fminutes_M_int");
$Fminutes_S = ($Fminutes_M - $Fminutes_M_int);
$Fminutes_S = ($Fminutes_S * 60);
$Fminutes_S = round($Fminutes_S, 0);
if ($Fminutes_S < 10) {$Fminutes_S = "0$Fminutes_S";}
$Ftime = "$Fminutes_M_int:$Fminutes_S";
}
if ($precision == 'S')
{
$Ftime = $sec;
}
return "$Ftime";
# if ( ($sec < 3600) and ($precision != 'S') ) {$precision='M';}
}
if ($precision == 'H')
{
$hours = floor($sec / 3600);
$hours_sec = $hours * 3600;
$seconds = $sec - $hours_sec;
$minutes = floor($seconds / 60);
$seconds -= ($minutes * 60);
$Ftime = sprintf('%s:%s:%s',
$hours,
str_pad($minutes,2,'0',STR_PAD_LEFT),
str_pad($seconds,2,'0',STR_PAD_LEFT)
);
}
elseif ($precision == 'M')
{
$minutes = floor($sec / 60);
$seconds = $sec - ($minutes * 60);
$Ftime = sprintf('%s:%s',
$minutes,
str_pad($seconds,2,'0',STR_PAD_LEFT)
);
}
else
{
$Ftime = $sec;
}
return "$Ftime";
}
##### END reformat seconds into HH:MM:SS or MM:SS #####
+1 -1
View File
@@ -1995,7 +1995,7 @@ if ($SSqc_features_active > 0)
<BR>
<A NAME="campaigns-start_call_url">
<BR>
<B><?php echo _QXZ("Start Call URL"); ?> -</B><?php echo _QXZ("This web URL address is not seen by the agent, but it is called every time a call is sent to an agent if it is populated. Uses the same variables as the web form fields and scripts. This URL can NOT be a relative path. The Start URL does not work for Manual dial calls. Default is blank."); ?>
<B><?php echo _QXZ("Start Call URL"); ?> -</B><?php echo _QXZ("This web URL address is not seen by the agent, but it is called every time a call is sent to an agent if it is populated. Uses the same variables as the web form fields and scripts. This URL can NOT be a relative path. For Manual dial calls, the Start Call URL will be sent when the call is placed. Default is blank."); ?>
<BR>
<A NAME="campaigns-dispo_call_url">