diff --git a/agc_2-X/trunk/UPGRADE b/agc_2-X/trunk/UPGRADE
index e4b4de03..ab454f5d 100644
--- a/agc_2-X/trunk/UPGRADE
+++ b/agc_2-X/trunk/UPGRADE
@@ -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
+
diff --git a/agc_2-X/trunk/www/agc/vdc_db_query.php b/agc_2-X/trunk/www/agc/vdc_db_query.php
index c74ed60e..20ff2204 100644
--- a/agc_2-X/trunk/www/agc/vdc_db_query.php
+++ b/agc_2-X/trunk/www/agc/vdc_db_query.php
@@ -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
\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]
\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
\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]
\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)
{
diff --git a/agc_2-X/trunk/www/vicidial/functions.php b/agc_2-X/trunk/www/vicidial/functions.php
index 471ec8c9..a8af978e 100644
--- a/agc_2-X/trunk/www/vicidial/functions.php
+++ b/agc_2-X/trunk/www/vicidial/functions.php
@@ -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 #####
diff --git a/agc_2-X/trunk/www/vicidial/help.php b/agc_2-X/trunk/www/vicidial/help.php
index 0e677114..5c383872 100644
--- a/agc_2-X/trunk/www/vicidial/help.php
+++ b/agc_2-X/trunk/www/vicidial/help.php
@@ -1995,7 +1995,7 @@ if ($SSqc_features_active > 0)
- -
+ -