Added option to use the owner field to define a time zone abbreviation code when loading leads

Bug fixes
Updated the phone codes table and loading code

git-svn-id: svn://192.168.202.10@1643 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
mattf
2011-04-24 13:55:06 +00:00
parent 48db22d5ed
commit 0d30227c9e
11 changed files with 370 additions and 34 deletions
+5
View File
@@ -539,6 +539,11 @@ OTHER CHANGES:
all of the leads inside the lists set to this campaign in order to call
them in the order you have specified.
122. Added option to use the owner field to define a time zone abbreviation code
Works across web/api/cli lead loading methods. There is also an option
in the time zone updating script to use this method.
+224 -7
View File
@@ -27,6 +27,7 @@
# 91129-2155 - Replaced SELECT STAR queries with field lists, formatting fixes
# 100117-2122 - Added force-date option and activated FSO-FSA and LSS-FSA
# 110406-0652 - Added omitlistid option
# 110424-0834 - Added ownertimezone option
#
use Time::Local;
@@ -61,6 +62,7 @@ if (length($ARGV[0])>1)
print " [--nanpa-prefix-gmt] = Attempt nanpa prefix lookup for timezones\n";
print " [--singlelistid=XXX] = Only lookup and alter leads in one list_id\n";
print " [--omitlistid=XXX-YYY-ZZZ] = Skip these list_ids, separated by dash\n";
print " [--ownertimezone] = Check the owner field for time zone abbreviation: (EST,CST,etc...)\n";
print " [--force-date=YYYY-MM-DD] = Force this date as date to run\n";
print "\n";
@@ -97,6 +99,11 @@ if (length($ARGV[0])>1)
$searchNANPA=1;
if ($q < 1) {print "\n----- DO NANPA PREFIX LOOKUP -----\n\n";}
}
if ($args =~ /--ownertimezone/i)
{
$ownertimezone=1;
if ($q < 1) {print "\n----- OWNER TIMEZONE CHECK -----\n\n";}
}
if ($args =~ /-singlelistid=/i)
{
@data_in = split(/-singlelistid=/,$args);
@@ -243,6 +250,7 @@ if (length($omitlistidSQL)> 0)
{$omitlistidSQL = "where list_id NOT IN('$omitlistidSQL')";}
}
else {$XomitlistidSQL=''; $omitlistidSQL='';}
$stmtA = "select distinct phone_code from vicidial_list $listSQL $omitlistidSQL;";
if($DBX){print STDERR "\n|$stmtA|\n";}
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
@@ -250,7 +258,7 @@ $sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$rec_countY=0;
@phone_codes=@MT;
$phone_codes_list='|';
$phone_codes_list="'";
while ($sthArows > $rec_countY)
{
@@ -260,20 +268,46 @@ while ($sthArows > $rec_countY)
$phone_codes_ORIG[$rec_countY] = $aryA[0];
$phone_codes[$rec_countY] =~ s/011|0011| |\t|\r|\n//gi;
# if ( ($phone_codes_list !~ /\|$phone_codes[$rec_countY]\|/) && (length($phone_codes[$rec_countY]) > 0) )
# {
# $phone_codes_list .= "$phone_codes[$rec_countY]|";
# }
$phone_codes_list .= "$aryA[0]'";
if ($DBX) {print "|",$aryA[0],"|","\n";}
$rec_countY++;
}
$sthA->finish();
if ($DB) {print " - Unique Country dial codes found: $rec_countY\n";}
if (length($phone_codes_list)<2) {$phone_codes_list="''";}
if ($ownertimezone > 0)
{
$stmtA = "select distinct tz_code,GMT_offset,country_code from vicidial_phone_codes where country_code IN($phone_codes_list);";
if($DBX){print STDERR "\n|$stmtA|\n";}
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$rec_countC=0;
@tz_codes=@MT;
@tz_offset=@MT;
@tz_country=@MT;
$tz_codes_list='|';
while ($sthArows > $rec_countC)
{
@aryA = $sthA->fetchrow_array;
$tz_codes[$rec_countC] = $aryA[0];
$tz_offset[$rec_countC] = $aryA[1];
$tz_country[$rec_countC] = $aryA[2];
$tz_codes_list .= "$aryA[0]|";
$rec_countC++;
}
$sthA->finish();
if ($DB) {print " - Unique time zone codes found: $rec_countC $tz_codes_list\n";}
}
##### Put all country/area code records into an array for speed
$stmtA = "select country_code,country,areacode,state,GMT_offset,DST,DST_range,geographic_description from vicidial_phone_codes;";
$stmtA = "select country_code,country,areacode,state,GMT_offset,DST,DST_range,geographic_description,tz_code from vicidial_phone_codes;";
if($DBX){print STDERR "\n|$stmtA|\n";}
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
@@ -283,7 +317,7 @@ $rec_countZ=0;
while ($sthArows > $rec_countZ)
{
@aryA = $sthA->fetchrow_array;
$codefile[$rec_countZ] = "$aryA[0]\t$aryA[1]\t$aryA[2]\t$aryA[3]\t$aryA[4]\t$aryA[5]\t$aryA[6]\t$aryA[7]\n";
$codefile[$rec_countZ] = "$aryA[0]\t$aryA[1]\t$aryA[2]\t$aryA[3]\t$aryA[4]\t$aryA[5]\t$aryA[6]\t$aryA[7]\t$aryA[8]\n";
$rec_countZ++;
}
@@ -887,6 +921,188 @@ foreach (@phone_codes)
$TOTALnanpa_updated_count = ($TOTALnanpa_updated_count + $nanpa_updated_count);
##### START RUN LOOP FOR EACH TIME ZONE CODE RECORD #####
$tzcode_updated_count=0;
if ($ownertimezone > 0)
{
if ($DB) {print "TIME ZONE CODE RUN START...\n";}
$e=0;
foreach (@tz_codes)
{
$area_GMT_method='';
$area_GMT = $tz_offset[$e];
$area_GMT =~ s/\+//gi;
$area_GMT = ($area_GMT + 0);
$stmtA = "select distinct DST_range from vicidial_phone_codes where tz_code='$tz_codes[$e]' and country_code='$tz_country[$e]' order by DST_range desc limit 1;";
if($DBX){print STDERR "\n|$stmtA|\n";}
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
@aryA = $sthA->fetchrow_array;
$area_GMT_method = $aryA[0];
$sthA->finish();
if ($DBX) {print "PROCESSING THIS TIME ZONE CODE: $tz_codes[$e]|$tz_country[$e]|$area_GMT|$area_GMT_method\n";}
$stmtA = "select count(*) from vicidial_list where owner='$tz_codes[$e]' and phone_code='$tz_country[$e]' $XlistSQL $XomitlistidSQL;";
if($DBX){print STDERR "\n|$stmtA|\n";}
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$rec_countZ=0;
@aryA = $sthA->fetchrow_array;
$rec_countZ = $aryA[0];
$sthA->finish();
if (!$rec_countZ)
{
# if ($DB) {print " IGNORING: $tzcodefile[$e]\n";}
$ei++;
}
else
{
$AC_GMT_diff = ($area_GMT - $LOCAL_GMT_OFF_STD);
$AC_localtime = ($time + (3600 * $AC_GMT_diff));
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($AC_localtime);
$year = ($year + 1900);
$mon++;
if ($mon < 10) {$mon = "0$mon";}
if ($mday < 10) {$mday = "0$mday";}
if ($hour < 10) {$hour = "0$hour";}
if ($min < 10) {$min = "0$min";}
if ($sec < 10) {$sec = "0$sec";}
$dsec = ( ( ($hour * 3600) + ($min * 60) ) + $sec );
$AC_processed=0;
if ( (!$AC_processed) && ($area_GMT_method =~ /SSM-FSN/) )
{
if ($DBX) {print " Second Sunday March to First Sunday November\n";}
&USACAN_dstcalc;
if ($DBX) {print " DST: $USACAN_DST\n";}
if ($USACAN_DST) {$area_GMT++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($area_GMT_method =~ /FSA-LSO/) )
{
if ($DBX) {print " First Sunday April to Last Sunday October\n";}
&NA_dstcalc;
if ($DBX) {print " DST: $NA_DST\n";}
if ($NA_DST) {$area_GMT++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($area_GMT_method =~ /LSM-LSO/) )
{
if ($DBX) {print " Last Sunday March to Last Sunday October\n";}
&GBR_dstcalc;
if ($DBX) {print " DST: $GBR_DST\n";}
if ($GBR_DST) {$area_GMT++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($area_GMT_method =~ /LSO-LSM/) )
{
if ($DBX) {print " Last Sunday October to Last Sunday March\n";}
&AUS_dstcalc;
if ($DBX) {print " DST: $AUS_DST\n";}
if ($AUS_DST) {$area_GMT++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($area_GMT_method =~ /FSO-LSM/) )
{
if ($DBX) {print " First Sunday October to Last Sunday March\n";}
&AUST_dstcalc;
if ($DBX) {print " DST: $AUST_DST\n";}
if ($AUST_DST) {$area_GMT++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($area_GMT_method =~ /FSO-FSA/) )
{
if ($DBX) {print " First Sunday October to First Sunday April\n";}
&AUSE_dstcalc;
if ($DBX) {print " DST: $AUSE_DST\n";}
if ($AUSE_DST) {$area_GMT++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($area_GMT_method =~ /FSO-TSM/) )
{
if ($DBX) {print " First Sunday October to Third Sunday March\n";}
&NZL_dstcalc;
if ($DBX) {print " DST: $NZL_DST\n";}
if ($NZL_DST) {$area_GMT++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($area_GMT_method =~ /LSS-FSA/) )
{
if ($DBX) {print " Last Sunday September to First Sunday April\n";}
&NZLN_dstcalc;
if ($DBX) {print " DST: $NZLN_DST\n";}
if ($NZLN_DST) {$area_GMT++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($area_GMT_method =~ /TSO-LSF/) )
{
if ($DBX) {print " Third Sunday October to Last Sunday February\n";}
&BZL_dstcalc;
if ($DBX) {print " DST: $BZL_DST\n";}
if ($BZL_DST) {$area_GMT++;}
$AC_processed++;
}
if (!$AC_processed)
{
if ($DBX) {print " No DST Method Found\n";}
if ($DBX) {print " DST: 0\n";}
$AC_processed++;
}
if ($AC_processed)
{
$stmtA = "select count(*) from vicidial_list where owner='$tz_codes[$e]' and phone_code='$tz_country[$e]' and (gmt_offset_now != '$area_GMT' or gmt_offset_now IS NULL) $XlistSQL $XomitlistidSQL;";
if($DBX){print STDERR "\n|$stmtA|\n";}
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$rec_countW=0;
@aryA = $sthA->fetchrow_array;
$rec_countW = $aryA[0];
$sthA->finish();
if (!$rec_countW)
{
if ($DBX) {print " ALL GMT ALREADY CORRECT FOR : $tz_codes[$e] $tz_country[$e] $area_GMT\n";}
$ei++;
}
else
{
$stmtA = "UPDATE vicidial_list set gmt_offset_now='$area_GMT' where owner='$tz_codes[$e]' and phone_code='$tz_country[$e]' and (gmt_offset_now != '$area_GMT' or gmt_offset_now IS NULL) $XlistSQL $XomitlistidSQL;";
if($DBX){print STDERR "\n|$stmtA|\n";}
if (!$T)
{
$affected_rows = $dbhA->do($stmtA);
$tzcode_updated_count = ($tzcode_updated_count + $affected_rows);
}
$Prec_countW = sprintf("%8s", $rec_countW);
if ($DB) {print " $Prec_countW records in $tz_codes[$e] $tz_country[$e] updated to $area_GMT\n";}
$ee++;
# sleep(1);
}
}
}
$ep++;
$e++;
}
}
##### STOP RUN LOOP FOR EACH TIME ZONE CODE RECORD #####
if($DB){print "Time Zone Code Updates: $tzcode_updated_count\n";}
$TOTALtzcode_updated_count = ($TOTALtzcode_updated_count + $tzcode_updated_count);
$d++;
}
@@ -898,6 +1114,7 @@ if($DB){print "\nGRAND TOTALS:\n";}
if($DB){print "Postal Updates: $TOTALpostal_updated_count\n";}
if($DB){print "Area Code Updates: $TOTALarea_updated_count\n";}
if($DB){print "NANPA Updates: $TOTALnanpa_updated_count\n";}
if($DB){print "TIME ZONE Updates: $TOTALtzcode_updated_count\n";}
if($DB){print "\nDONE\n";}
$secy = time(); $secz = ($secy - $secX); $minz = ($secz/60); # calculate script runtime so far
if ($q < 1) {print " - process runtime ($secz sec) ($minz minutes)\n";}
+9 -7
View File
@@ -1,8 +1,8 @@
#!/usr/bin/perl
#
# ADMIN_area_code_populate.pl version 2.2.0
# ADMIN_area_code_populate.pl version 2.4
#
# Copyright (C) 2010 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
# Copyright (C) 2011 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
#
# Description:
# server application that allows load areacodes into to asterisk list database
@@ -18,6 +18,7 @@
# 90204-0806 - Added duplicate check to nanpa list loading
# 90317-2353 - Added city, state, postal_code, country to nanpa format
# 100902-1536 - Move old data files if wgetting new ones
# 110424-0735 - Added timezone abbreviation column
#
@@ -25,7 +26,7 @@
$PATHconf = "/etc/astguiclient.conf";
$domain = "http://phonecodes.vicidial.com";
#$URL1 = "$domain/phone_codes_GMT-latest.txt";
$URL1 = "$domain/phone_codes_GMT-latest-220.txt";
$URL1 = "$domain/phone_codes_GMT-latest-24.txt";
$URL2 = "$domain/GMT_USA_zip-latest.txt";
@@ -285,7 +286,7 @@ else
print STDERR "Downloading latest phone codes tables\n";
# move old files
`mv -f $PATHhome/phone_codes_GMT-latest-220.txt $PATHhome/phone_codes_GMT-latest-220-old.txt`;
`mv -f $PATHhome/phone_codes_GMT-latest-24.txt $PATHhome/phone_codes_GMT-latest-24-old.txt`;
`mv -f $PATHhome/GMT_USA_zip-latest.txt $PATHhome/GMT_USA_zip-latest-old.txt`;
# get files
@@ -293,8 +294,8 @@ else
`wget $URL2`;
}
#### BEGIN vicidial_phone_codes population from phone_codes_GMT-latest-220.txt file ####
open(codefile, "$PATHhome/phone_codes_GMT-latest-220.txt") || die "can't open $PATHhome/phone_codes_GMT-latest-220.txt: $!\n";
#### BEGIN vicidial_phone_codes population from phone_codes_GMT-latest-24.txt file ####
open(codefile, "$PATHhome/phone_codes_GMT-latest-24.txt") || die "can't open $PATHhome/phone_codes_GMT-latest-24.txt: $!\n";
@codefile = <codefile>;
close(codefile);
if ( ($purge_table > 0) && ($#codefile > 10) )
@@ -316,6 +317,7 @@ else
if ($codefile[$pc] !~ /GEOGRAPHIC DESCRIPTION/)
{
$pc++;
$row[8] =~ s/\r|\n|\t| $//gi;
$row[7] =~ s/\r|\n|\t| $//gi;
$row[6] =~ s/\r|\n|\t| $//gi;
$row[5] =~ s/\r|\n|\t| $//gi;
@@ -324,7 +326,7 @@ else
$row[2] =~ s/\r|\n|\t| $//gi;
$row[1] =~ s/\r|\n|\t| $//gi;
$row[0] =~ s/\r|\n|\t| $//gi;
$ins_stmt.="('$row[0]', '$row[1]', '$row[2]', '$row[3]', '$row[4]', '$row[5]', '$row[6]', '$row[7]'), ";
$ins_stmt.="('$row[0]', '$row[1]', '$row[2]', '$row[3]', '$row[4]', '$row[5]', '$row[6]', '$row[7]', '$row[8]'), ";
if ($pc =~ /00$/)
{
chop($ins_stmt);
+1 -1
View File
@@ -147,7 +147,7 @@ use DBI;
$dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass")
or die "Couldn't connect to database: " . DBI->errstr;
##### change Pacific Mountain
##### change call time
$stmtA = "UPDATE vicidial_call_times set call_time_comments='auto-modified $timestamp' $startSQL $stopSQL where call_time_id='$calltime';";
if($DB){print STDERR "\n|$stmtA|\n";}
+3 -2
View File
@@ -9,11 +9,12 @@
#
# /usr/share/astguiclient/AST_call_log_export.pl --campaign=GOODB-GROUP1-GROUP3-GROUP4-SPECIALS-DNC_BEDS --output-format=tab-basic --debug --filename=BEDSsaleDATETIME.txt --email-list=test@gmail.com --email-sender=test@test.com
#
# Copyright (C) 2010 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
# Copyright (C) 2011 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
#
# CHANGES
# 100310-0112 - First version
# 110202-2214 - Added ncad14csv format
# 110423-0350 - Do not die on email issue
#
$txt = '.txt';
@@ -543,7 +544,7 @@ if ( (length($Ealert)>5) && (length($email_list) > 3) )
$mail{body} .= "$boundary";
$mail{body} .= "--\n";
sendmail(%mail) or die $mail::Sendmail::error;
sendmail(%mail); # or die $mail::Sendmail::error;
if (!$Q) {print "ok. log says:\n", $mail::sendmail::log;} ### print mail log for status
}
+42 -1
View File
@@ -50,9 +50,10 @@
# 100624-2143 - Added dccsvref52 file format
# 100928-1121 - Added file-prefix-filter option
# 110420-0944 - Fixed file prefix issue with multiple processes running
# 110424-0948 - Added time-zone-code-gmt option to use time zone code from the owner field
#
$version = '110420-0944';
$version = '110424-0948';
$secX = time();
$MT[0]='';
@@ -166,6 +167,7 @@ if (length($ARGV[0])>1)
print " [--duplicate-tap-list-check] = checks for the same title/alt-number in the same list ID before inserting lead\n";
print " [--duplicate-tap-system-check] = checks for the same title/alt-number in the entire system before inserting lead\n";
print " [--postal-code-gmt] = checks for the time zone based on the postal code given where available\n";
print " [--time-zone-code-gmt] = checks for the time zone based on the owner field time zone code given where available\n";
print " [--ftp-pull] = grabs lead files from a remote FTP server, uses REPORTS FTP login information\n";
print " [--ftp-dir=leads_in] = remote FTP server directory to grab files from, should have a DONE sub-directory\n";
print " [--email-list=test@test.com:test2@test.com] = send email results for each file to these addresses\n";
@@ -310,6 +312,11 @@ if (length($ARGV[0])>1)
$postalgmt=1;
if ($q < 1) {print "\n----- POSTAL CODE TIMEZONE -----\n\n";}
}
if ($args =~ /-time-zone-code-gmt/i)
{
$tzcodegmt=1;
if ($q < 1) {print "\n----- TZ CODE TIMEZONE -----\n\n";}
}
if ($args =~ /-new-list-for-each-file/i)
{
@@ -1754,6 +1761,40 @@ foreach(@FILES)
$sthA->finish();
}
}
if ( ($tzcodegmt > 0) && (length($owner)>1) )
{
$dst_range='';
$dst='N';
$gmt_offset=0;
$stmtA="select GMT_offset from vicidial_phone_codes where tz_code='$owner' and country_code='$phone_code' limit 1;";
if($DBX){print STDERR "\n|$stmtA|\n";}
$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;
$gmt_offset = $aryA[0]; $gmt_offset =~ s/\+| //gi;
$PC_processed++;
$postalgmt_found++;
}
$sthA->finish();
$stmtA = "select distinct DST_range from vicidial_phone_codes where tz_code='$owner' and country_code='$phone_code' order by DST_range desc limit 1;";
if($DBX){print STDERR "\n|$stmtA|\n";}
$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;
$dst_range = $aryA[0];
if (length($dst_range)>2) {$dst = 'Y';}
if ($DBX) {print " TZcode GMT record found for $owner: |$gmt_offset|$dst|$dst_range|\n";}
}
$sthA->finish();
}
if ($postalgmt_found < 1)
{
$PC_processed=0;
+4
View File
@@ -56,6 +56,7 @@ Changes:
110316-2035 - Added reset_time variable and NAMEPHONE dup search
110404-1356 - Added uniqueid search parameter to recording_lookup function
110409-0822 - Added run_time logging of API functions
110424-0854 - Added option for time zone code lookups using owner field in add_lead function
@@ -301,6 +302,9 @@ duplicate_check - Check for duplicate records in the system, can select more tha
custom_fields - Y or N, default is N. Defines whether the API will accept custom field data when inserting leads into the vicidial_list table
For custom fields to be inserted, just add the field label as a variable to the URL string
For example, if the field_label is "favorite_color" you would add "&favorite_color=blue"
tz_method - <empty>, POSTAL or TZCODE, default is <empty> which will use the country code and areacode for time zone lookups
POSTAL relies on the postal_code field
TZCODE relies on the owner field being populated with a proper time zone code
(for fields with spaces in the values, you can replace the space with a plus + sign[address, city, first_name, etc...])
OPTIONAL FIELDS-
+3 -2
View File
@@ -880,7 +880,8 @@ state VARCHAR(4),
GMT_offset VARCHAR(6),
DST enum('Y','N'),
DST_range VARCHAR(8),
geographic_description VARCHAR(30)
geographic_description VARCHAR(30),
tz_code VARCHAR(4) default ''
);
CREATE TABLE vicidial_inbound_groups (
@@ -2454,7 +2455,7 @@ ALTER TABLE vicidial_call_notes_archive MODIFY notesid INT(9) UNSIGNED NOT NULL;
CREATE TABLE vicidial_lead_search_log_archive LIKE vicidial_lead_search_log;
ALTER TABLE vicidial_lead_search_log_archive MODIFY search_log_id INT(9) UNSIGNED NOT NULL;
UPDATE system_settings SET db_schema_version='1269',db_schema_update_date=NOW();
UPDATE system_settings SET db_schema_version='1270',db_schema_update_date=NOW();
GRANT RELOAD ON *.* TO cron@'%';
GRANT RELOAD ON *.* TO cron@localhost;
+4
View File
@@ -735,3 +735,7 @@ UPDATE system_settings SET db_schema_version='1268',db_schema_update_date=NOW();
ALTER TABLE vicidial_api_log ADD run_time VARCHAR(20) default '0';
UPDATE system_settings SET db_schema_version='1269',db_schema_update_date=NOW();
ALTER TABLE vicidial_phone_codes ADD tz_code VARCHAR(4) default '';
UPDATE system_settings SET db_schema_version='1270',db_schema_update_date=NOW();
+37 -7
View File
@@ -2,7 +2,7 @@
# admin_listloader_third_gen.php - version 2.4
# (based upon - new_listloader_superL.php script)
#
# Copyright (C) 2010 Matt Florell,Joe Johnson <vicidial@gmail.com> LICENSE: AGPLv2
# Copyright (C) 2011 Matt Florell,Joe Johnson <vicidial@gmail.com> LICENSE: AGPLv2
#
# ViciDial web-based lead loader from formatted file
#
@@ -40,10 +40,11 @@
# 100707-1156 - Made it so you cannot submit with no lead file selected. Also fixed Start Over Link <mikec>
# 100712-1416 - Added entry_list_id field to vicidial_list to preserve link to custom fields if any
# 100728-0900 - Filtered uploaded filenames for unsupported characters
# 110424-0926 - Added option for time zone code in the owner field
#
$version = '2.4-39';
$build = '100728-0900';
$version = '2.4-40';
$build = '110424-0926';
require("dbconnect.php");
@@ -439,7 +440,7 @@ if ( (!$OK_to_process) or ( ($leadfile) and ($file_layout!="standard") ) )
</tr>
<tr>
<td align=right width="25%"><font face="arial, helvetica" size=2>Lead Time Zone Lookup: </font></td>
<td align=left width="75%"><font face="arial, helvetica" size=1><select size=1 name=postalgmt><option selected value="AREA">COUNTRY CODE AND AREA CODE ONLY</option><option value="POSTAL">POSTAL CODE FIRST</option></select></td>
<td align=left width="75%"><font face="arial, helvetica" size=1><select size=1 name=postalgmt><option selected value="AREA">COUNTRY CODE AND AREA CODE ONLY</option><option value="POSTAL">POSTAL CODE FIRST</option><option value="TZCODE">OWNER TIME ZONE CODE FIRST</option></select></td>
</tr>
<tr>
<td align=center colspan=2><input type=submit value="SUBMIT" name='submit_file'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=button onClick="javascript:document.location='admin_listloader_third_gen.php'" value="START OVER" name='reload_page'></td>
@@ -824,7 +825,7 @@ if ($OK_to_process)
else
{$phone_list .= "$phone_number$US$list_id|";}
$gmt_offset = lookup_gmt($phone_code,$USarea,$state,$LOCAL_GMT_OFF_STD,$Shour,$Smin,$Ssec,$Smon,$Smday,$Syear,$postalgmt,$postal_code);
$gmt_offset = lookup_gmt($phone_code,$USarea,$state,$LOCAL_GMT_OFF_STD,$Shour,$Smin,$Ssec,$Smon,$Smday,$Syear,$postalgmt,$postal_code,$owner);
if (strlen($custom_SQL)>3)
{
@@ -1204,7 +1205,7 @@ if (($leadfile) && ($LF_path))
else
{$phone_list .= "$phone_number$US$list_id|";}
$gmt_offset = lookup_gmt($phone_code,$USarea,$state,$LOCAL_GMT_OFF_STD,$Shour,$Smin,$Ssec,$Smon,$Smday,$Syear,$postalgmt,$postal_code);
$gmt_offset = lookup_gmt($phone_code,$USarea,$state,$LOCAL_GMT_OFF_STD,$Shour,$Smin,$Ssec,$Smon,$Smday,$Syear,$postalgmt,$postal_code,$owner);
if ($multi_insert_counter > 8)
{
@@ -1450,7 +1451,7 @@ exit;
function lookup_gmt($phone_code,$USarea,$state,$LOCAL_GMT_OFF_STD,$Shour,$Smin,$Ssec,$Smon,$Smday,$Syear,$postalgmt,$postal_code)
function lookup_gmt($phone_code,$USarea,$state,$LOCAL_GMT_OFF_STD,$Shour,$Smin,$Ssec,$Smon,$Smday,$Syear,$postalgmt,$postal_code,$owner)
{
global $link;
@@ -1474,6 +1475,35 @@ function lookup_gmt($phone_code,$USarea,$state,$LOCAL_GMT_OFF_STD,$Shour,$Smin,$
}
}
}
if ( ($postalgmt=="TZCODE") && (strlen($owner)>1) )
{
$dst_range='';
$dst='N';
$gmt_offset=0;
$stmt="select GMT_offset from vicidial_phone_codes where tz_code='$owner' and country_code='$phone_code' limit 1;";
$rslt=mysql_query($stmt, $link);
$pc_recs = mysql_num_rows($rslt);
if ($pc_recs > 0)
{
$row=mysql_fetch_row($rslt);
$gmt_offset = $row[0]; $gmt_offset = eregi_replace("\+","",$gmt_offset);
$PC_processed++;
$postalgmt_found++;
$post++;
}
$stmt = "select distinct DST_range from vicidial_phone_codes where tz_code='$owner' and country_code='$phone_code' order by DST_range desc limit 1;";
$rslt=mysql_query($stmt, $link);
$pc_recs = mysql_num_rows($rslt);
if ($pc_recs > 0)
{
$row=mysql_fetch_row($rslt);
$dst_range = $row[0];
if (strlen($dst_range)>2) {$dst = 'Y';}
}
}
if ($postalgmt_found < 1)
{
$PC_processed=0;
+38 -7
View File
@@ -46,10 +46,11 @@
# 110316-2035 - Added reset_time variable and NAMEPHONE dup search
# 110404-1356 - Added uniqueid search parameter to recording_lookup function
# 110409-0822 - Added run_time logging of API functions
# 110424-0854 - Added option for time zone code lookups using owner field
#
$version = '2.4-32';
$build = '110409-0822';
$version = '2.4-33';
$build = '110424-0854';
$startMS = microtime();
@@ -240,6 +241,8 @@ if (isset($_GET["reset_time"])) {$reset_time=$_GET["reset_time"];}
elseif (isset($_POST["reset_time"])) {$reset_time=$_POST["reset_time"];}
if (isset($_GET["uniqueid"])) {$uniqueid=$_GET["uniqueid"];}
elseif (isset($_POST["uniqueid"])) {$uniqueid=$_POST["uniqueid"];}
if (isset($_GET["tz_method"])) {$tz_method=$_GET["tz_method"];}
elseif (isset($_POST["tz_method"])) {$tz_method=$_POST["tz_method"];}
header ("Content-type: text/html; charset=utf-8");
@@ -365,6 +368,7 @@ if ($non_latin < 1)
$delete_leads=ereg_replace("[^A-Z]","",$delete_leads);
$reset_time=ereg_replace("[^-_0-9]","",$reset_time);
$uniqueid=ereg_replace("[^- \.\_0-9a-zA-Z]","",$uniqueid);
$tz_method = ereg_replace("[^-\_0-9a-zA-Z]","",$tz_method);
}
else
{
@@ -385,7 +389,6 @@ $CIDdate = date("mdHis");
$ENTRYdate = date("YmdHis");
$ip = getenv("REMOTE_ADDR");
$MT[0]='';
$postalgmt='';
$api_script = 'non-agent';
$api_logging = 1;
@@ -2832,7 +2835,7 @@ if ($function == 'add_lead')
### get current gmt_offset of the phone_number
$gmt_offset = lookup_gmt($phone_code,$USarea,$state,$LOCAL_GMT_OFF_STD,$Shour,$Smin,$Ssec,$Smon,$Smday,$Syear,$postalgmt,$postal_code);
$gmt_offset = lookup_gmt($phone_code,$USarea,$state,$LOCAL_GMT_OFF_STD,$Shour,$Smin,$Ssec,$Smon,$Smday,$Syear,$tz_method,$postal_code,$owner);
### insert a new lead in the system with this phone number
@@ -3472,7 +3475,7 @@ if ($function == 'update_lead')
else
{
### get current gmt_offset of the phone_number
$gmt_offset = lookup_gmt($phone_code,$USarea,$state,$LOCAL_GMT_OFF_STD,$Shour,$Smin,$Ssec,$Smon,$Smday,$Syear,$postalgmt,$postal_code);
$gmt_offset = lookup_gmt($phone_code,$USarea,$state,$LOCAL_GMT_OFF_STD,$Shour,$Smin,$Ssec,$Smon,$Smday,$Syear,$tz_method,$postal_code,$owner);
if (strlen($status)<1)
{$status='NEW';}
@@ -3688,12 +3691,12 @@ exit;
##### LOOKUP GMT, FINDS THE CURRENT GMT OFFSET FOR A PHONE NUMBER #####
function lookup_gmt($phone_code,$USarea,$state,$LOCAL_GMT_OFF_STD,$Shour,$Smin,$Ssec,$Smon,$Smday,$Syear,$postalgmt,$postal_code)
function lookup_gmt($phone_code,$USarea,$state,$LOCAL_GMT_OFF_STD,$Shour,$Smin,$Ssec,$Smon,$Smday,$Syear,$tz_method,$postal_code,$owner)
{
require("dbconnect.php");
$postalgmt_found=0;
if ( (eregi("POSTAL",$postalgmt)) && (strlen($postal_code)>4) )
if ( (eregi("POSTAL",$tz_method)) && (strlen($postal_code)>4) )
{
if (preg_match('/^1$/', $phone_code))
{
@@ -3712,6 +3715,34 @@ if ( (eregi("POSTAL",$postalgmt)) && (strlen($postal_code)>4) )
}
}
}
if ( ($tz_method=="TZCODE") && (strlen($owner)>1) )
{
$dst_range='';
$dst='N';
$gmt_offset=0;
$stmt="select GMT_offset from vicidial_phone_codes where tz_code='$owner' and country_code='$phone_code' limit 1;";
$rslt=mysql_query($stmt, $link);
$pc_recs = mysql_num_rows($rslt);
if ($pc_recs > 0)
{
$row=mysql_fetch_row($rslt);
$gmt_offset = $row[0]; $gmt_offset = eregi_replace("\+","",$gmt_offset);
$PC_processed++;
$postalgmt_found++;
$post++;
}
$stmt = "select distinct DST_range from vicidial_phone_codes where tz_code='$owner' and country_code='$phone_code' order by DST_range desc limit 1;";
$rslt=mysql_query($stmt, $link);
$pc_recs = mysql_num_rows($rslt);
if ($pc_recs > 0)
{
$row=mysql_fetch_row($rslt);
$dst_range = $row[0];
if (strlen($dst_range)>2) {$dst = 'Y';}
}
}
if ($postalgmt_found < 1)
{
$PC_processed=0;