X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FRecord.pm;h=a15aaba369351779d820204f9ae6d4be4793ff94;hb=672aab6658cf490d740b49336d16994072a0e506;hp=9a532e3a068d176ce825887f9a8c205f811f370b;hpb=e49fd9a1d93335d22174e47ccd547e47ccb17fe9;p=freeside.git diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index 9a532e3a0..a15aaba36 100644 --- a/FS/FS/Record.pm +++ b/FS/FS/Record.pm @@ -65,17 +65,17 @@ FS::Record - Database record objects $value = $record->unique('column'); - $value = $record->ut_float('column'); - $value = $record->ut_number('column'); - $value = $record->ut_numbern('column'); - $value = $record->ut_money('column'); - $value = $record->ut_text('column'); - $value = $record->ut_textn('column'); - $value = $record->ut_alpha('column'); - $value = $record->ut_alphan('column'); - $value = $record->ut_phonen('column'); - $value = $record->ut_anything('column'); - $value = $record->ut_name('column'); + $error = $record->ut_float('column'); + $error = $record->ut_number('column'); + $error = $record->ut_numbern('column'); + $error = $record->ut_money('column'); + $error = $record->ut_text('column'); + $error = $record->ut_textn('column'); + $error = $record->ut_alpha('column'); + $error = $record->ut_alphan('column'); + $error = $record->ut_phonen('column'); + $error = $record->ut_anything('column'); + $error = $record->ut_name('column'); $dbdef = reload_dbdef; $dbdef = reload_dbdef "/non/standard/filename"; @@ -472,10 +472,11 @@ returns the error, otherwise returns false. sub replace { my ( $new, $old ) = ( shift, shift ); + warn "[debug][FS::Record] $new ->replace $old\n" if $DEBUG; my @diff = grep $new->getfield($_) ne $old->getfield($_), $old->fields; unless ( @diff ) { - carp "warning: records identical"; + carp "[warning][FS::Record] $new -> replace $old: records identical"; return ''; } @@ -855,13 +856,30 @@ Untaints arbitrary data. Be careful. =cut sub ut_anything { - my($self,$field)=@_; + my( $self, $field ) = @_; $self->getfield($field) =~ /^(.*)$/s or return "Illegal $field: ". $self->getfield($field); $self->setfield($field,$1); ''; } +=item ut_enum COLUMN CHOICES_ARRAYREF + +Check/untaint a column, supplying all possible choices, like the "enum" type. + +=cut + +sub ut_enum { + my( $self, $field, $choices ) = @_; + foreach my $choice ( @$choices ) { + if ( $self->getfield($field) eq $choice ) { + $self->setfield($choice); + return ''; + } + } + return "Illegal (enum) field $field: ". $self->getfield($field); +} + =item fields [ TABLE ] This can be used as both a subroutine and a method call. It returns a list @@ -882,7 +900,7 @@ sub fields { } #croak "Usage: \@fields = fields(\$table)\n or: \@fields = \$record->fields" unless $table; my($table_obj) = $dbdef->table($table); - croak "Unknown table $table" unless $table_obj; + confess "Unknown table $table" unless $table_obj; $table_obj->columns; } @@ -976,7 +994,7 @@ sub DESTROY { return; } =head1 VERSION -$Id: Record.pm,v 1.26 2001-08-31 09:20:35 ivan Exp $ +$Id: Record.pm,v 1.30 2001-10-10 05:24:25 ivan Exp $ =head1 BUGS