Added CID Groups, allowing for groups of caller IDs to be defined by state

or areacode

git-svn-id: svn://192.168.202.10@2917 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
mattf
2018-02-15 18:26:33 +00:00
parent a1f899c404
commit 8ca0300241
13 changed files with 1336 additions and 314 deletions
+4
View File
@@ -272,6 +272,10 @@ OTHER CHANGES:
72. Added basic GDPR features for lead activity download and delete. Must enable
System setting and user permission to use.
73. Added CID Groups, allowing for groups of caller IDs to be defined by state
or areacode, and allowing a single CID Group to be set across multiple
campaigns.
+99 -39
View File
@@ -25,7 +25,7 @@
# It is good practice to keep this program running by placing the associated
# KEEPALIVE script running every minute to ensure this program is always running
#
# Copyright (C) 2017 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
# Copyright (C) 2018 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
#
# CHANGELOG:
# 50125-1201 - Changed dial timeout to 120 seconds from 180 seconds
@@ -126,6 +126,7 @@
# 170527-2347 - Fix for rare inbound logging issue #1017
# 170915-1817 - Added support for per server routing prefix needed for Asterisk 13+
# 180130-1346 - Added inbound_no_agents_no_dial campaign options
# 180214-1559 - Added CID Group functionality
#
### begin parsing run-time options ###
@@ -388,6 +389,7 @@ while($one_day_interval > 0)
@DBIPqueue_priority=@MT;
@DBIPdial_method=@MT;
@DBIPuse_custom_cid=@MT;
@DBIPcid_group_id=@MT;
@DBIPinbound_queue_no_dial=@MT;
@DBIPinbound_no_agents_no_dial=@MT;
@DBIPinbound_no_agents_no_dial_threshold=@MT;
@@ -636,7 +638,7 @@ while($one_day_interval > 0)
### grab the dial_level and multiply by active agents to get your goalcalls
$DBIPadlevel[$user_CIPct]=0;
$stmtA = "SELECT auto_dial_level,local_call_time,dial_timeout,dial_prefix,campaign_cid,active,campaign_vdad_exten,closer_campaigns,omit_phone_code,available_only_ratio_tally,auto_alt_dial,campaign_allow_inbound,queue_priority,dial_method,use_custom_cid,inbound_queue_no_dial,available_only_tally_threshold,available_only_tally_threshold_agents,dial_level_threshold,dial_level_threshold_agents,adaptive_dl_diff_target,dl_diff_target_method,inbound_no_agents_no_dial_container,inbound_no_agents_no_dial_threshold FROM vicidial_campaigns where campaign_id='$DBIPcampaign[$user_CIPct]'";
$stmtA = "SELECT auto_dial_level,local_call_time,dial_timeout,dial_prefix,campaign_cid,active,campaign_vdad_exten,closer_campaigns,omit_phone_code,available_only_ratio_tally,auto_alt_dial,campaign_allow_inbound,queue_priority,dial_method,use_custom_cid,inbound_queue_no_dial,available_only_tally_threshold,available_only_tally_threshold_agents,dial_level_threshold,dial_level_threshold_agents,adaptive_dl_diff_target,dl_diff_target_method,inbound_no_agents_no_dial_container,inbound_no_agents_no_dial_threshold,cid_group_id FROM vicidial_campaigns where campaign_id='$DBIPcampaign[$user_CIPct]'";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
@@ -671,6 +673,7 @@ while($one_day_interval > 0)
$DBIPdl_diff_target_method[$user_CIPct] = $aryA[21];
$DBIPinbound_no_agents_no_dial[$user_CIPct] = $aryA[22];
$DBIPinbound_no_agents_no_dial_threshold[$user_CIPct] = $aryA[23];
$DBIPcid_group_id[$user_CIPct] = $aryA[24];
if ($DBIPdl_diff_target_method[$user_CIPct] =~ /ADAPT_CALC_ONLY/)
{
@@ -1202,7 +1205,7 @@ while($one_day_interval > 0)
print "hopper row updated to INCALL: |$UQaffected_rows|$lead_id|\n";
### Gather lead data
$stmtA = "SELECT list_id,gmt_offset_now,called_since_last_reset,phone_code,phone_number,address3,alt_phone,called_count,security_phrase FROM vicidial_list where lead_id='$lead_id';";
$stmtA = "SELECT list_id,gmt_offset_now,called_since_last_reset,phone_code,phone_number,address3,alt_phone,called_count,security_phrase,state FROM vicidial_list where lead_id='$lead_id';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
@@ -1220,6 +1223,7 @@ while($one_day_interval > 0)
$alt_phone = $aryA[6];
$called_count = $aryA[7];
$security_phrase = $aryA[8];
$state = $aryA[9];
$rec_countCUSTDATA++;
$rec_count++;
@@ -1332,48 +1336,104 @@ while($one_day_interval > 0)
$VDAD_dial_exten = $routing_prefix . $VDAD_dial_exten;
}
if (length($DBIPcampaigncid[$user_CIPct]) > 6) {$CCID = "$DBIPcampaigncid[$user_CIPct]"; $CCID_on++;}
if (length($campaign_cid_override) > 6) {$CCID = "$campaign_cid_override"; $CCID_on++;}
if ($DBIPuse_custom_cid[$user_CIPct] =~ /Y/)
else
{
$temp_CID = $security_phrase;
$temp_CID =~ s/\D//gi;
if (length($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
}
if ($DBIPuse_custom_cid[$user_CIPct] =~ /AREACODE/)
{
$temp_CID='';
$temp_vcca='';
$temp_ac='';
$temp_ac_two = substr("$phone_number", 0, 2);
$temp_ac_three = substr("$phone_number", 0, 3);
$temp_ac_four = substr("$phone_number", 0, 4);
$temp_ac_five = substr("$phone_number", 0, 5);
$stmtA = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$DBIPcampaign[$user_CIPct]' and areacode IN('$temp_ac_two','$temp_ac_three','$temp_ac_four','$temp_ac_five') and active='Y' order by CAST(areacode as SIGNED INTEGER) asc, call_count_today desc limit 100000;";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$act=0;
while ($sthArows > $act)
if (length($DBIPcampaigncid[$user_CIPct]) > 6) {$CCID = "$DBIPcampaigncid[$user_CIPct]"; $CCID_on++;}
if ($DBIPuse_custom_cid[$user_CIPct] =~ /Y/)
{
@aryA = $sthA->fetchrow_array;
$temp_vcca = $aryA[0];
$temp_ac = $aryA[1];
$act++;
$temp_CID = $security_phrase;
$temp_CID =~ s/\D//gi;
if (length($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
}
if ($act > 0)
$CIDG_set=0;
if ($DBIPcid_group_id[$user_CIPct] !~ /\-\-\-DISABLED\-\-\-/)
{
$sthA->finish();
$stmtA="UPDATE vicidial_campaign_cid_areacodes set call_count_today=(call_count_today + 1) where campaign_id='$DBIPcampaign[$user_CIPct]' and areacode='$temp_ac' and outbound_cid='$temp_vcca';";
$affected_rows = $dbhA->do($stmtA);
$stmtA = "SELECT cid_group_type FROM vicidial_cid_groups where cid_group_id='$DBIPcid_group_id[$user_CIPct]';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
if ($sthArows > 0)
{
@aryA = $sthA->fetchrow_array;
$cid_group_type = $aryA[0];
$temp_CID='';
$temp_vcca='';
$temp_ac='';
if ($cid_group_type =~ /AREACODE/)
{
$temp_ac_two = substr("$phone_number", 0, 2);
$temp_ac_three = substr("$phone_number", 0, 3);
$temp_ac_four = substr("$phone_number", 0, 4);
$temp_ac_five = substr("$phone_number", 0, 5);
$stmtA = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$DBIPcid_group_id[$user_CIPct]' and areacode IN('$temp_ac_two','$temp_ac_three','$temp_ac_four','$temp_ac_five') and active='Y' order by CAST(areacode as SIGNED INTEGER) asc, call_count_today desc limit 100000;";
}
if ($cid_group_type =~ /STATE/)
{
$temp_state = $state;
$stmtA = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$DBIPcid_group_id[$user_CIPct]' and areacode IN('$temp_state') and active='Y' order by call_count_today desc limit 100000;";
} $temp_CID='';
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$act=0;
while ($sthArows > $act)
{
@aryA = $sthA->fetchrow_array;
$temp_vcca = $aryA[0];
$temp_ac = $aryA[1];
$act++;
}
if ($act > 0)
{
$sthA->finish();
$stmtA="UPDATE vicidial_campaign_cid_areacodes set call_count_today=(call_count_today + 1) where campaign_id='$DBIPcid_group_id[$user_CIPct]' and areacode='$temp_ac' and outbound_cid='$temp_vcca';";
$affected_rows = $dbhA->do($stmtA);
}
else
{$sthA->finish();}
$temp_CID = $temp_vcca;
$temp_CID =~ s/\D//gi;
if (length($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++; $CIDG_set++;}
}
}
if ( ($DBIPuse_custom_cid[$user_CIPct] =~ /AREACODE/) && ($CIDG_set < 1) )
{
$temp_CID='';
$temp_vcca='';
$temp_ac='';
$temp_ac_two = substr("$phone_number", 0, 2);
$temp_ac_three = substr("$phone_number", 0, 3);
$temp_ac_four = substr("$phone_number", 0, 4);
$temp_ac_five = substr("$phone_number", 0, 5);
$stmtA = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$DBIPcampaign[$user_CIPct]' and areacode IN('$temp_ac_two','$temp_ac_three','$temp_ac_four','$temp_ac_five') and active='Y' order by CAST(areacode as SIGNED INTEGER) asc, call_count_today desc limit 100000;";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$act=0;
while ($sthArows > $act)
{
@aryA = $sthA->fetchrow_array;
$temp_vcca = $aryA[0];
$temp_ac = $aryA[1];
$act++;
}
if ($act > 0)
{
$sthA->finish();
$stmtA="UPDATE vicidial_campaign_cid_areacodes set call_count_today=(call_count_today + 1) where campaign_id='$DBIPcampaign[$user_CIPct]' and areacode='$temp_ac' and outbound_cid='$temp_vcca';";
$affected_rows = $dbhA->do($stmtA);
}
else
{$sthA->finish();}
$temp_CID = $temp_vcca;
$temp_CID =~ s/\D//gi;
if (length($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
}
else
{$sthA->finish();}
$temp_CID = $temp_vcca;
$temp_CID =~ s/\D//gi;
if (length($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
}
if ($DBIPdialprefix[$user_CIPct] =~ /x/i) {$Local_out_prefix = '';}
+98 -38
View File
@@ -12,7 +12,7 @@
#
# Should only be run on one server in a multi-server Asterisk/VICIDIAL cluster
#
# Copyright (C) 2017 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
# Copyright (C) 2018 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
#
# CHANGELOG:
# 61115-1246 - First build, framework setup, non-functional
@@ -40,6 +40,7 @@
# 151006-0937 - Changed campaign_cid_areacodes to operate with 2-5 digit areacodes
# 170915-1915 - Added support for per server routing prefix needed for Asterisk 13+
# 171205-2022 - Fix for double-dialing issue on high-volume systems
# 180214-1558 - Added CID Group functionality
#
### begin parsing run-time options ###
@@ -252,6 +253,7 @@ while($one_day_interval > 0)
@DBIPserver_trunks_allowed=@MT;
@DBIPqueue_priority=@MT;
@DBIPuse_custom_cid=@MT;
@DBIPcid_group_id=@MT;
$active_line_counter=0;
$camp_counter=0;
@@ -339,7 +341,7 @@ while($one_day_interval > 0)
### grab the dial_level and multiply by active agents to get your goalcalls
$DBIPadlevel[$camp_CIPct]=0;
$stmtA = "SELECT dial_timeout,dial_prefix,campaign_cid,active,campaign_vdad_exten,omit_phone_code,auto_alt_dial,queue_priority,use_custom_cid FROM vicidial_campaigns where campaign_id='$DBfill_campaign[$camp_CIPct]';";
$stmtA = "SELECT dial_timeout,dial_prefix,campaign_cid,active,campaign_vdad_exten,omit_phone_code,auto_alt_dial,queue_priority,use_custom_cid,cid_group_id FROM vicidial_campaigns where campaign_id='$DBfill_campaign[$camp_CIPct]';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
@@ -357,6 +359,7 @@ while($one_day_interval > 0)
$DBIPautoaltdial[$camp_CIPct] = $aryA[6];
$DBIPqueue_priority[$camp_CIPct] = $aryA[7];
$DBIPuse_custom_cid[$camp_CIPct] = $aryA[8];
$DBIPcid_group_id[$camp_CIPct] = $aryA[9];
if ($omit_phone_code =~ /Y/) {$DBIPomitcode[$camp_CIPct] = 1;}
else {$DBIPomitcode[$camp_CIPct] = 0;}
@@ -636,7 +639,7 @@ while($one_day_interval > 0)
$UQaffected_rows = $dbhA->do($stmtA);
# print "hopper row updated to INCALL: |$UQaffected_rows|$lead_id|\n";
$stmtA = "SELECT list_id,gmt_offset_now,called_since_last_reset,phone_code,phone_number,address3,alt_phone,called_count,security_phrase FROM vicidial_list where lead_id='$lead_id';";
$stmtA = "SELECT list_id,gmt_offset_now,called_since_last_reset,phone_code,phone_number,address3,alt_phone,called_count,security_phrase,state FROM vicidial_list where lead_id='$lead_id';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
@@ -653,6 +656,7 @@ while($one_day_interval > 0)
$alt_phone = $aryA[6];
$called_count = $aryA[7];
$security_phrase = $aryA[8];
$state = $aryA[9];
$rec_countCUSTDATA++;
}
@@ -767,46 +771,102 @@ while($one_day_interval > 0)
if (length($DBIPcampaigncid[$camp_CIPct]) > 6) {$CCID = "$DBIPcampaigncid[$camp_CIPct]"; $CCID_on++;}
if (length($campaign_cid_override) > 6) {$CCID = "$campaign_cid_override"; $CCID_on++;}
if ($DBIPuse_custom_cid[$camp_CIPct] =~ /Y/)
else
{
$temp_CID = $security_phrase;
$temp_CID =~ s/\D//gi;
if (length($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
}
if ($DBIPuse_custom_cid[$camp_CIPct] =~ /AREACODE/)
{
$temp_CID='';
$temp_vcca='';
$temp_ac='';
$temp_ac_two = substr("$phone_number", 0, 2);
$temp_ac_three = substr("$phone_number", 0, 3);
$temp_ac_four = substr("$phone_number", 0, 4);
$temp_ac_five = substr("$phone_number", 0, 5);
$stmtA = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$DBfill_campaign[$camp_CIPct]' and areacode IN('$temp_ac_two','$temp_ac_three','$temp_ac_four','$temp_ac_five') and active='Y' order by CAST(areacode as SIGNED INTEGER) asc, call_count_today desc limit 100000;";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$act=0;
while ($sthArows > $act)
if ($DBIPuse_custom_cid[$camp_CIPct] =~ /Y/)
{
@aryA = $sthA->fetchrow_array;
$temp_vcca = $aryA[0];
$temp_ac = $aryA[1];
$act++;
$temp_CID = $security_phrase;
$temp_CID =~ s/\D//gi;
if (length($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
}
if ($act > 0)
$CIDG_set=0;
if ($DBIPcid_group_id[$camp_CIPct] !~ /\-\-\-DISABLED\-\-\-/)
{
$sthA->finish();
$stmtA="UPDATE vicidial_campaign_cid_areacodes set call_count_today=(call_count_today + 1) where campaign_id='$DBfill_campaign[$camp_CIPct]' and areacode='$temp_ac' and outbound_cid='$temp_vcca';";
$affected_rows = $dbhA->do($stmtA);
$stmtA = "SELECT cid_group_type FROM vicidial_cid_groups where cid_group_id='$DBIPcid_group_id[$camp_CIPct]';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
if ($sthArows > 0)
{
@aryA = $sthA->fetchrow_array;
$cid_group_type = $aryA[0];
$temp_CID='';
$temp_vcca='';
$temp_ac='';
if ($cid_group_type =~ /AREACODE/)
{
$temp_ac_two = substr("$phone_number", 0, 2);
$temp_ac_three = substr("$phone_number", 0, 3);
$temp_ac_four = substr("$phone_number", 0, 4);
$temp_ac_five = substr("$phone_number", 0, 5);
$stmtA = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$DBIPcid_group_id[$camp_CIPct]' and areacode IN('$temp_ac_two','$temp_ac_three','$temp_ac_four','$temp_ac_five') and active='Y' order by CAST(areacode as SIGNED INTEGER) asc, call_count_today desc limit 100000;";
}
if ($cid_group_type =~ /STATE/)
{
$temp_state = $state;
$stmtA = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$DBIPcid_group_id[$camp_CIPct]' and areacode IN('$temp_state') and active='Y' order by call_count_today desc limit 100000;";
}
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$act=0;
while ($sthArows > $act)
{
@aryA = $sthA->fetchrow_array;
$temp_vcca = $aryA[0];
$temp_ac = $aryA[1];
$act++;
}
if ($act > 0)
{
$sthA->finish();
$stmtA="UPDATE vicidial_campaign_cid_areacodes set call_count_today=(call_count_today + 1) where campaign_id='$DBIPcid_group_id[$camp_CIPct]' and areacode='$temp_ac' and outbound_cid='$temp_vcca';";
$affected_rows = $dbhA->do($stmtA);
}
else
{$sthA->finish();}
$temp_CID = $temp_vcca;
$temp_CID =~ s/\D//gi;
if (length($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++; $CIDG_set++;}
}
}
if ( ($DBIPuse_custom_cid[$camp_CIPct] =~ /AREACODE/) && ($CIDG_set < 1) )
{
$temp_CID='';
$temp_vcca='';
$temp_ac='';
$temp_ac_two = substr("$phone_number", 0, 2);
$temp_ac_three = substr("$phone_number", 0, 3);
$temp_ac_four = substr("$phone_number", 0, 4);
$temp_ac_five = substr("$phone_number", 0, 5);
$stmtA = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$DBfill_campaign[$camp_CIPct]' and areacode IN('$temp_ac_two','$temp_ac_three','$temp_ac_four','$temp_ac_five') and active='Y' order by CAST(areacode as SIGNED INTEGER) asc, call_count_today desc limit 100000;";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$act=0;
while ($sthArows > $act)
{
@aryA = $sthA->fetchrow_array;
$temp_vcca = $aryA[0];
$temp_ac = $aryA[1];
$act++;
}
if ($act > 0)
{
$sthA->finish();
$stmtA="UPDATE vicidial_campaign_cid_areacodes set call_count_today=(call_count_today + 1) where campaign_id='$DBfill_campaign[$camp_CIPct]' and areacode='$temp_ac' and outbound_cid='$temp_vcca';";
$affected_rows = $dbhA->do($stmtA);
}
else
{$sthA->finish();}
$temp_CID = $temp_vcca;
$temp_CID =~ s/\D//gi;
if (length($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
}
else
{$sthA->finish();}
$temp_CID = $temp_vcca;
$temp_CID =~ s/\D//gi;
if (length($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
}
if ($DBIPdialprefix[$camp_CIPct] =~ /x/i) {$Local_out_prefix = '';}
+11 -3
View File
@@ -996,7 +996,8 @@ manual_auto_next_options ENUM('DEFAULT','PAUSE_NO_COUNT') default 'DEFAULT',
agent_screen_time_display ENUM('DISABLED','ENABLED_BASIC','ENABLED_FULL','ENABLED_BILL_BREAK_LUNCH_COACH') default 'DISABLED',
next_dial_my_callbacks ENUM('DISABLED','ENABLED') default 'DISABLED',
inbound_no_agents_no_dial_container VARCHAR(40) default '---DISABLED---',
inbound_no_agents_no_dial_threshold SMALLINT(5) default '0'
inbound_no_agents_no_dial_threshold SMALLINT(5) default '0',
cid_group_id VARCHAR(20) default '---DISABLED---'
) ENGINE=MyISAM;
CREATE TABLE vicidial_lists (
@@ -2864,7 +2865,7 @@ index (call_date)
) ENGINE=MyISAM;
CREATE TABLE vicidial_campaign_cid_areacodes (
campaign_id VARCHAR(8) NOT NULL,
campaign_id VARCHAR(20) NOT NULL,
areacode VARCHAR(5) NOT NULL,
outbound_cid VARCHAR(20),
active ENUM('Y','N','') default '',
@@ -3893,6 +3894,13 @@ date_deleted DATETIME,
index (date_deleted)
) ENGINE=MyISAM;
CREATE TABLE vicidial_cid_groups (
cid_group_id VARCHAR(20) PRIMARY KEY NOT NULL,
cid_group_notes VARCHAR(255) default '',
cid_group_type ENUM('AREACODE','STATE') default 'AREACODE',
user_group VARCHAR(20) default '---ALL---'
) ENGINE=MyISAM CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE vicidial_email_list MODIFY message text character set utf8;
@@ -4177,4 +4185,4 @@ INSERT INTO vicidial_settings_containers(container_id,container_notes,container_
UPDATE system_settings set vdc_agent_api_active='1';
UPDATE system_settings SET db_schema_version='1535',db_schema_update_date=NOW(),reload_timestamp=NOW();
UPDATE system_settings SET db_schema_version='1536',db_schema_update_date=NOW(),reload_timestamp=NOW();
+13
View File
@@ -556,3 +556,16 @@ index (date_deleted)
) ENGINE=MyISAM;
UPDATE system_settings SET db_schema_version='1535',db_schema_update_date=NOW() where db_schema_version < 1535;
CREATE TABLE vicidial_cid_groups (
cid_group_id VARCHAR(20) PRIMARY KEY NOT NULL,
cid_group_notes VARCHAR(255) default '',
cid_group_type ENUM('AREACODE','STATE') default 'AREACODE',
user_group VARCHAR(20) default '---ALL---'
) ENGINE=MyISAM CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE vicidial_campaign_cid_areacodes MODIFY campaign_id VARCHAR(20) NOT NULL;
ALTER TABLE vicidial_campaigns ADD cid_group_id VARCHAR(20) default '---DISABLED---';
UPDATE system_settings SET db_schema_version='1536',db_schema_update_date=NOW() where db_schema_version < 1536;
+262 -138
View File
@@ -448,10 +448,11 @@
# 180204-1651 - Added update for inbound callback queue functionality
# 180210-0707 - Fix for callback list issue #1062
# 180212-0654 - Added callback_datetime as dispo call url variable
# 180214-1553 - Added CID Group functionality
#
$version = '2.14-342';
$build = '180212-0654';
$version = '2.14-343';
$build = '180214-1553';
$php_script = 'vdc_db_query.php';
$mel=1; # Mysql Error Log enabled = 1
$mysql_log_count=709;
@@ -4117,10 +4118,9 @@ if ($ACTION == 'manDiaLnextCaLL')
$Local_dial_timeout = ($Local_dial_timeout * 1000);
if (strlen($dial_prefix) > 0) {$Local_out_prefix = "$dial_prefix";}
if (strlen($campaign_cid) > 6) {$CCID = "$campaign_cid"; $CCID_on++;}
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,start_call_url,manual_dial_filter,use_internal_dnc,use_campaign_dnc,use_other_campaign_dnc FROM vicidial_campaigns where campaign_id='$campaign';";
$stmt = "SELECT use_custom_cid,manual_dial_hopper_check,start_call_url,manual_dial_filter,use_internal_dnc,use_campaign_dnc,use_other_campaign_dnc,cid_group_id 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";}
@@ -4135,6 +4135,7 @@ if ($ACTION == 'manDiaLnextCaLL')
$use_internal_dnc = $row[4];
$use_campaign_dnc = $row[5];
$use_other_campaign_dnc = $row[6];
$cid_group_id = $row[7];
}
if ($no_hopper_dialing_used > 0)
@@ -4218,64 +4219,126 @@ if ($ACTION == 'manDiaLnextCaLL')
}
}
if ($uccid_ct > 0)
if (strlen($campaign_cid_override) > 6) {$CCID = "$campaign_cid_override"; $CCID_on++;}
else
{
if ( (preg_match('/^USER_CUSTOM/', $use_custom_cid)) and ($cid_lock < 1) )
if ($uccid_ct > 0)
{
$temp_vu='';
$use_custom_cid=preg_replace('/^USER_/', "", $use_custom_cid);
$pattern=array('/1/', '/2/', '/3/', '/4/', '/5/');
$replace=array('one', 'two', 'three', 'four', 'five');
$use_custom_cid = strtolower(preg_replace($pattern,$replace, $use_custom_cid));
$stmt="select $use_custom_cid from vicidial_users where user='$user'";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00660',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$vu_ct = mysqli_num_rows($rslt);
$act=0;
while ($vu_ct > $act)
if ($use_custom_cid == 'Y')
{
$row=mysqli_fetch_row($rslt);
$temp_vu = $row[0];
$act++;
$temp_CID = preg_replace("/\D/",'',$security_phrase);
if (strlen($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
}
$temp_CID = preg_replace("/\D/",'',$temp_vu);
}
else if ( ($use_custom_cid == 'AREACODE') and ($cid_lock < 1) )
{
$temp_vcca='';
$temp_ac='';
$temp_ac_two = substr("$agent_dialed_number", 0, 2);
$temp_ac_three = substr("$agent_dialed_number", 0, 3);
$temp_ac_four = substr("$agent_dialed_number", 0, 4);
$temp_ac_five = substr("$agent_dialed_number", 0, 5);
$stmt = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$campaign' and areacode IN('$temp_ac_two','$temp_ac_three','$temp_ac_four','$temp_ac_five') and active='Y' order by CAST(areacode as SIGNED INTEGER) asc, call_count_today desc limit 100000;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00426',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$vcca_ct = mysqli_num_rows($rslt);
$act=0;
while ($vcca_ct > $act)
if ( (preg_match('/^USER_CUSTOM/', $use_custom_cid)) and ($cid_lock < 1) )
{
$row=mysqli_fetch_row($rslt);
$temp_vcca = $row[0];
$temp_ac = $row[1];
$act++;
}
if ($act > 0)
{
$stmt="UPDATE vicidial_campaign_cid_areacodes set call_count_today=(call_count_today + 1) where campaign_id='$campaign' and areacode='$temp_ac' and outbound_cid='$temp_vcca';";
if ($format=='debug') {echo "\n<!-- $stmt -->";}
$temp_vu='';
$use_custom_cid=preg_replace('/^USER_/', "", $use_custom_cid);
$pattern=array('/1/', '/2/', '/3/', '/4/', '/5/');
$replace=array('one', 'two', 'three', 'four', 'five');
$use_custom_cid = strtolower(preg_replace($pattern,$replace, $use_custom_cid));
$stmt="select $use_custom_cid from vicidial_users where user='$user'";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00427',$user,$server_ip,$session_name,$one_mysql_log);}
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00660',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$vu_ct = mysqli_num_rows($rslt);
$act=0;
while ($vu_ct > $act)
{
$row=mysqli_fetch_row($rslt);
$temp_vu = $row[0];
$act++;
}
$temp_CID = preg_replace("/\D/",'',$temp_vu);
if (strlen($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
}
$CIDG_set=0;
if ( ($cid_group_id != '---DISABLED---') and ($cid_lock < 1) )
{
$stmt = "SELECT cid_group_type FROM vicidial_cid_groups where cid_group_id='$cid_group_id';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$cidg_ct = mysqli_num_rows($rslt);
if ($cidg_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$cid_group_type = $row[0];
$temp_vcca='';
$temp_ac='';
$temp_CID = preg_replace("/\D/",'',$temp_vcca);
if ($cid_group_type == 'AREACODE')
{
$temp_ac_two = substr("$agent_dialed_number", 0, 2);
$temp_ac_three = substr("$agent_dialed_number", 0, 3);
$temp_ac_four = substr("$agent_dialed_number", 0, 4);
$temp_ac_five = substr("$agent_dialed_number", 0, 5);
$stmt = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$cid_group_id' and areacode IN('$temp_ac_two','$temp_ac_three','$temp_ac_four','$temp_ac_five') and active='Y' order by CAST(areacode as SIGNED INTEGER) asc, call_count_today desc limit 100000;";
}
if ($cid_group_type == 'STATE')
{
$temp_state = $state;
$stmt = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$cid_group_id' and areacode IN('$temp_state') and active='Y' order by call_count_today desc limit 100000;";
}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$vcca_ct = mysqli_num_rows($rslt);
$act=0;
while ($vcca_ct > $act)
{
$row=mysqli_fetch_row($rslt);
$temp_vcca = $row[0];
$temp_ac = $row[1];
$act++;
}
if ($act > 0)
{
$stmt="UPDATE vicidial_campaign_cid_areacodes set call_count_today=(call_count_today + 1) where campaign_id='$cid_group_id' and areacode='$temp_ac' and outbound_cid='$temp_vcca';";
if ($format=='debug') {echo "\n<!-- $stmt -->";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
}
}
$temp_CID = preg_replace("/\D/",'',$temp_vcca);
if (strlen($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++; $CIDG_set++;}
}
if ( ($use_custom_cid == 'AREACODE') and ($cid_lock < 1) and ($CIDG_set < 1) )
{
$temp_vcca='';
$temp_ac='';
$temp_ac_two = substr("$agent_dialed_number", 0, 2);
$temp_ac_three = substr("$agent_dialed_number", 0, 3);
$temp_ac_four = substr("$agent_dialed_number", 0, 4);
$temp_ac_five = substr("$agent_dialed_number", 0, 5);
$stmt = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$campaign' and areacode IN('$temp_ac_two','$temp_ac_three','$temp_ac_four','$temp_ac_five') and active='Y' order by CAST(areacode as SIGNED INTEGER) asc, call_count_today desc limit 100000;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00426',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$vcca_ct = mysqli_num_rows($rslt);
$act=0;
while ($vcca_ct > $act)
{
$row=mysqli_fetch_row($rslt);
$temp_vcca = $row[0];
$temp_ac = $row[1];
$act++;
}
if ($act > 0)
{
$stmt="UPDATE vicidial_campaign_cid_areacodes set call_count_today=(call_count_today + 1) where campaign_id='$campaign' and areacode='$temp_ac' and outbound_cid='$temp_vcca';";
if ($format=='debug') {echo "\n<!-- $stmt -->";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00427',$user,$server_ip,$session_name,$one_mysql_log);}
}
$temp_CID = preg_replace("/\D/",'',$temp_vcca);
if (strlen($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
}
}
if ($use_custom_cid == 'Y')
{$temp_CID = preg_replace("/\D/",'',$security_phrase);}
if (strlen($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
}
if (preg_match("/x/i",$dial_prefix)) {$Local_out_prefix = '';}
@@ -5491,103 +5554,164 @@ if ($ACTION == 'manDiaLonly')
}
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';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00314',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$uccid_ct = mysqli_num_rows($rslt);
if ($uccid_ct > 0)
else
{
$row=mysqli_fetch_row($rslt);
$use_custom_cid = $row[0];
$manual_dial_hopper_check = $row[1];
if ( (preg_match('/^USER_CUSTOM/', $use_custom_cid)) and ($cid_lock < 1) )
### check for custom cid use
$use_custom_cid=0;
$stmt = "SELECT use_custom_cid,manual_dial_hopper_check,cid_group_id FROM vicidial_campaigns where campaign_id='$campaign';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00314',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$uccid_ct = mysqli_num_rows($rslt);
if ($uccid_ct > 0)
{
$temp_vu='';
$use_custom_cid=preg_replace('/^USER_/', "", $use_custom_cid);
$pattern=array('/1/', '/2/', '/3/', '/4/', '/5/');
$replace=array('one', 'two', 'three', 'four', 'five');
$use_custom_cid = strtolower(preg_replace($pattern,$replace, $use_custom_cid));
$stmt="select $use_custom_cid from vicidial_users where user='$user'";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00661',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$vu_ct = mysqli_num_rows($rslt);
$act=0;
while ($vu_ct > $act)
$row=mysqli_fetch_row($rslt);
$use_custom_cid = $row[0];
$manual_dial_hopper_check = $row[1];
$cid_group_id = $row[2];
if ($use_custom_cid == 'Y')
{
$row=mysqli_fetch_row($rslt);
$temp_vu = $row[0];
$act++;
$temp_CID = preg_replace("/\D/",'',$security_phrase);
if (strlen($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
}
$temp_CID = preg_replace("/\D/",'',$temp_vu);
}
else if ( ($use_custom_cid == 'AREACODE') and ($cid_lock < 1) )
{
$temp_vcca='';
$temp_ac='';
$temp_ac_two = substr("$phone_number", 0, 2);
$temp_ac_three = substr("$phone_number", 0, 3);
$temp_ac_four = substr("$phone_number", 0, 4);
$temp_ac_five = substr("$phone_number", 0, 5);
$stmt = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$campaign' and areacode IN('$temp_ac_two','$temp_ac_three','$temp_ac_four','$temp_ac_five') and active='Y' order by CAST(areacode as SIGNED INTEGER) asc, call_count_today desc limit 100000;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00429',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$vcca_ct = mysqli_num_rows($rslt);
$act=0;
while ($vcca_ct > $act)
if ( (preg_match('/^USER_CUSTOM/', $use_custom_cid)) and ($cid_lock < 1) )
{
$row=mysqli_fetch_row($rslt);
$temp_vcca = $row[0];
$temp_ac = $row[1];
$act++;
}
if ($act > 0)
{
$stmt="UPDATE vicidial_campaign_cid_areacodes set call_count_today=(call_count_today + 1) where campaign_id='$campaign' and areacode='$temp_ac' and outbound_cid='$temp_vcca';";
if ($format=='debug') {echo "\n<!-- $stmt -->";}
$temp_vu='';
$use_custom_cid=preg_replace('/^USER_/', "", $use_custom_cid);
$pattern=array('/1/', '/2/', '/3/', '/4/', '/5/');
$replace=array('one', 'two', 'three', 'four', 'five');
$use_custom_cid = strtolower(preg_replace($pattern,$replace, $use_custom_cid));
$stmt="select $use_custom_cid from vicidial_users where user='$user'";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00430',$user,$server_ip,$session_name,$one_mysql_log);}
}
$temp_CID = preg_replace("/\D/",'',$temp_vcca);
}
if ($use_custom_cid == 'Y')
{$temp_CID = preg_replace("/\D/",'',$security_phrase);}
if (strlen($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
#### BEGIN run manual_dial_hopper_check process if enabled
if ($manual_dial_hopper_check == 'Y')
{
$mdhc_lead_ids_SQL='';
$stmt = "SELECT lead_id FROM vicidial_list where phone_number='$phone_number';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00652',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$mdhc_ct = mysqli_num_rows($rslt);
$d=0;
while ($mdhc_ct > $d)
{
$row=mysqli_fetch_row($rslt);
$mdhc_lead_ids_SQL .= "'$row[0]',";
$d++;
}
if ($mdhc_ct > 0)
{
$stmt = "DELETE FROM vicidial_hopper where lead_id IN($mdhc_lead_ids_SQL'');";
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00661',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$vu_ct = mysqli_num_rows($rslt);
$act=0;
while ($vu_ct > $act)
{
$row=mysqli_fetch_row($rslt);
$temp_vu = $row[0];
$act++;
}
$temp_CID = preg_replace("/\D/",'',$temp_vu);
if (strlen($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
}
$CIDG_set=0;
if ( ($cid_group_id != '---DISABLED---') and ($cid_lock < 1) )
{
$stmt = "SELECT cid_group_type FROM vicidial_cid_groups where cid_group_id='$cid_group_id';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00653',$user,$server_ip,$session_name,$one_mysql_log);}
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$cidg_ct = mysqli_num_rows($rslt);
if ($cidg_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$cid_group_type = $row[0];
$temp_vcca='';
$temp_ac='';
if ($cid_group_type == 'AREACODE')
{
$temp_ac_two = substr("$agent_dialed_number", 0, 2);
$temp_ac_three = substr("$agent_dialed_number", 0, 3);
$temp_ac_four = substr("$agent_dialed_number", 0, 4);
$temp_ac_five = substr("$agent_dialed_number", 0, 5);
$stmt = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$cid_group_id' and areacode IN('$temp_ac_two','$temp_ac_three','$temp_ac_four','$temp_ac_five') and active='Y' order by CAST(areacode as SIGNED INTEGER) asc, call_count_today desc limit 100000;";
}
if ($cid_group_type == 'STATE')
{
$temp_state = $state;
$stmt = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$cid_group_id' and areacode IN('$temp_state') and active='Y' order by call_count_today desc limit 100000;";
}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$vcca_ct = mysqli_num_rows($rslt);
$act=0;
while ($vcca_ct > $act)
{
$row=mysqli_fetch_row($rslt);
$temp_vcca = $row[0];
$temp_ac = $row[1];
$act++;
}
if ($act > 0)
{
$stmt="UPDATE vicidial_campaign_cid_areacodes set call_count_today=(call_count_today + 1) where campaign_id='$cid_group_id' and areacode='$temp_ac' and outbound_cid='$temp_vcca';";
if ($format=='debug') {echo "\n<!-- $stmt -->";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
}
}
$temp_CID = preg_replace("/\D/",'',$temp_vcca);
if (strlen($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++; $CIDG_set++;}
}
if ( ($use_custom_cid == 'AREACODE') and ($cid_lock < 1) and ($CIDG_set < 1) )
{
$temp_vcca='';
$temp_ac='';
$temp_ac_two = substr("$phone_number", 0, 2);
$temp_ac_three = substr("$phone_number", 0, 3);
$temp_ac_four = substr("$phone_number", 0, 4);
$temp_ac_five = substr("$phone_number", 0, 5);
$stmt = "SELECT outbound_cid,areacode FROM vicidial_campaign_cid_areacodes where campaign_id='$campaign' and areacode IN('$temp_ac_two','$temp_ac_three','$temp_ac_four','$temp_ac_five') and active='Y' order by CAST(areacode as SIGNED INTEGER) asc, call_count_today desc limit 100000;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00429',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$vcca_ct = mysqli_num_rows($rslt);
$act=0;
while ($vcca_ct > $act)
{
$row=mysqli_fetch_row($rslt);
$temp_vcca = $row[0];
$temp_ac = $row[1];
$act++;
}
if ($act > 0)
{
$stmt="UPDATE vicidial_campaign_cid_areacodes set call_count_today=(call_count_today + 1) where campaign_id='$campaign' and areacode='$temp_ac' and outbound_cid='$temp_vcca';";
if ($format=='debug') {echo "\n<!-- $stmt -->";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00430',$user,$server_ip,$session_name,$one_mysql_log);}
}
$temp_CID = preg_replace("/\D/",'',$temp_vcca);
if (strlen($temp_CID) > 6)
{$CCID = "$temp_CID"; $CCID_on++;}
}
}
#### END run manual_dial_hopper_check process if enabled
}
#### BEGIN run manual_dial_hopper_check process if enabled
if ($manual_dial_hopper_check == 'Y')
{
$mdhc_lead_ids_SQL='';
$stmt = "SELECT lead_id FROM vicidial_list where phone_number='$phone_number';";
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00652',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$mdhc_ct = mysqli_num_rows($rslt);
$d=0;
while ($mdhc_ct > $d)
{
$row=mysqli_fetch_row($rslt);
$mdhc_lead_ids_SQL .= "'$row[0]',";
$d++;
}
if ($mdhc_ct > 0)
{
$stmt = "DELETE FROM vicidial_hopper where lead_id IN($mdhc_lead_ids_SQL'');";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00653',$user,$server_ip,$session_name,$one_mysql_log);}
}
}
#### END run manual_dial_hopper_check process if enabled
$PADlead_id = sprintf("%010s", $lead_id);
while (strlen($PADlead_id) > 10) {$PADlead_id = substr("$PADlead_id", 1);}
+4 -3
View File
@@ -579,10 +579,11 @@
# 180126-0855 - Added more agent api pause debug output
# 180204-2304 - Added API dial_ingroup option to external_dial
# 180210-0001 - Added flag for WebRTC webphone compatibility in iframe
# 180215-1105 - Changes for CID Groups functionality
#
$version = '2.14-549c';
$build = '180210-0001';
$version = '2.14-550c';
$build = '180215-1105';
$mel=1; # Mysql Error Log enabled = 1
$mysql_log_count=87;
$one_mysql_log=0;
@@ -9829,7 +9830,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
else
{var call_prefix = manual_dial_prefix;}
manDiaLonly_query = "server_ip=" + server_ip + "&session_name=" + session_name + "&ACTION=manDiaLonly&conf_exten=" + session_id + "&user=" + user + "&pass=" + pass + "&lead_id=" + document.vicidial_form.lead_id.value + "&phone_number=" + manDiaLonly_num + "&phone_code=" + document.vicidial_form.phone_code.value + "&campaign=" + campaign + "&ext_context=" + ext_context + "&dial_timeout=" + manual_dial_timeout + "&dial_prefix=" + call_prefix + "&campaign_cid=" + call_cid + "&omit_phone_code=" + omit_phone_code + "&usegroupalias=" + usegroupalias + "&account=" + active_group_alias + "&agent_dialed_number=" + dialed_number + "&agent_dialed_type=" + dialed_label + "&dial_method=" + dial_method + "&agent_log_id=" + agent_log_id + "&security=" + document.vicidial_form.security_phrase.value + "&qm_extension=" + qm_extension + "&old_CID=" + LastCallCID + "&cid_lock=" + cid_lock;
manDiaLonly_query = "server_ip=" + server_ip + "&session_name=" + session_name + "&ACTION=manDiaLonly&conf_exten=" + session_id + "&user=" + user + "&pass=" + pass + "&lead_id=" + document.vicidial_form.lead_id.value + "&phone_number=" + manDiaLonly_num + "&phone_code=" + document.vicidial_form.phone_code.value + "&campaign=" + campaign + "&ext_context=" + ext_context + "&dial_timeout=" + manual_dial_timeout + "&dial_prefix=" + call_prefix + "&campaign_cid=" + call_cid + "&omit_phone_code=" + omit_phone_code + "&usegroupalias=" + usegroupalias + "&account=" + active_group_alias + "&agent_dialed_number=" + dialed_number + "&agent_dialed_type=" + dialed_label + "&dial_method=" + dial_method + "&agent_log_id=" + agent_log_id + "&security=" + document.vicidial_form.security_phrase.value + "&qm_extension=" + qm_extension + "&old_CID=" + LastCallCID + "&cid_lock=" + cid_lock + "&state=" + encodeURIComponent(document.vicidial_form.state.value);
xmlhttp.open('POST', 'vdc_db_query.php');
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
xmlhttp.send(manDiaLonly_query);
+640 -14
View File
File diff suppressed because one or more lines are too long
+159 -71
View File
@@ -1,7 +1,7 @@
<?php
# admin_bulk_tools.php
#
# Copyright (C) 2017 Mike Coate, Mike Cargile, Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
# Copyright (C) 2018 Mike Coate, Mike Cargile, Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
#
# This is the admin screen for various bulk copy/delete tools.
#
@@ -20,13 +20,14 @@
# 161218-2144 - Added STATE FILL method to AC-CID and upped the max insertion limit to 5K 'cause why not?'
# 170409-1552 - Added IP List validation code
# 170915-1105 - Added IGNORE to bulk inserts to not error out entire statement if only one entry is a unique index duplicate
# 180213-2245 - Added CID Groups ability for AC-CID section
#
require("dbconnect_mysqli.php");
require("functions.php");
$version = '2.14-14';
$build = '170409-1552';
$version = '2.14-15';
$build = '180213-2245';
$PHP_AUTH_USER=$_SERVER['PHP_AUTH_USER'];
$PHP_AUTH_PW=$_SERVER['PHP_AUTH_PW'];
@@ -43,6 +44,8 @@ $STARTtime = date("U");
if (isset($_POST["form_to_run"])) {$form_to_run=$_POST["form_to_run"];}
elseif (isset($_GET["form_to_run"])) {$form_to_run=$_GET["form_to_run"];}
if (isset($_POST["DB"])) {$DB=$_POST["DB"];}
elseif (isset($_GET["DB"])) {$DB=$_GET["DB"];}
if (isset($_POST["ACCIDcampaign"])) {$ACCIDcampaign=$_POST["ACCIDcampaign"];}
if (isset($_POST["ACCIDareacode"])) {$ACCIDareacode=$_POST["ACCIDareacode"];}
if (isset($_POST["ACCIDdids"])) {$ACCIDto_insert_raw=$_POST["ACCIDdids"];}
@@ -289,11 +292,11 @@ if ($form_to_run == "help")
echo "<BR><BR>";
echo "<A NAME=\"ACCIDADD\"><BR>";
echo "<B>"._QXZ("AC-CID Bulk Add")." -</B> "._QXZ("This allows you to paste in a listing of CIDs to insert into a campaign AC-CID list. There are two methods to choose from: <ul> <li><b>STATE LOOKUP</b> - This will take a list of CIDs and insert them as Area Code Caller IDs into the selected campaign. The area code lookup is designed to work only with numbers in the North American Numbering Plan as it uses the first three digits of each CID. The description will automatically be filled with the appropriate US state abbreviation corresponding to the given CIDs 3-digit area code. <li><b>CSV</b> - This will take a comma separated list in the format of NPA,CID,DESCRIPTION and insert each line into the specified campaigns AC-CID list using the supplied values. For example, given a listing of 813,7271234567,Florida will result in an AC-CID entry for area code 813 using the CID 7271234567 and a description of -Florida-. Descriptions are limited to 50 characters.<li><b>STATE FILL</b> - Similar to the STATE LOOKUP method above, this will take a list of CIDs and insert them as AC-CIDs in the specified campaign but will also make an entry for each area code in a state based off the state the CID is in. For example, if given the CID 7271234567, 19 CID entries will be created with the same CID, one each for every area code in Florida.</ul> CIDs must be between 6 and 20 digits in length and only digits 0-9 are allowed. Optionally, you can have the AC-CIDs set to active upon insertion.");
echo "<B>"._QXZ("AC-CID Bulk Add")." -</B> "._QXZ("This allows you to paste in a listing of CIDs to insert into a campaign AC-CID list or CID Group list. There are two methods to choose from: <ul> <li><b>STATE LOOKUP</b> - This will take a list of CIDs and insert them as Area Code Caller IDs into the selected campaign. The area code lookup is designed to work only with numbers in the North American Numbering Plan as it uses the first three digits of each CID. The description will automatically be filled with the appropriate US state abbreviation corresponding to the given CIDs 3-digit area code. <li><b>CSV</b> - This will take a comma separated list in the format of NPA,CID,DESCRIPTION and insert each line into the specified campaigns AC-CID list using the supplied values. For example, given a listing of 813,7271234567,Florida will result in an AC-CID entry for area code 813 using the CID 7271234567 and a description of -Florida-. Descriptions are limited to 50 characters. For CID Groups of a STATE type, use this format for CSV- STATE,CID,DESCRIPTION.<li><b>STATE FILL</b> - Similar to the STATE LOOKUP method above, this will take a list of CIDs and insert them as AC-CIDs in the specified campaign but will also make an entry for each area code in a state based off the state the CID is in. For example, if given the CID 7271234567, 19 CID entries will be created with the same CID, one each for every area code in Florida. If you are inserting into a CID Group that is a STATE type, then you will not want to use the STATE FILL method.</ul> CIDs must be between 6 and 20 digits in length and only digits 0-9 are allowed. Optionally, you can have the AC-CIDs set to active upon insertion.");
echo "<BR><BR>";
echo "<A NAME=\"ACCIDDELETE\"><BR>";
echo "<B>"._QXZ("AC-CID Bulk Delete")." -</B> "._QXZ("This will delete the Areacode Caller ID entries you select from the next screen based on the campaign you select here. Setting Clear All CIDs to YES will bypass the AC-CID selection and wipe all AC-CIDs for the selected campaign.");
echo "<B>"._QXZ("AC-CID Bulk Delete")." -</B> "._QXZ("This will delete the Areacode Caller ID entries you select from the next screen based on the campaign or CID group you select here. Setting Clear All CIDs to YES will bypass the AC-CID selection and wipe all AC-CIDs for the selected campaign or CID group.");
echo "<BR><BR></TD></TR></TABLE></BODY><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR></HTML>";
exit;
@@ -337,7 +340,7 @@ if ($form_to_run == "ACCID")
{
if ($ACCIDcampaign=="BLANK")
{
echo _QXZ("Go back, you did not specify a campaign.")."\n";
echo _QXZ("Go back, you did not specify a campaign or CID group.")."\n";
exit;
}
if ($CIDcheck=="BLANK")
@@ -350,46 +353,57 @@ if ($form_to_run == "ACCID")
echo _QXZ("This tool has a limit of ")."$INSERTmax_limit"._QXZ(" items. You are trying to insert ") . count($ACCIDto_insert_raw) ._QXZ(". Please go back and make adjustments.")."\n";
exit;
}
$CGT = 'AREACODE';
$SQL="SELECT cid_group_type FROM vicidial_cid_groups WHERE cid_group_id='$ACCIDcampaign';";
if ($DB) {echo "$SQL|";}
$SQL_rslt = mysql_to_mysqli($SQL, $link);
$cgid_count = mysqli_num_rows($SQL_rslt);
if ($cgid_count > 0)
{
$row = mysqli_fetch_row($SQL_rslt);
$CGT = $row[0];
}
$areacode = array();
# If using the STATE FILL method, build out the array of ACs and CIDs for each represented state.
if ($ACCIDmethod == "STATEFILL")
{
$STATEFILLcids = array();
$STATEFILLareacodes = array();
$i=0;
$j=0; # Counts total ACCID to be inserted
while ($i < count($ACCIDto_insert_raw))
{
$STATEFILLareacode[$i] = substr($ACCIDto_insert_raw[$i], 0, 3);
$SQL = "SELECT state FROM vicidial_phone_codes WHERE country='USA' AND areacode=$STATEFILLareacode[$i];";
if ($DB) {echo "$SQL|";}
$SQL_rslt = mysql_to_mysqli($SQL, $link);
$state = mysqli_fetch_row($SQL_rslt);
$SQL = "SELECT areacode FROM vicidial_phone_codes WHERE country='USA' AND state='$state[0]';";
if ($DB) {echo "$SQL|";}
$SQL_rslt = mysql_to_mysqli($SQL, $link);
$areacode_count = mysqli_num_rows($SQL_rslt);
$k = 0;
while ($k < $areacode_count)
$STATEFILLcids = array();
$STATEFILLareacodes = array();
$i=0;
$j=0; # Counts total ACCID to be inserted
while ($i < count($ACCIDto_insert_raw))
{
$row = mysqli_fetch_row($SQL_rslt);
$areacode[$j] = $row[0];
$STATEFILLcids[$j] = $ACCIDto_insert_raw[$i];
$j++;
$k++;
$STATEFILLareacode[$i] = substr($ACCIDto_insert_raw[$i], 0, 3);
$SQL = "SELECT state FROM vicidial_phone_codes WHERE country='USA' AND areacode='$STATEFILLareacode[$i]';";
if ($DB) {echo "$SQL|";}
$SQL_rslt = mysql_to_mysqli($SQL, $link);
$state = mysqli_fetch_row($SQL_rslt);
$SQL = "SELECT areacode FROM vicidial_phone_codes WHERE country='USA' AND state='$state[0]';";
if ($DB) {echo "$SQL|";}
$SQL_rslt = mysql_to_mysqli($SQL, $link);
$areacode_count = mysqli_num_rows($SQL_rslt);
$k = 0;
while ($k < $areacode_count)
{
$row = mysqli_fetch_row($SQL_rslt);
$areacode[$j] = $row[0];
$STATEFILLcids[$j] = $ACCIDto_insert_raw[$i];
$j++;
$k++;
}
$i++;
}
$i=0;
while ($i < count($STATEFILLcids))
{
$ACCIDto_insert_raw[$i] = $STATEFILLcids[$i];
$i++;
}
$i++;
}
$i=0;
while ($i < count($STATEFILLcids))
{
$ACCIDto_insert_raw[$i] = $STATEFILLcids[$i];
$i++;
}
}
#Check for duplicates
$ACCIDduplicate = array();
@@ -401,9 +415,20 @@ if ($form_to_run == "ACCID")
$l=0; #bad length counter
while ($i < count($ACCIDto_insert_raw))
{
if ($ACCIDmethod == "CID") {$areacode[$i] = substr($ACCIDto_insert_raw[$i], 0, 3);}
if ($ACCIDmethod == "CSV") {$areacode[$i] = $ACCIDareacode_raw[$i];}
$SQL= "SELECT outbound_cid FROM vicidial_campaign_cid_areacodes WHERE outbound_cid=$ACCIDto_insert_raw[$i] AND areacode=$areacode[$i] AND campaign_id='$ACCIDcampaign';";
if ($ACCIDmethod == "CID")
{
$areacode[$i] = substr($ACCIDto_insert_raw[$i], 0, 3);
if ($CGT == 'STATE')
{
$SQL = "SELECT state FROM vicidial_phone_codes WHERE country='USA' AND areacode='$areacode[$i]';";
if ($DB) {echo "$SQL|";}
$SQL_rslt = mysql_to_mysqli($SQL, $link);
$row=mysqli_fetch_row($SQL_rslt);
$areacode[$i] = $row[0];
}
}
if ($ACCIDmethod == "CSV") {$areacode[$i] = $ACCIDareacode_raw[$i];}
$SQL= "SELECT outbound_cid FROM vicidial_campaign_cid_areacodes WHERE outbound_cid='$ACCIDto_insert_raw[$i]' AND areacode='$areacode[$i]' AND campaign_id='$ACCIDcampaign';";
if ($DB) {echo "$SQL|";}
$SQL_rslt=mysql_to_mysqli($SQL, $link);
$row = mysqli_fetch_row($SQL_rslt);
@@ -477,6 +502,7 @@ if ($form_to_run == "ACCID")
if ($ACCIDmethod=="CSV") {$ACCIDdescription_raw = serialize($ACCIDdescription_raw);}
echo "<html><form action=$PHP_SELF method=POST>";
echo "<input type=hidden name=form_to_run value='ACCIDconfirmed'>";
echo "<input type=hidden name=DB value='$DB'>";
echo "<input type=hidden name=ACCIDto_insert value='$ACCIDto_insert'>";
echo "<input type=hidden name=ACCIDcampaign value='$ACCIDcampaign'>";
echo "<input type=hidden name=ACCIDareacode value='$ACCIDareacode'>";
@@ -492,10 +518,21 @@ if ($form_to_run == "ACCID")
################################################################################
##### PROCESS AC-CID add
elseif ($form_to_run == "ACCIDconfirmed")
{
{
$CGT = 'AREACODE';
$SQL="SELECT cid_group_type FROM vicidial_cid_groups WHERE cid_group_id='$ACCIDcampaign';";
if ($DB) {echo "$SQL|";}
$SQL_rslt = mysql_to_mysqli($SQL, $link);
$cgid_count = mysqli_num_rows($SQL_rslt);
if ($cgid_count > 0)
{
$row = mysqli_fetch_row($SQL_rslt);
$CGT = $row[0];
}
$ACCIDto_insert_CONFIRMED = unserialize($ACCIDto_insert_CONFIRMED);
$ACCIDareacode = unserialize($ACCIDareacode);
if ($ACCIDmethod=="CSV")
$ACCIDareacode = unserialize($ACCIDareacode);
if ($ACCIDmethod=="CSV")
{
$ACCIDdescription = unserialize($ACCIDdescription);
}
@@ -505,21 +542,26 @@ elseif ($form_to_run == "ACCIDconfirmed")
$i = 0;
while ($i < count($ACCIDto_insert_CONFIRMED))
{
$SQL="SELECT state FROM vicidial_phone_codes WHERE areacode=$ACCIDareacode[$i];";
$SQL_rslt = mysql_to_mysqli($SQL, $link);
$row = mysqli_fetch_row($SQL_rslt);
if ( $row[0] == null ) #Put something in if NULL because areacode.vicidial_campaign_cid_areacodes cannot be NULL
if (!preg_match("/[A-Z]/i",$ACCIDareacode[$i]))
{
$ACCIDdescription[$i] = " ";
$SQL="SELECT state FROM vicidial_phone_codes WHERE areacode='$ACCIDareacode[$i]';";
$SQL_rslt = mysql_to_mysqli($SQL, $link);
$row = mysqli_fetch_row($SQL_rslt);
if ( $row[0] == null ) #Put something in if NULL because areacode.vicidial_campaign_cid_areacodes cannot be NULL
{
$ACCIDdescription[$i] = " ";
}
else
{
$ACCIDdescription[$i] = $row[0];
}
}
else
{
$ACCIDdescription[$i] = $row[0];
}
{$ACCIDdescription[$i] = $ACCIDareacode[$i];}
$i++;
}
}
### Divide total AC-CIDs into groups
$INSERTtotal = count($ACCIDto_insert_CONFIRMED);
$INSERTgroup_counter = 0;
@@ -614,11 +656,12 @@ elseif ($form_to_run == "ACCIDDELETEselect")
{
if ($ACCIDdelete_campaign=="BLANK")
{
echo _QXZ("Go back, you did not select a campaign.")."\n";
echo _QXZ("Go back, you did not select a campaign or CID group.")."\n";
exit;
}
echo "<html><form action=$PHP_SELF method=POST>";
echo "<input type=hidden name=form_to_run value='ACCIDDELETEconfirm'>";
echo "<input type=hidden name=DB value='$DB'>";
echo "<input type=hidden name=ACCIDdelete_campaign value='$ACCIDdelete_campaign'>";
echo "<center><table width=$section_width cellspacing='3'>";
echo "<col width=50%><col width=50%>";
@@ -663,12 +706,13 @@ elseif ($form_to_run == "ACCIDDELETEconfirm")
{
if ($ACCIDdelete_campaign=="BLANK")
{
echo _QXZ("Go back, you did not select a campaign").".\n";
echo _QXZ("Go back, you did not select a campaign or CID group").".\n";
exit;
}
echo "<br><font color=red><b><center>"._QXZ("WANRING! You are about to remove all AC-CID entries for campaign")." $ACCIDdelete_campaign "._QXZ("WARNING!")."</center></b></font><br><br>";
echo "<html><form action=$PHP_SELF method=POST>";
echo "<input type=hidden name=form_to_run value='ACCIDDELETEconfirmed'>";
echo "<input type=hidden name=DB value='$DB'>";
echo "<input type=hidden name=ACCIDdelete_campaign value='$ACCIDdelete_campaign'>";
echo "<input type=hidden name=ACCIDclear_all_CONFIRMED value='$ACCIDclear_all'>";
echo "<tr bgcolor=#". $SSstd_row1_background ."><td colspan=2 align=center><input type=submit name=did_submit value='CONFIRM'></td></tr>\n";
@@ -700,6 +744,7 @@ elseif ($form_to_run == "ACCIDDELETEconfirm")
$ACCIDdelete_from = serialize($ACCIDdelete_from);
echo "<html><form action=$PHP_SELF method=POST>";
echo "<input type=hidden name=form_to_run value='ACCIDDELETEconfirmed'>";
echo "<input type=hidden name=DB value='$DB'>";
echo "<input type=hidden name=ACCIDdelete_from_CONFIRMED value='$ACCIDdelete_from'>";
echo "<input type=hidden name=ACCIDdelete_campaign value='$ACCIDdelete_campaign'>";
echo "<tr bgcolor=#". $SSstd_row1_background ."><td colspan=2 align=center><input type=submit name=did_submit value='CONFIRM'></td></tr>\n";
@@ -784,8 +829,7 @@ elseif ($form_to_run == "ACCIDDELETEconfirmed")
echo "<br>"._QXZ("AC-CIDs have been deleted").".";
echo "<br><a href=\"admin_bulk_tools.php\">"._QXZ("Go back to tools").".</a>";
}
}
}
################################################################################
@@ -888,6 +932,7 @@ elseif ($form_to_run == "BULKDIDS")
$DIDto_insert = serialize($DIDto_insert);
echo "<html><form action=$PHP_SELF method=POST>";
echo "<input type=hidden name=form_to_run value='DIDADDconfirmed'>";
echo "<input type=hidden name=DB value='$DB'>";
echo "<input type=hidden name=DIDto_insert_CONFIRMED value='$DIDto_insert'>";
echo "<input type=hidden name=DIDcopy_from value='$DIDcopy_from'>";
echo "<tr bgcolor=#". $SSstd_row1_background ."><td colspan=2 align=center><input type=submit name=did_submit value='CONFIRM'></td></tr>\n";
@@ -1080,6 +1125,7 @@ elseif ($form_to_run == "BULKDIDSDELETE")
$DIDdelete_from = serialize($DIDdelete_from);
echo "<html><form action=$PHP_SELF method=POST>";
echo "<input type=hidden name=form_to_run value='BULKDIDSDELETEconfirmed'>";
echo "<input type=hidden name=DB value='$DB'>";
echo "<input type=hidden name=DIDdelete_from_CONFIRMED value='$DIDdelete_from'>";
echo "<tr bgcolor=#". $SSstd_row1_background ."><td colspan=2 align=center><input type=submit name=did_submit value='CONFIRM'></td></tr>\n";
echo "</table></center></form>\n";
@@ -1229,6 +1275,7 @@ elseif ($form_to_run == "BULKUSERS")
$USERto_insert = serialize($USERto_insert);
echo "<html><form action=$PHP_SELF method=POST>";
echo "<input type=hidden name=form_to_run value='BULKUSERSconfirmed'>";
echo "<input type=hidden name=DB value='$DB'>";
echo "<input type=hidden name=USERto_insert value='$USERto_insert'>";
echo "<input type=hidden name=USERcopy_from value='$USERcopy_from'>";
echo "<input type=hidden name=USERforce_pw value='$USERforce_pw'>";
@@ -1471,6 +1518,7 @@ elseif ($form_to_run == "BULKUSERSDELETE") ### BULK USER DELETE
$USERdelete_from = serialize($USERdelete_from);
echo "<html><form action=$PHP_SELF method=POST>";
echo "<input type=hidden name=form_to_run value='BULKUSERSDELETEconfirmed'>";
echo "<input type=hidden name=DB value='$DB'>";
echo "<input type=hidden name=USERdelete_from_CONFIRMED value='$USERdelete_from'>";
echo "<tr bgcolor=#". $SSstd_row1_background ."><td colspan=2 align=center><input type=submit name=did_submit value='CONFIRM'></td></tr>\n";
echo "</table></center></form>\n";
@@ -1526,6 +1574,7 @@ else
{
echo "<form action=$PHP_SELF method='post'>";
echo "<input type=hidden name=form_to_run value='BULKDIDS'>";
echo "<input type=hidden name=DB value='$DB'>";
echo "<center><table width=$section_width cellspacing='3'>";
echo "<col width=50%><col width=50%>";
echo "<tr bgcolor=#". $SSmenu_background ."><td colspan=2 align=center><font color=white><b>"._QXZ("DID Bulk Copy")."</b>$NWB#DIDADD$NWE</font></td></tr>\n";
@@ -1573,6 +1622,7 @@ else
{
echo "<html><form action=$PHP_SELF method=POST>";
echo "<input type=hidden name=form_to_run value='BULKDIDSDELETE'>";
echo "<input type=hidden name=DB value='$DB'>";
echo "<center><table width=$section_width cellspacing='3'>";
echo "<col width=50%><col width=50%>";
echo "<tr bgcolor=#". $SSmenu_background ."><td colspan=2 align=center><font color=white><b>"._QXZ("DID Bulk Delete")."</b>$NWB#DIDDELETE$NWE</font></td></tr>\n";
@@ -1617,6 +1667,7 @@ else
{
echo "<form action=$PHP_SELF method='post'>";
echo "<input type=hidden name=form_to_run value='ACCID'>";
echo "<input type=hidden name=DB value='$DB'>";
echo "<center><table width=$section_width cellspacing='3'>";
echo "<col width=50%><col width=50%>";
echo "<tr bgcolor=#". $SSmenu_background ."><td colspan=2 align=center><font color=white><b>"._QXZ("AC-CID Bulk Add")."</b>$NWB#ACCIDADD$NWE</font></td></tr>\n";
@@ -1633,23 +1684,40 @@ else
$SQL_rslt = mysql_to_mysqli($SQL, $link);
$camp_count = mysqli_num_rows($SQL_rslt);
$i = 0;
$g = 0;
while ($i < $camp_count)
{
$row = mysqli_fetch_row($SQL_rslt);
$ACCIDcampaigns_to_copy[$i] = $row[0];
$ACCIDcampaigns_to_copy_names[$i] = $row[1];
$ACCIDcampaigns_to_copy[$g] = $row[0];
$ACCIDcampaigns_to_copy_names[$g] = $row[1];
$ACCIDcampaigns_to_copy_type[$g] = 'AREACODE';
$i++;
$g++;
}
$SQL="SELECT cid_group_id,cid_group_notes,cid_group_type FROM vicidial_cid_groups WHERE $admin_viewable_groupsSQL ORDER BY cid_group_id ASC;";
if ($DB) {echo "$SQL|";}
$SQL_rslt = mysql_to_mysqli($SQL, $link);
$cgid_count = mysqli_num_rows($SQL_rslt);
$i = 0;
while ($i < $cgid_count)
{
$row = mysqli_fetch_row($SQL_rslt);
$ACCIDcampaigns_to_copy[$g] = $row[0];
$ACCIDcampaigns_to_copy_names[$g] = $row[1];
$ACCIDcampaigns_to_copy_type[$g] = $row[2];
$i++;
$g++;
}
echo "<select size=1 name=ACCIDcampaign>\n";
echo "<option value='BLANK'>"._QXZ("Select a campaign")."</option>\n";
echo "<option value='BLANK'>"._QXZ("Select a campaign or CID group")."</option>\n";
$i = 0;
while ( $i < $camp_count )
while ( $i < $g )
{
echo "<option value='$ACCIDcampaigns_to_copy[$i]'>$ACCIDcampaigns_to_copy[$i] - $ACCIDcampaigns_to_copy_names[$i]</option>\n";
echo "<option value='$ACCIDcampaigns_to_copy[$i]'>$ACCIDcampaigns_to_copy[$i] - $ACCIDcampaigns_to_copy_type[$i] - $ACCIDcampaigns_to_copy_names[$i]</option>\n";
$i++;
}
}
echo "</select></td></tr>\n";
echo "<tr bgcolor=#". $SSstd_row1_background ."><td align=right>"._QXZ("Active?").":</td><td align=left><select size=1 name=ACCIDactive>\n";
@@ -1675,6 +1743,7 @@ else
{
echo "<form action=$PHP_SELF method='post'>";
echo "<input type=hidden name=form_to_run value='ACCIDDELETEselect'>";
echo "<input type=hidden name=DB value='$DB'>";
echo "<center><table width=$section_width cellspacing='3'>";
echo "<col width=50%><col width=50%>";
echo "<tr bgcolor=#". $SSmenu_background ."><td colspan=2 align=center><font color=white><b>"._QXZ("AC-CID Bulk Delete")."</b>$NWB#ACCIDDELETE$NWE</font></td></tr>\n";
@@ -1686,21 +1755,38 @@ else
$SQL_rslt = mysql_to_mysqli($SQL, $link);
$camp_count = mysqli_num_rows($SQL_rslt);
$i = 0;
$g = 0;
while ($i < $camp_count)
{
$row = mysqli_fetch_row($SQL_rslt);
$ACCIDdelete_campaign_selection[$i] = $row[0];
$ACCIDdelete_campaign_name[$i] = $row[1];
$ACCIDdelete_campaign_selection[$g] = $row[0];
$ACCIDdelete_campaign_name[$g] = $row[1];
$ACCIDdelete_campaign_type[$g] = 'AREACODE';
$i++;
$g++;
}
$SQL="SELECT cid_group_id,cid_group_notes,cid_group_type FROM vicidial_cid_groups WHERE $admin_viewable_groupsSQL ORDER BY cid_group_id ASC;";
if ($DB) {echo "$SQL|";}
$SQL_rslt = mysql_to_mysqli($SQL, $link);
$cgid_count = mysqli_num_rows($SQL_rslt);
$i = 0;
while ($i < $cgid_count)
{
$row = mysqli_fetch_row($SQL_rslt);
$ACCIDdelete_campaign_selection[$g] = $row[0];
$ACCIDdelete_campaign_name[$g] = $row[1];
$ACCIDdelete_campaign_type[$g] = $row[2];
$i++;
$g++;
}
echo "<select size=1 name=ACCIDdelete_campaign>\n";
echo "<option value='BLANK'>"._QXZ("Select a campaign")."</option>\n";
echo "<option value='BLANK'>"._QXZ("Select a campaign or CID group")."</option>\n";
$i = 0;
while ( $i < $camp_count )
while ( $i < $g )
{
echo "<option value='$ACCIDdelete_campaign_selection[$i]'>$ACCIDdelete_campaign_selection[$i] - $ACCIDdelete_campaign_name[$i]</option>\n";
echo "<option value='$ACCIDdelete_campaign_selection[$i]'>$ACCIDdelete_campaign_selection[$i] - $ACCIDdelete_campaign_type[$i] - $ACCIDdelete_campaign_name[$i]</option>\n";
$i++;
}
@@ -1726,6 +1812,7 @@ else
{
echo "<html><form action=$PHP_SELF method=POST>";
echo "<input type=hidden name=form_to_run value='BULKUSERS'>";
echo "<input type=hidden name=DB value='$DB'>";
echo "<center><table width=$section_width cellspacing='3'>";
echo "<col width=50%><col width=50%>";
echo "<tr bgcolor=#". $SSmenu_background ."><td colspan=2 align=center><font color=white><b>"._QXZ("User Bulk Copy")."</b>$NWB#USERADD$NWE</font></td></tr>\n";
@@ -1779,6 +1866,7 @@ else
{
echo "<html><form action=$PHP_SELF method=POST>";
echo "<input type=hidden name=form_to_run value='BULKUSERSDELETE'>";
echo "<input type=hidden name=DB value='$DB'>";
echo "<center><table width=$section_width cellspacing='3'>";
echo "<col width=50%><col width=50%>";
echo "<tr bgcolor=#". $SSmenu_background ."><td colspan=2 align=center><font color=white><b>"._QXZ("User Bulk Delete")."</b>$NWB#USERDELETE$NWE</font></td></tr>\n";
+20 -4
View File
@@ -1,7 +1,7 @@
<?php
# admin_header.php - VICIDIAL administration header
#
# Copyright (C) 2017 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
# Copyright (C) 2018 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
#
# CHANGES
@@ -73,6 +73,7 @@
# 170409-0757 - Added IP Lists
# 170623-2113 - Changed password strength parameters
# 170821-2010 - Fix for issue #1036
# 180213-1657 - Added CID Groups
#
$stmt="SELECT admin_home_url,enable_tts_integration,callcard_enabled,custom_fields_enabled,allow_emails,level_8_disable_add,allow_chats,enable_languages,admin_row_click,admin_screen_colors,user_new_lead_limit,user_territories_active,qc_features_active,agent_soundboards,enable_drop_lists,allow_ip_lists from system_settings;";
@@ -832,7 +833,7 @@ if ( ($ADD==131111111) or ($ADD==331111111) or ($ADD==431111111) )
### Javascript for selecting and deselecting all AC-CIDs and other checkboxes "active" on the modify page
if ( ($ADD==3111) or ($ADD==4111) or ($ADD==5111) or ($ADD==3811) or ($ADD==4811) or ($ADD==5811) or ($ADD==3911) or ($ADD==4911) or ($ADD==5911) or ($ADD==31) or ($ADD==34) or ($ADD==202) )
if ( ($ADD==3111) or ($ADD==4111) or ($ADD==5111) or ($ADD==3811) or ($ADD==4811) or ($ADD==5811) or ($ADD==3911) or ($ADD==4911) or ($ADD==5911) or ($ADD==31) or ($ADD==34) or ($ADD==202) or ($ADD==396111111111) or ($ADD==496111111111) )
{
?>
function FORM_selectall(temp_count,temp_fields,temp_option,temp_span)
@@ -1943,6 +1944,7 @@ if ($subcamp_font_size < 4) {$subcamp_font_size='11';}
$cts_sh="CLASS=\"subhead_style\"";
$sc_sh="CLASS=\"subhead_style\"";
$sg_sh="CLASS=\"subhead_style\"";
$cg_sh="CLASS=\"subhead_style\"";
$emails_sh="CLASS=\"subhead_style\"";
$ar_sh="CLASS=\"subhead_style\"";
$il_sh="CLASS=\"subhead_style\"";
@@ -1968,6 +1970,7 @@ if ($subcamp_font_size < 4) {$subcamp_font_size='11';}
if ($sh=='cts') {$cts_sh="CLASS=\"subhead_style_selected\"";}
if ($sh=='sc') {$sc_sh="CLASS=\"subhead_style_selected\"";}
if ($sh=='sg') {$sg_sh="CLASS=\"subhead_style_selected\"";}
if ($sh=='cg') {$cg_sh="CLASS=\"subhead_style_selected\"";}
if ($sh=='emails') {$emails_sh="CLASS=\"subhead_style_selected\"";}
if ($sh=='ar') {$ar_sh="CLASS=\"subhead_style_selected\"";}
if ($sh=='il') {$il_sh="CLASS=\"subhead_style_selected\"";}
@@ -1995,9 +1998,18 @@ if ($subcamp_font_size < 4) {$subcamp_font_size='11';}
</TR><TR <?php echo $colors_sh ?><?php if ($SSadmin_row_click > 0) {echo " onclick=\"window.document.location='$ADMIN?ADD=182000000000';\"";} ?>><TD ALIGN=LEFT <?php echo $colors_sh ?>> &nbsp;
<a href="<?php echo $ADMIN ?>?ADD=182000000000" STYLE="text-decoration:none;"><FONT STYLE="font-family:HELVETICA;font-size:<?php echo $subcamp_font_size ?>;color:BLACK;"> &nbsp; <img src="images/icon_screencolors.png" border=0 alt=\"Colors\" width=14 height=14 valign=middle> <?php echo _QXZ("Screen Colors"); ?> </a></TD>
</TR><TR <?php echo $status_sh ?><?php if ($SSadmin_row_click > 0) {echo " onclick=\"window.document.location='$ADMIN?ADD=321111111111111';\"";} ?>><TD ALIGN=LEFT <?php echo $status_sh ?>> &nbsp;
<a href="<?php echo $ADMIN ?>?ADD=321111111111111" STYLE="text-decoration:none;"><FONT STYLE="font-family:HELVETICA;font-size:<?php echo $subcamp_font_size ?>;color:BLACK;"> &nbsp; <img src="images/icon_statuses.png" border=0 alt=\"Users\" width=14 height=14 valign=middle> <?php echo _QXZ("System Statuses"); ?> </a></TD>
<a href="<?php echo $ADMIN ?>?ADD=321111111111111" STYLE="text-decoration:none;"><FONT STYLE="font-family:HELVETICA;font-size:<?php echo $subcamp_font_size ?>;color:BLACK;"> &nbsp; <img src="images/icon_statuses.png" border=0 alt=\"Statuses\" width=14 height=14 valign=middle> <?php echo _QXZ("System Statuses"); ?> </a></TD>
</TR><TR <?php echo $sg_sh ?><?php if ($SSadmin_row_click > 0) {echo " onclick=\"window.document.location='$ADMIN?ADD=193000000000';\"";} ?>><TD ALIGN=LEFT <?php echo $sg_sh ?>> &nbsp;
<a href="<?php echo $ADMIN ?>?ADD=193000000000" STYLE="text-decoration:none;"><FONT STYLE="font-family:HELVETICA;font-size:<?php echo $subcamp_font_size ?>;color:BLACK;"> &nbsp; <img src="images/icon_statusgroups.png" border=0 alt=\"Users\" width=14 height=14 valign=middle> <?php echo _QXZ("Status Groups"); ?> </a></TD>
<a href="<?php echo $ADMIN ?>?ADD=193000000000" STYLE="text-decoration:none;"><FONT STYLE="font-family:HELVETICA;font-size:<?php echo $subcamp_font_size ?>;color:BLACK;"> &nbsp; <img src="images/icon_statusgroups.png" border=0 alt=\"Status Groups\" width=14 height=14 valign=middle> <?php echo _QXZ("Status Groups"); ?> </a></TD>
<?php
if ($SScampaign_cid_areacodes_enabled > 0)
{
?>
</TR><TR <?php echo $cg_sh ?><?php if ($SSadmin_row_click > 0) {echo " onclick=\"window.document.location='$ADMIN?ADD=196000000000';\"";} ?>><TD ALIGN=LEFT <?php echo $cg_sh ?>> &nbsp;
<a href="<?php echo $ADMIN ?>?ADD=196000000000" STYLE="text-decoration:none;"><FONT STYLE="font-family:HELVETICA;font-size:<?php echo $subcamp_font_size ?>;color:BLACK;"> &nbsp; <img src="images/icon_cidgroups.png" border=0 alt=\"CID Groups\" width=14 height=14 valign=middle> <?php echo _QXZ("CID Groups"); ?> </a></TD>
<?php
}
?>
</TR><TR <?php echo $vm_sh ?><?php if ($SSadmin_row_click > 0) {echo " onclick=\"window.document.location='$ADMIN?ADD=170000000000';\"";} ?>><TD ALIGN=LEFT <?php echo $vm_sh ?>> &nbsp;
<a href="<?php echo $ADMIN ?>?ADD=170000000000" STYLE="text-decoration:none;"><FONT STYLE="font-family:HELVETICA;font-size:<?php echo $subcamp_font_size ?>;color:BLACK;"> &nbsp; <img src="images/icon_voicemail.png" border=0 alt=\"Users\" width=14 height=14 valign=middle> <?php echo _QXZ("Voicemail"); ?> </a></TD>
</TR>
@@ -2257,6 +2269,10 @@ if ($SSenable_languages == '1')
?>
<TR BGCOLOR=<?php echo $sg_color ?>><TD ALIGN=LEFT COLSPAN=2> &nbsp; <a href="<?php echo $ADMIN ?>?ADD=193000000000"><FONT STYLE="font-family:HELVETICA;font-size:<?php echo $subcamp_font_size ?>;color:BLACK;"> <?php echo _QXZ("Status Groups"); ?> </a> &nbsp; |<?php if ($add_copy_disabled < 1) { ?> &nbsp; <a href="<?php echo $ADMIN ?>?ADD=193111111111"><FONT STYLE="font-family:HELVETICA;font-size:<?php echo $subcamp_font_size ?>;color:BLACK;"> <?php echo _QXZ("Add A Status Group"); ?> </a><?php } ?></TD></TR>
<?php }
if (strlen($cg_sh) > 25) {
?>
<TR BGCOLOR=<?php echo $sg_color ?>><TD ALIGN=LEFT COLSPAN=2> &nbsp; <a href="<?php echo $ADMIN ?>?ADD=196000000000"><FONT STYLE="font-family:HELVETICA;font-size:<?php echo $subcamp_font_size ?>;color:BLACK;"> <?php echo _QXZ("CID Groups"); ?> </a> &nbsp; |<?php if ($add_copy_disabled < 1) { ?> &nbsp; <a href="<?php echo $ADMIN ?>?ADD=196111111111"><FONT STYLE="font-family:HELVETICA;font-size:<?php echo $subcamp_font_size ?>;color:BLACK;"> <?php echo _QXZ("Add A CID Group"); ?> </a><?php } ?></TD></TR>
<?php }
if ( (strlen($status_sh) > 25) and (!preg_match('/campaign|user/i',$hh) ) ) {
?>
<TR BGCOLOR=<?php echo $status_color ?>><TD ALIGN=LEFT COLSPAN=2> &nbsp; <a href="<?php echo $ADMIN ?>?ADD=321111111111111"><FONT STYLE="font-family:HELVETICA;font-size:<?php echo $subcamp_font_size ?>;color:BLACK;"> <?php echo _QXZ("System Statuses"); ?> </a> &nbsp; | &nbsp; <a href="<?php echo $ADMIN ?>?ADD=331111111111111"><FONT STYLE="font-family:HELVETICA;font-size:<?php echo $subcamp_font_size ?>;color:BLACK;"> <?php echo _QXZ("Status Categories"); ?> </a> &nbsp; | &nbsp; <a href="<?php echo $ADMIN ?>?ADD=341111111111111"><FONT STYLE="font-family:HELVETICA;font-size:<?php echo $subcamp_font_size ?>;color:BLACK;"> <?php echo _QXZ("QC Status Codes"); ?> </a></TD></TR>
+1 -1
View File
@@ -2504,7 +2504,7 @@ if (($leadfile) && ($LF_path))
}
##### END custom fields columns list ###
if ($DB>0) {echo "$fields_stmt\n";}
$rslt=mysql_to_mysqli("$fields_stmt", $link);
# csv xls xlsx ods sxc conversion
+25 -3
View File
@@ -152,6 +152,7 @@
# 180130-2303 - Added inbound_no_agents_no_dial entries
# 180204-0213 - Added inbound_groups-icbq_expiration_hours and closed-time entries
# 180211-1119 - Added source_vlc_status_report
# 180214-0042 - Added cid_groups
#
require("dbconnect_mysqli.php");
@@ -1462,12 +1463,22 @@ if ($SSoutbound_autodial_active > 0)
<BR>
<A NAME="campaigns-campaign_cid">
<BR>
<B><?php echo _QXZ("Campaign CallerID"); ?> -</B><?php echo _QXZ("This field allows for the sending of a custom callerid number on the outbound calls. This is the number that would show up on the callerid of the person you are calling. The default is UNKNOWN. If you are using T1 or E1s to dial out this option is only available if you are using PRIs - ISDN T1s or E1s - that have the custom callerid feature turned on, this will not work with Robbed-bit service -RBS- circuits. This will also work through most VOIP -SIP or IAX trunks- providers that allow dynamic outbound callerID. The custom callerID only applies to calls placed for the campaign directly, any 3rd party calls or transfers will not send the custom callerID. NOTE: Sometimes putting UNKNOWN or PRIVATE in the field will yield the sending of your default callerID number by your carrier with the calls. You may want to test this and put 0000000000 in the callerid field instead if you do not want to send you CallerID."); ?>
<B><?php echo _QXZ("Campaign CallerID"); ?> -</B><?php echo _QXZ("This field allows for the sending of a custom callerid number on the outbound calls. This is the number that would show up on the callerid of the person you are calling. The default is UNKNOWN. If you are using T1 or E1s to dial out this option is only available if you are using PRIs - ISDN T1s or E1s - that have the custom callerid feature turned on, this will not work with Robbed-bit service -RBS- circuits. This will also work through most VOIP -SIP or IAX trunks- providers that allow dynamic outbound callerID. The custom callerID only applies to calls placed for the campaign directly, any 3rd party calls or transfers will not send the custom callerID. NOTE: Sometimes putting UNKNOWN or PRIVATE in the field will yield the sending of your default callerID number by your carrier with the calls. You may want to test this and put 0000000000 in the callerid field instead if you do not want to send you CallerID. For more information on CallerID priority, see the CALLERID PRIORITY entry a few entries below this one."); ?>
<BR>
<A NAME="campaigns-use_custom_cid">
<BR>
<B><?php echo _QXZ("Custom CallerID"); ?> -</B><?php echo _QXZ("When set to Y, this option allows you to use the security_phrase field in the list table as the CallerID to send out when placing for each specific lead. If this field has no CID in it then the Campaign CallerID defined above will be used instead. This option will disable the list CallerID Override if there is a CID present in the security_phrase field. Default is N. When set to AREACODE you have the ability to go into the AC-CID submenu and define multiple callerids to be used per areacode. For MANUAL and INBOUND_MAN dial methods only, you can use one of the USER_CUSTOM selections to take a CallerID number put into one of the User Custom fields in the User Modify screen and use that for outbound manual dial calls placed by an agent."); ?>
<B><?php echo _QXZ("Custom CallerID"); ?> -</B><?php echo _QXZ("When set to Y, this option allows you to use the security_phrase field in the list table as the CallerID to send out when placing for each specific lead. If this field has no CID in it then the Campaign CallerID defined above will be used instead. This option will disable the list CallerID Override if there is a CID present in the security_phrase field. Default is N. When set to AREACODE you have the ability to go into the AC-CID submenu and define multiple callerids to be used per areacode. For MANUAL and INBOUND_MAN dial methods only, you can use one of the USER_CUSTOM selections to take a CallerID number put into one of the User Custom fields in the User Modify screen and use that for outbound manual dial calls placed by an agent. For more information on CallerID priority, see the CALLERID PRIORITY entry a couple entries below this one."); ?>
<BR>
<A NAME="campaigns-cid_group_id">
<BR>
<B><?php echo _QXZ("CID Group"); ?> -</B><?php echo _QXZ("If set to something other than ---DISABLED---, the selected CID Group will override all other campaign CID settings above and will use the state or areacode based CIDs that are defined in the CID Group. Default is ---DISABLED---. For more information on CallerID priority, see the CALLERID PRIORITY entry below this one."); ?>
<BR>
<A NAME="campaigns-cid_priority">
<BR>
<B><?php echo _QXZ("CALLERID PRIORITY"); ?> -</B><?php echo _QXZ("If all of the CallerID options are enabled, this is the priority in which each type of CallerID will be used, 1 is top priority - <BR>1 - List CallerID Override <BR>2 - CID Group entry <BR>3 - AC-CID AREACODE entry <BR>4 - Custom CallerID, Security Phrase <BR>5 - USER_CUSTOM CallerID <BR>6 - Campaign CID <BR>"); ?>
<BR>
<A NAME="campaigns-campaign_rec_exten">
@@ -3761,6 +3772,17 @@ if ($SSoutbound_autodial_active > 0)
<BR><BR><BR><BR>
<B><FONT SIZE=3>CID GROUPS</FONT></B><BR><BR>
<A NAME="cid_groups">
<BR>
<B><?php echo _QXZ("CID Groups are very similar to Campaign AC-CID, except with CID Groups you can use the same set of CIDs across multiple campaigns, and you can also define CID Groups on a per-state basis as well as per-areacode, instead of just by areacode like with Campaign AC-CID. If the STATE type is used, then the STATE value should match the state field for a lead, and if no match is found, the dialer will use the campaign CID as a default."); ?></B>
<BR><BR><BR><BR>
<B><FONT SIZE=3>USER_GROUPS TABLE</FONT></B><BR><BR>
@@ -5583,7 +5605,7 @@ FR_SPAC 00 00 00 00 00 - <?php echo _QXZ("France space separated phone number");
<BR>
<A NAME="settings-campaign_cid_areacodes_enabled">
<BR>
<B><?php echo _QXZ("Enable Campaign Areacode CID"); ?> -</B><?php echo _QXZ("This setting enables the ability to set specific outbound callerid numbers to be used per campaign. Default is 1 for enabled."); ?>
<B><?php echo _QXZ("Enable CID Groups and Campaign Areacode CID"); ?> -</B><?php echo _QXZ("This setting enables the ability to set specific outbound callerid numbers to be used per areacode for a campaign, as well as CID Groups which allows both per areacode and per state options for groups of CallerID numbers for one or multiple campaigns. Default is 1 for enabled."); ?>
<BR>
<A NAME="settings-did_ra_extensions_enabled">
Binary file not shown.

After

Width:  |  Height:  |  Size: 567 B