X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FRecord.pm;h=c25b9beb09f87b498d998b3fbcaa1f17fc2cd0e2;hb=4a54e68baa0fe7c4171d57c3eb0e1579aa21ae77;hp=29f2dc6180f55300968040df8302d15311cd0d02;hpb=f27a5a08ba712678bf826a47f82f96568208bab3;p=freeside.git diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index 29f2dc618..c25b9beb0 100644 --- a/FS/FS/Record.pm +++ b/FS/FS/Record.pm @@ -84,6 +84,7 @@ FS::Record - Database record objects $value = $record->unique('column'); $error = $record->ut_float('column'); + $error = $record->ut_floatn('column'); $error = $record->ut_number('column'); $error = $record->ut_numbern('column'); $error = $record->ut_snumber('column'); @@ -1285,11 +1286,29 @@ sub ut_float { $self->setfield($field,$1); ''; } +=item ut_floatn COLUMN + +Check/untaint floating point numeric data: 1.1, 1, 1.1e10, 1e10. May be +null. If there is an error, returns the error, otherwise returns false. + +=cut + +sub ut_floatn { + my($self,$field)=@_ ; + ($self->getfield($field) =~ /^(\d*)$/ || + $self->getfield($field) =~ /^(-?\d+\.\d+)$/ || + $self->getfield($field) =~ /^(-?\d+)$/ || + $self->getfield($field) =~ /^(-?\d+\.\d+e\d+)$/ || + $self->getfield($field) =~ /^(-?\d+e\d+)$/) + or return "Illegal or empty (float) $field: ". $self->getfield($field); + $self->setfield($field,$1); + ''; +} =item ut_snumber COLUMN -Check/untaint signed numeric data (whole numbers). May not be null. If there -is an error, returns the error, otherwise returns false. +Check/untaint signed numeric data (whole numbers). If there is an error, +returns the error, otherwise returns false. =cut