X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=site_perl%2FRecord.pm;h=b8d565cd940b4a84a1315cee0abe3fc9cd86daf7;hb=5633a7534d0319ce016092523d4ad7ff453a9726;hp=a90e76b1e4b4ed0d5baf8a90b65ed767557799aa;hpb=4f16a1997d44c4440bdf2f60d6a9dc4d1c7818c8;p=freeside.git diff --git a/site_perl/Record.pm b/site_perl/Record.pm index a90e76b1e..b8d565cd9 100644 --- a/site_perl/Record.pm +++ b/site_perl/Record.pm @@ -4,7 +4,7 @@ use strict; use vars qw($dbdef_file $dbdef $setup_hack $AUTOLOAD @ISA @EXPORT_OK); use subs qw(reload_dbdef); use Exporter; -use Carp; +use Carp qw(carp cluck croak confess); use File::CounterFile; use FS::UID qw(dbh checkruid swapuid getotaker datasrc); use FS::dbdef; @@ -12,11 +12,12 @@ use FS::dbdef; @ISA = qw(Exporter); @EXPORT_OK = qw(dbh fields hfields qsearch qsearchs dbdef); -$File::CounterFile::DEFAULT_DIR = "/var/spool/freeside/counters" ; - -$dbdef_file = "/var/spool/freeside/dbdef.". datasrc; - -reload_dbdef unless $setup_hack; +#ask FS::UID to run this stuff for us later +$FS::UID::callback{'FS::Record'} = sub { + $File::CounterFile::DEFAULT_DIR = "/usr/local/etc/freeside/counters.". datasrc; + $dbdef_file = "/usr/local/etc/freeside/dbdef.". datasrc; + &reload_dbdef unless $setup_hack; #$setup_hack needed now? +}; =head1 NAME @@ -168,9 +169,12 @@ sub qsearch { my($sth); my($statement) = "SELECT * FROM $table". ( @fields ? " WHERE ". join(' AND ', - map("$_ = ". _quote($record->{$_},$table,$_), @fields) - ) - : '' + map { + $record->{$_} eq '' + ? "$_ IS NULL" + : "$_ = ". _quote($record->{$_},$table,$_) + } @fields + ) : '' ); $sth=$dbh->prepare($statement) or croak $dbh->errstr; #is that a little too harsh? hmm. @@ -180,7 +184,7 @@ sub qsearch { eval 'create FS::'. $table. ' ( $sth->fetchrow_hashref );'; } ( 1 .. $sth->execute ); } else { - carp "qsearch: warning: FS::$table not loaded; returning generic FS::Record objects"; + cluck "qsearch: warning: FS::$table not loaded; returning generic FS::Record objects"; map { new FS::Record ($table,$sth->fetchrow_hashref); } ( 1 .. $sth->execute ); @@ -405,7 +409,7 @@ sub rep { my(@diff)=grep $new->getfield($_) ne $old->getfield($_), @fields; if ( scalar(@diff) == 0 ) { - carp "Records identical"; + carp "warning: records identical"; return ''; } @@ -753,6 +757,10 @@ sub fields { =back +=head1 VERSION + +$Id: Record.pm,v 1.9 1998-11-21 07:26:45 ivan Exp $ + =head1 BUGS This module should probably be renamed, since much of the functionality is @@ -870,7 +878,23 @@ added pod documentation ivan@sisd.com 98-sep-6 ut_phonen got ''; at the end ivan@sisd.com 98-sep-27 $Log: Record.pm,v $ -Revision 1.4 1998-11-10 07:45:25 ivan +Revision 1.9 1998-11-21 07:26:45 ivan +"Records identical" carp tells us it is just a warning. + +Revision 1.8 1998/11/15 11:02:04 ivan +bugsquash + +Revision 1.7 1998/11/15 10:56:31 ivan +qsearch gets sames "IS NULL" semantics as other WHERE clauses + +Revision 1.6 1998/11/15 05:31:03 ivan +bugfix for new config layout + +Revision 1.5 1998/11/13 09:56:51 ivan +change configuration file layout to support multiple distinct databases (with +own set of config files, export, etc.) + +Revision 1.4 1998/11/10 07:45:25 ivan doc clarification Revision 1.2 1998/11/07 05:17:18 ivan