diff --git a/agi/agi-VDAD_ALL_outbound.agi b/agi/agi-VDAD_ALL_outbound.agi index a61b32ec..cb47fa3f 100644 --- a/agi/agi-VDAD_ALL_outbound.agi +++ b/agi/agi-VDAD_ALL_outbound.agi @@ -1,6 +1,6 @@ #!/usr/bin/perl # -# agi-VDAD_ALL_outbound.agi version 2.0.5 *DBI-version* +# agi-VDAD_ALL_outbound.agi version 2.0.5 # # runs when an outbound call is answered. This script will # send the calls out to the agents that are logged in. diff --git a/docs/QC_PROCESS.txt b/docs/QC_PROCESS.txt index 873d0c34..b4a4d0e8 100644 --- a/docs/QC_PROCESS.txt +++ b/docs/QC_PROCESS.txt @@ -156,16 +156,21 @@ ALTER TABLE vicidial_log ADD qc_stage ENUM('NONE','LOCK_1','PASS','LOCK_2','FINI # For the closer log table, some fields will need to be added to the vicidial_closer_log table: ALTER TABLE vicidial_closer_log ADD qc_stage ENUM('NONE','LOCK_1','PASS','LOCK_2','FINISH',COMMIT') default 'NONE'; + + + + + + + # For the campaigns table, some fields will need to be added to the vicidial_campaigns table: +ALTER TABLE vicidial_campaigns ADD qc_enabled ENUM('Y','N') default 'N'; ALTER TABLE vicidial_campaigns ADD qc_statuses TEXT; ALTER TABLE vicidial_campaigns ADD qc_lists TEXT; ALTER TABLE vicidial_campaigns ADD campaign_shift_start_time VARCHAR(4) default '0900'; ALTER TABLE vicidial_campaigns ADD campaign_shift_length VARCHAR(5) default '16:00'; ALTER TABLE vicidial_campaigns ADD campaign_day_start_time VARCHAR(4) default '0100'; - - - # For the in-groups/campaigns QC permissions, some fields will need to be added to the vicidial_user_groups table: ALTER TABLE vicidial_user_groups ADD qc_allowed_campaigns TEXT; ALTER TABLE vicidial_user_groups ADD qc_allowed_inbound_groups TEXT; diff --git a/extras/MySQL_AST_CREATE_tables.sql b/extras/MySQL_AST_CREATE_tables.sql index 7999dd18..6f75be5e 100644 --- a/extras/MySQL_AST_CREATE_tables.sql +++ b/extras/MySQL_AST_CREATE_tables.sql @@ -544,7 +544,13 @@ manual_dial_list_id BIGINT(14) UNSIGNED, default_xfer_group VARCHAR(20) default '---NONE---', xfer_groups TEXT default '', queue_priority TINYINT(2) default '50', -drop_inbound_group VARCHAR(20) default '---NONE---' +drop_inbound_group VARCHAR(20) default '---NONE---', +qc_enabled ENUM('Y','N') default 'N', +qc_statuses TEXT, +qc_lists TEXT, +campaign_shift_start_time VARCHAR(4) default '0900', +campaign_shift_length VARCHAR(5) default '16:00', +campaign_day_start_time VARCHAR(4) default '0100' ); CREATE TABLE vicidial_lists ( @@ -1077,4 +1083,4 @@ INSERT INTO vicidial_state_call_times SET state_call_time_id='utah',state_call_t INSERT INTO vicidial_state_call_times SET state_call_time_id='washington',state_call_time_state='WA',state_call_time_name='Washington 8am',sct_default_start='800',sct_default_stop='2100'; INSERT INTO vicidial_state_call_times SET state_call_time_id='wyoming',state_call_time_state='WY',state_call_time_name='Wyoming 8am-8pm',sct_default_start='800',sct_default_stop='2000'; -UPDATE system_settings SET db_schema_version='1077'; +UPDATE system_settings SET db_schema_version='1078'; diff --git a/extras/upgrade_2.0.5.sql b/extras/upgrade_2.0.5.sql index b8213624..60296fcf 100644 --- a/extras/upgrade_2.0.5.sql +++ b/extras/upgrade_2.0.5.sql @@ -77,3 +77,12 @@ ALTER TABLE vicidial_campaigns ADD drop_inbound_group VARCHAR(20) default '---NO UPDATE vicidial_campaigns SET drop_action='MESSAGE'; UPDATE system_settings SET db_schema_version='1077'; + +ALTER TABLE vicidial_campaigns ADD qc_enabled ENUM('Y','N') default 'N'; +ALTER TABLE vicidial_campaigns ADD qc_statuses TEXT; +ALTER TABLE vicidial_campaigns ADD qc_lists TEXT; +ALTER TABLE vicidial_campaigns ADD campaign_shift_start_time VARCHAR(4) default '0900'; +ALTER TABLE vicidial_campaigns ADD campaign_shift_length VARCHAR(5) default '16:00'; +ALTER TABLE vicidial_campaigns ADD campaign_day_start_time VARCHAR(4) default '0100'; + +UPDATE system_settings SET db_schema_version='1078'; diff --git a/translations/raw_translation_files/TO_BE_TRANSLATED_2.0.5.txt b/translations/raw_translation_files/TO_BE_TRANSLATED_2.0.5.txt index 39e6f9fc..625e0f63 100644 --- a/translations/raw_translation_files/TO_BE_TRANSLATED_2.0.5.txt +++ b/translations/raw_translation_files/TO_BE_TRANSLATED_2.0.5.txt @@ -32,6 +32,22 @@ Drop Action -<\/B> This menu allows you to choose what happens to a call when it Drop Exten -<\/B> If Drop Action is set to MESSAGE, this is the dial plan extension that the call will be sent to if it reaches Drop Call Seconds|| Drop Call Seconds -<\/B> The number of seconds a call will stay in queue before being considered a DROP|| Drop Transfer Group -<\/B> If Drop Action is set to IN_GROUP, the call will be sent to this inbound group if it reaches Drop Call Seconds|| +QC SETTINGS FOR THIS CAMPAIGN|| +QC Enabled: || +QC Statuses: || +QC Lists: || +Campaign Shift Start Time: || +Campaign Shift Length: || +Campaign Day Start Time: || +Modify Campaign QC Settings|| +QC Enabled -<\/B> Setting this field to Y allows for the agent Quality Control features to work. Default is N|| +QC Statuses -<\/B> This area is where you select which statuses of leads should be gone over by the QC system. Place a check next to the status that you want QC to review|| +QC Lists -<\/B> This area is where you select which lists of leads should be gone over by the QC system. Place a check next to the list that you want QC to review|| +Campaign Shift Start Time -<\/B> This is the time that the campaign shift begins. Must only be numbers, 9:30 AM would be 0930|| +Campaign Shift Length -<\/B> This is the time in Hours and Minutes that the campaign shift lasts. 8 hours would be 08:00|| +Campaign Day Start Time -<\/B> This is the time that the a new campaign day begins. Must only be numbers, 1:00 AM would be 0100|| +QC SETTINGS NOT MODIFIED|| +QC SETTINGS MODIFIED|| ############################################################ CLIENT diff --git a/www/vicidial/admin.php b/www/vicidial/admin.php index dde2254c..d06c88d2 100644 --- a/www/vicidial/admin.php +++ b/www/vicidial/admin.php @@ -4,10 +4,8 @@ # Copyright (C) 2008 Matt Florell LICENSE: AGPLv2 # - require("dbconnect.php"); - ###################################################################################################### ###################################################################################################### ####### static variable settings for display options @@ -569,7 +567,8 @@ if (isset($_GET["campaign_stats_refresh"])) {$campaign_stats_refresh=$_GET["ca elseif (isset($_POST["campaign_stats_refresh"])){$campaign_stats_refresh=$_POST["campaign_stats_refresh"];} if (isset($_GET["list_description"])) {$list_description=$_GET["list_description"];} elseif (isset($_POST["list_description"])) {$list_description=$_POST["list_description"];} -if (isset($_GET["vicidial_recording_override"])) {$vicidial_recording_override=$_GET["vicidial_recording_override"];} elseif (isset($_POST["vicidial_recording_override"])) {$vicidial_recording_override=$_POST["vicidial_recording_override"];} +if (isset($_GET["vicidial_recording_override"])) {$vicidial_recording_override=$_GET["vicidial_recording_override"];} + elseif (isset($_POST["vicidial_recording_override"])) {$vicidial_recording_override=$_POST["vicidial_recording_override"];} if (isset($_GET["use_non_latin"])) {$use_non_latin=$_GET["use_non_latin"];} elseif (isset($_POST["use_non_latin"])) {$use_non_latin=$_POST["use_non_latin"];} if (isset($_GET["webroot_writable"])) {$webroot_writable=$_GET["webroot_writable"];} @@ -686,7 +685,16 @@ if (isset($_GET["queue_priority"])) {$queue_priority=$_GET["queue_priority"]; elseif (isset($_POST["queue_priority"])) {$queue_priority=$_POST["queue_priority"];} if (isset($_GET["drop_inbound_group"])) {$drop_inbound_group=$_GET["drop_inbound_group"];} elseif (isset($_POST["drop_inbound_group"])) {$drop_inbound_group=$_POST["drop_inbound_group"];} - +if (isset($_GET["qc_statuses"])) {$qc_statuses=$_GET["qc_statuses"];} + elseif (isset($_POST["qc_statuses"])) {$qc_statuses=$_POST["qc_statuses"];} +if (isset($_GET["qc_lists"])) {$qc_lists=$_GET["qc_lists"];} + elseif (isset($_POST["qc_lists"])) {$qc_lists=$_POST["qc_lists"];} +if (isset($_GET["campaign_shift_start_time"])) {$campaign_shift_start_time=$_GET["campaign_shift_start_time"];} + elseif (isset($_POST["campaign_shift_start_time"])) {$campaign_shift_start_time=$_POST["campaign_shift_start_time"];} +if (isset($_GET["campaign_shift_length"])) {$campaign_shift_length=$_GET["campaign_shift_length"];} + elseif (isset($_POST["campaign_shift_length"])) {$campaign_shift_length=$_POST["campaign_shift_length"];} +if (isset($_GET["campaign_day_start_time"])) {$campaign_day_start_time=$_GET["campaign_day_start_time"];} + elseif (isset($_POST["campaign_day_start_time"])) {$campaign_day_start_time=$_POST["campaign_day_start_time"];} if (isset($script_id)) {$script_id= strtoupper($script_id);} @@ -823,11 +831,12 @@ $mix_container_item = ereg_replace("[^0-9]","",$mix_container_item); $prompt_interval = ereg_replace("[^0-9]","",$prompt_interval); $agent_alert_delay = ereg_replace("[^0-9]","",$agent_alert_delay); $manual_dial_list_id = ereg_replace("[^0-9]","",$manual_dial_list_id); -$qc_enabled = ereg_replace("[^0-9]","",$qc_enabled); $qc_user_level = ereg_replace("[^0-9]","",$qc_user_level); $qc_pass = ereg_replace("[^0-9]","",$qc_pass); $qc_finish = ereg_replace("[^0-9]","",$qc_finish); $qc_commit = ereg_replace("[^0-9]","",$qc_commit); +$campaign_shift_start_time = ereg_replace("[^0-9]","",$campaign_shift_start_time); +$campaign_day_start_time = ereg_replace("[^0-9]","",$campaign_day_start_time); ### DIGITS and DASHES $group_rank = ereg_replace("[^-0-9]","",$group_rank); @@ -857,6 +866,9 @@ $human_answered = ereg_replace("[^NY]","",$human_answered); $tovdad_display = ereg_replace("[^NY]","",$tovdad_display); $campaign_allow_inbound = ereg_replace("[^NY]","",$campaign_allow_inbound); +$qc_enabled = ereg_replace("[^0-9NY]","",$qc_enabled); + + ### ALPHA-NUMERIC ONLY ### $PHP_AUTH_USER = ereg_replace("[^0-9a-zA-Z]","",$PHP_AUTH_USER); $PHP_AUTH_PW = ereg_replace("[^0-9a-zA-Z]","",$PHP_AUTH_PW); @@ -1018,6 +1030,7 @@ $queuemetrics_pass = ereg_replace("[^-\.\:\/\@\_0-9a-zA-Z]","",$queuemetrics_pas $after_hours_message_filename = ereg_replace("[^-\.\:\/\@\_0-9a-zA-Z]","",$after_hours_message_filename); $welcome_message_filename = ereg_replace("[^-\.\:\/\@\_0-9a-zA-Z]","",$welcome_message_filename); $onhold_prompt_filename = ereg_replace("[^-\.\:\/\@\_0-9a-zA-Z]","",$onhold_prompt_filename); +$campaign_shift_length = ereg_replace("[^-\.\:\/\@\_0-9a-zA-Z]","",$campaign_shift_length); ### remove semi-colons ### $lead_filter_sql = ereg_replace(";","",$lead_filter_sql); @@ -1170,11 +1183,12 @@ $list_mix_container = ereg_replace(";","",$list_mix_container); # 80211-1901 - Added DB Schema Version to system settings display # 80224-1334 - Added Queue Priority to in-groups and campaigns # 80302-0232 - added drop_action and transfer to in-group for both in-groups and outbound +# 80310-1504 - added QC settings section to campaign screen # # make sure you have added a user to the vicidial_users MySQL table with at least user_level 8 to access this page the first time -$admin_version = '2.0.5-123'; -$build = '80302-0232'; +$admin_version = '2.0.5-124'; +$build = '80310-1504'; $STARTtime = date("U"); $SQLdate = date("Y-m-d H:i:s"); @@ -1340,18 +1354,29 @@ if ($ADD==231111111111111) {$hh='admin'; $sh='status'; echo "ADDING VICIDIAL STA if ($ADD==3) {$hh='users'; echo "Modify User";} if ($ADD==30) {$hh='campaigns'; echo "Campaign Not Allowed";} if ($ADD==31) - { - $hh='campaigns'; $sh='detail'; echo "Modify Campaign - Detail - $campaign_id"; - if ($SUB==22) {echo " - Statuses";} - if ($SUB==23) {echo " - HotKeys";} - if ($SUB==25) {echo " - Lead Recycle Entries";} - if ($SUB==26) {echo " - Auto Alt Dial Statuses";} - if ($SUB==27) {echo " - Agent Pause Codes";} - if ($SUB==29) {echo " - List Mixes";} - } + { + $hh='campaigns'; $sh='detail'; echo "Modify Campaign - Detail - $campaign_id"; + if ($SUB==22) {echo " - Statuses";} + if ($SUB==23) {echo " - HotKeys";} + if ($SUB==25) {echo " - Lead Recycle Entries";} + if ($SUB==26) {echo " - Auto Alt Dial Statuses";} + if ($SUB==27) {echo " - Agent Pause Codes";} + if ($SUB==28) {echo " - QC";} + if ($SUB==29) {echo " - List Mixes";} + } +if ($ADD==34) + { + $hh='campaigns'; $sh='basic'; echo "Modify Campaign - Basic View - $campaign_id"; + if ($SUB==22) {echo " - Statuses";} + if ($SUB==23) {echo " - HotKeys";} + if ($SUB==25) {echo " - Lead Recycle Entries";} + if ($SUB==26) {echo " - Auto Alt Dial Statuses";} + if ($SUB==27) {echo " - Agent Pause Codes";} + if ($SUB==28) {echo " - QC";} + if ($SUB==29) {echo " - List Mixes";} + } if ($ADD==32) {$hh='campaigns'; $sh='status'; echo "Campaign Statuses";} if ($ADD==33) {$hh='campaigns'; $sh='hotkey'; echo "Campaign HotKeys";} -if ($ADD==34) {$hh='campaigns'; $sh='basic'; echo "Modify Campaign - Basic View";} if ($ADD==35) {$hh='campaigns'; $sh='recycle'; echo "Campaign Lead Recycle Entries";} if ($ADD==36) {$hh='campaigns'; $sh='autoalt'; echo "Campaign Auto Alt Dial Statuses";} if ($ADD==37) {$hh='campaigns'; $sh='pause'; echo "Campaign Agent Pause Codes";} @@ -1382,6 +1407,7 @@ if ($ADD==43) {$hh='campaigns'; $sh='hotkey'; echo "Modify Campaign HotKey";} if ($ADD==44) {$hh='campaigns'; $sh='basic'; echo "Modify Campaign - Basic View";} if ($ADD==45) {$hh='campaigns'; $sh='recycle'; echo "Modify Campaign Lead Recycle";} if ($ADD==47) {$hh='campaigns'; $sh='pause'; echo "Modify Agent Pause Code";} +if ($ADD==48) {$hh='campaigns'; $sh='qc'; echo "Modify Campaign QC Settings";} if ($ADD==49) {$hh='campaigns'; $sh='listmix'; echo "Modify Campaign List Mix";} if ($ADD==411) {$hh='lists'; echo "Modify List";} if ($ADD==4111) {$hh='ingroups'; echo "Modify In-Group";} @@ -2530,6 +2556,37 @@ echo "\n"; @@ -9208,6 +9366,7 @@ if ($ADD==31) echo ""; echo ""; echo ""; + echo ""; echo ""; echo "\n"; echo "
Manual Dial List ID - The default list_id to be used when an agent placces a manual call and a new lead record is created in vicidial_list. Default is 999. This field can contain digits only. +
+ +
+QC Enabled - Setting this field to Y allows for the agent Quality Control features to work. Default is N. + +
+
+
+QC Statuses - This area is where you select which statuses of leads should be gone over by the QC system. Place a check next to the status that you want QC to review. + +
+
+
+QC Lists - This area is where you select which lists of leads should be gone over by the QC system. Place a check next to the list that you want QC to review. + +
+
+
+Campaign Shift Start Time - This is the time that the campaign shift begins. Must only be numbers, 9:30 AM would be 0930. + +
+
+
+Campaign Shift Length - This is the time in Hours and Minutes that the campaign shift lasts. 8 hours would be 08:00. + +
+
+
+Campaign Day Start Time - This is the time that the a new campaign day begins. Must only be numbers, 1:00 AM would be 0100. + + @@ -6496,6 +6553,64 @@ $ADD=31; # go to campaign modification form below } +###################### +# ADD=48 modify campaign QC settings in the system +###################### + +if ($ADD==48) +{ + if ($LOGmodify_campaigns==1) + { + echo ""; + + if (strlen($campaign_id) < 2) + { + echo "
QC SETTINGS NOT MODIFIED - Please go back and look at the data you entered\n"; + } + else + { + $p=0; + $qc_statuses_ct = count($qc_statuses); + while ($p < $qc_statuses_ct) + { + $QC_statuses .= " $qc_statuses[$p]"; + $p++; + } + $p=0; + $qc_lists_ct = count($qc_lists); + while ($p < $qc_lists_ct) + { + $QC_lists .= " $qc_lists[$p]"; + $p++; + } + + if (strlen($QC_statuses)>0) {$QC_statuses .= " -";} + if (strlen($QC_lists)>0) {$QC_lists .= " -";} + + echo "
QC SETTINGS MODIFIED: $campaign_id\n"; + + $stmt="UPDATE vicidial_campaigns SET qc_enabled='$qc_enabled',qc_statuses='$QC_statuses',qc_lists='$QC_lists',campaign_shift_start_time='$campaign_shift_start_time',campaign_shift_length='$campaign_shift_length',campaign_day_start_time='$campaign_day_start_time' where campaign_id='$campaign_id';"; + $rslt=mysql_query($stmt, $link); + + ### LOG CHANGES TO LOG FILE ### + if ($WeBRooTWritablE > 0) + { + $fp = fopen ("./admin_changes_log.txt", "a"); + fwrite ($fp, "$date|MODIFY CAMP QC SETTING|$PHP_AUTH_USER|$ip|$stmt|\n"); + fclose($fp); + } + } + } + else + { + echo "You do not have permission to view this page\n"; + exit; + } +$SUB=28; +$ADD=31; # go to campaign modification form below +} + + ###################### # ADD=49 modify campaign list mix in the system ###################### @@ -9062,6 +9177,12 @@ if ($ADD==31) $default_xfer_group = $row[67]; $queue_priority = $row[69]; $drop_inbound_group = $row[70]; + $qc_enabled = $row[71]; + $qc_statuses = $row[72]; + $qc_lists = $row[73]; + $campaign_shift_start_time = $row[74]; + $campaign_shift_length = $row[75]; + $campaign_day_start_time = $row[76]; if (ereg("DISABLED",$list_order_mix)) {$DEFlistDISABLE = ''; $DEFstatusDISABLED=0;} @@ -9094,12 +9215,25 @@ if ($ADD==31) } } + $dial_statuses = preg_replace("/ -$/","",$dial_statuses); + $Dstatuses = explode(" ", $dial_statuses); + $Ds_to_print = (count($Dstatuses) -1); + + $qc_statuses = preg_replace("/^ | -$/","",$qc_statuses); + $QCstatuses = explode(" ", $qc_statuses); + $QCs_to_print = (count($QCstatuses) -0); + + $qc_lists = preg_replace("/^ | -$/","",$qc_lists); + $QClists = explode(" ", $qc_lists); + $QCL_to_print = (count($QClists) -0); + ##### get status listings for dynamic pulldown $stmt="SELECT * from vicidial_statuses order by status"; $rslt=mysql_query($stmt, $link); $statuses_to_print = mysql_num_rows($rslt); $statuses_list=''; $dial_statuses_list=''; + $qc_statuses_list=''; $o=0; while ($statuses_to_print > $o) @@ -9111,6 +9245,19 @@ if ($ADD==31) $LRstatuses_list .= "\n"; if (eregi("Y",$rowx[2])) {$HKstatuses_list .= "\n";} + + $qc_statuses_list .= "$rowx[0] - $rowx[1]\n"; if (eregi("Y",$rowx[2])) {$HKstatuses_list .= "\n";} + + $qc_statuses_list .= "
Lead RecyclingAuto Alt DialPause CodesQCList Mix Real-Time
\n"; @@ -9520,7 +9679,7 @@ if ($ADD==31) } - + ##### CAMPAIGN CUSTOM STATUSES ##### if ($SUB==22) { @@ -9600,7 +9759,7 @@ if ($ADD==31) echo "
\n"; } - + ##### CAMPAIGN HOTKEYS ##### if ($SUB==23) { echo "
CUSTOM HOT KEYS WITHIN THIS CAMPAIGN:   $NWB#vicidial_campaign_hotkeys$NWE
\n"; @@ -9650,7 +9809,7 @@ if ($ADD==31) echo "
\n"; } - + ##### CAMPAIGN LEAD RECYCLING ##### if ($SUB==25) { echo "

LEAD RECYCLING WITHIN THIS CAMPAIGN:   $NWB#vicidial_lead_recycle$NWE
\n"; @@ -9697,7 +9856,7 @@ if ($ADD==31) echo "
\n"; } - + ##### CAMPAIGN AUTO-ALT-NUMBER DIALING ##### if ($SUB==26) { echo "

AUTO ALT NUMBER DIALING FOR THIS CAMPAIGN:   $NWB#vicidial_auto_alt_dial_statuses$NWE
\n"; @@ -9734,7 +9893,7 @@ if ($ADD==31) echo "
\n"; } - + ##### CAMPAIGN PAUSE CODES ##### if ($SUB==27) { echo "

AGENT PAUSE CODES FOR THIS CAMPAIGN:   $NWB#vicidial_pause_codes$NWE
\n"; @@ -9777,6 +9936,49 @@ if ($ADD==31) echo "
\n"; } + ##### CAMPAIGN QC SETTINGS ##### + if ($SUB==28) + { + $stmt="SELECT list_id,list_name,active from vicidial_lists where campaign_id='$campaign_id'"; + $rslt=mysql_query($stmt, $link); + $lists_to_print = mysql_num_rows($rslt); + $qc_lists_list=''; + + $p=0; + while ($lists_to_print > $p) + { + $rowx=mysql_fetch_row($rslt); + $qc_lists_list .= "
QC SETTINGS FOR THIS CAMPAIGN:
\n"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "
\n"; + echo "\n"; + echo "QC Enabled: $NWB#vicidial_campaigns-qc_enabled$NWE
QC Statuses:
$NWB#vicidial_campaigns-qc_statuses$NWE
$qc_statuses_list
QC Lists:
$NWB#vicidial_campaigns-qc_lists$NWE
$qc_lists_list
Campaign Shift Start Time: $NWB#vicidial_campaigns-campaign_shift_start_time$NWE
Campaign Shift Length: $NWB#vicidial_campaigns-campaign_shift_length$NWE
Campaign Day Start Time: $NWB#vicidial_campaigns-campaign_day_start_time$NWE
\n"; + echo "

\n"; + } + if ($SUB < 1) { @@ -10163,6 +10365,7 @@ if ( ($ADD==34) or ($ADD==31) ) { if ($LOGmodify_campaigns==1) { + ##### CAMPAIGN LIST MIX SETTINGS ##### if ($SUB==29) { ##### get list_id listings for dynamic pulldown