From 46a8cddeb5dcbb5e858389896a5d4598c4c57df3 Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 9 Dec 2011 03:20:54 +0000 Subject: [PATCH] fix automatic creation of fuzzy files, RT#15484 --- FS/FS/cust_main.pm | 48 ++++++----------------------------------------- FS/FS/cust_main/Search.pm | 39 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 44 deletions(-) diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index 12dc9ef43..a0a7e91ba 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -14,7 +14,7 @@ use vars qw( $DEBUG $me $conf @encrypted_fields $import $ignore_expired_card $ignore_illegal_zip $ignore_banned_card - $skip_fuzzyfiles @fuzzyfields + $skip_fuzzyfiles @paytypes ); use Carp; @@ -83,7 +83,6 @@ $ignore_illegal_zip = 0; $ignore_banned_card = 0; $skip_fuzzyfiles = 0; -@fuzzyfields = ( 'first', 'last', 'company', 'address1' ); @encrypted_fields = ('payinfo', 'paycvv'); sub nohistory_fields { ('payinfo', 'paycvv'); } @@ -1629,6 +1628,7 @@ Used by insert & replace to update the fuzzy search cache =cut +use FS::cust_main::Search; sub queue_fuzzyfiles_update { my $self = shift; @@ -1643,16 +1643,16 @@ sub queue_fuzzyfiles_update { local $FS::UID::AutoCommit = 0; my $dbh = dbh; - my $queue = new FS::queue { 'job' => 'FS::cust_main::append_fuzzyfiles' }; - my $error = $queue->insert( map $self->getfield($_), @fuzzyfields ); + my $queue = new FS::queue { 'job' => 'FS::cust_main::Search::append_fuzzyfiles' }; + my $error = $queue->insert( map $self->getfield($_), @FS::cust_main::Search::fuzzyfields ); if ( $error ) { $dbh->rollback if $oldAutoCommit; return "queueing job (transaction rolled back): $error"; } if ( $self->ship_last ) { - $queue = new FS::queue { 'job' => 'FS::cust_main::append_fuzzyfiles' }; - $error = $queue->insert( map $self->getfield("ship_$_"), @fuzzyfields ); + $queue = new FS::queue { 'job' => 'FS::cust_main::Search::append_fuzzyfiles' }; + $error = $queue->insert( map $self->getfield("ship_$_"), @FS::cust_main::Search::fuzzyfields ); if ( $error ) { $dbh->rollback if $oldAutoCommit; return "queueing job (transaction rolled back): $error"; @@ -4465,42 +4465,6 @@ sub search { =over 4 -=item append_fuzzyfiles FIRSTNAME LASTNAME COMPANY ADDRESS1 - -=cut - -use FS::cust_main::Search; -sub append_fuzzyfiles { - #my( $first, $last, $company ) = @_; - - FS::cust_main::Search::check_and_rebuild_fuzzyfiles(); - - use Fcntl qw(:flock); - - my $dir = $FS::UID::conf_dir. "/cache.". $FS::UID::datasrc; - - foreach my $field (@fuzzyfields) { - my $value = shift; - - if ( $value ) { - - open(CACHE,">>$dir/cust_main.$field") - or die "can't open $dir/cust_main.$field: $!"; - flock(CACHE,LOCK_EX) - or die "can't lock $dir/cust_main.$field: $!"; - - print CACHE "$value\n"; - - flock(CACHE,LOCK_UN) - or die "can't unlock $dir/cust_main.$field: $!"; - close CACHE; - } - - } - - 1; -} - =item batch_charge =cut diff --git a/FS/FS/cust_main/Search.pm b/FS/FS/cust_main/Search.pm index e017400a5..db752adc3 100644 --- a/FS/FS/cust_main/Search.pm +++ b/FS/FS/cust_main/Search.pm @@ -18,7 +18,7 @@ use FS::svc_acct; $DEBUG = 0; $me = '[FS::cust_main::Search]'; -@fuzzyfields = @FS::cust_main::fuzzyfields; +@fuzzyfields = ( 'first', 'last', 'company', 'address1' ); install_callback FS::UID sub { $conf = new FS::Conf; @@ -859,7 +859,7 @@ sub fuzzy_search { sub check_and_rebuild_fuzzyfiles { my $dir = $FS::UID::conf_dir. "/cache.". $FS::UID::datasrc; - rebuild_fuzzyfiles() if grep { ! -e "$dir/cust_main.$_" } @fuzzyfields + rebuild_fuzzyfiles() if grep { ! -e "$dir/cust_main.$_" } @fuzzyfields; } =item rebuild_fuzzyfiles @@ -902,6 +902,41 @@ sub rebuild_fuzzyfiles { } +=item append_fuzzyfiles FIRSTNAME LASTNAME COMPANY ADDRESS1 + +=cut + +sub append_fuzzyfiles { + #my( $first, $last, $company ) = @_; + + check_and_rebuild_fuzzyfiles(); + + use Fcntl qw(:flock); + + my $dir = $FS::UID::conf_dir. "/cache.". $FS::UID::datasrc; + + foreach my $field (@fuzzyfields) { + my $value = shift; + + if ( $value ) { + + open(CACHE,">>$dir/cust_main.$field") + or die "can't open $dir/cust_main.$field: $!"; + flock(CACHE,LOCK_EX) + or die "can't lock $dir/cust_main.$field: $!"; + + print CACHE "$value\n"; + + flock(CACHE,LOCK_UN) + or die "can't unlock $dir/cust_main.$field: $!"; + close CACHE; + } + + } + + 1; +} + =item all_X =cut -- 2.11.0