X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FRecord.pm;h=12cc77ebfe58edb5effe1c3f0e9a4a30c150f175;hb=e5d8fd10937c98ef6bfe06ee745cba36d33a9dc5;hp=c23ce941e11457f4cd536e46083929400998d8e6;hpb=952a38a1f13f58d8be92a501fc40b9bd66291867;p=freeside.git diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index c23ce941e..12cc77ebf 100644 --- a/FS/FS/Record.pm +++ b/FS/FS/Record.pm @@ -8,7 +8,6 @@ use Carp qw(carp cluck croak confess); use File::CounterFile; use FS::UID qw(dbh checkruid swapuid getotaker datasrc driver_name); use FS::dbdef; -use diagnostics; @ISA = qw(Exporter); @EXPORT_OK = qw(dbh fields hfields qsearch qsearchs dbdef); @@ -168,7 +167,7 @@ sub qsearch { my $statement = "SELECT * FROM $table"; if ( @fields ) { $statement .= " WHERE ". join(' AND ', map { - if ( ! defined($record->{$_} || $record->{$_} eq '' ) { + if ( ! defined( $record->{$_} ) || $record->{$_} eq '' ) { if ( driver_name eq 'Pg' ) { "$_ IS NULL"; } else { @@ -184,7 +183,7 @@ sub qsearch { my $sth = $dbh->prepare_cached($statement) or croak $dbh->errstr; $sth->execute( map $record->{$_}, - grep $record->{$_} ne '' && $record->{$_} ne undef, @fields + grep defined( $record->{$_} ) && $record->{$_} ne '', @fields ) or croak $dbh->errstr; if ( eval 'scalar(@FS::'. $table. '::ISA);' ) { @@ -694,25 +693,32 @@ sub ut_alphan { ''; } -=item ut_phonen COLUMN +=item ut_phonen COLUMN [ COUNTRY ] Check/untaint phone numbers. May be null. If there is an error, returns the error, otherwise returns false. +Takes an optional two-letter ISO country code; without it or with unsupported +countries, ut_phonen simply calls ut_alphan. + =cut sub ut_phonen { - my($self,$field)=@_; + my( $self, $field, $country ) = @_; + return $self->ut_alphan($field) unless defined $country; my $phonen = $self->getfield($field); if ( $phonen eq '' ) { $self->setfield($field,''); - } else { + } elsif ( $country eq 'US' ) { $phonen =~ s/\D//g; $phonen =~ /^(\d{3})(\d{3})(\d{4})(\d*)$/ or return "Illegal (phone) $field: ". $self->getfield($field); $phonen = "$1-$2-$3"; $phonen .= " x$4" if $4; $self->setfield($field,$phonen); + } else { + warn "don't know how to check phone numbers for country $country"; + return $self->ut_alphan($field); } ''; } @@ -841,7 +847,7 @@ sub hfields { =head1 VERSION -$Id: Record.pm,v 1.5 2000-06-27 11:27:55 ivan Exp $ +$Id: Record.pm,v 1.7 2000-06-27 12:15:37 ivan Exp $ =head1 BUGS