diff options
author | Simon Green <sgreen@redhat.com> | 2014-02-26 23:33:45 +0100 |
---|---|---|
committer | Simon Green <sgreen@redhat.com> | 2014-02-26 23:33:45 +0100 |
commit | 3776f86ebdfb6169a35c525ce6b8363eb0cabbe1 (patch) | |
tree | a4c68a99923b16df2628af32e3a20064cdbe84b0 /Bugzilla/Bug.pm | |
parent | 64f44ef195aedfa291ffa474fab1db13624f60d7 (diff) | |
download | bugzilla-3776f86ebdfb6169a35c525ce6b8363eb0cabbe1.tar.gz bugzilla-3776f86ebdfb6169a35c525ce6b8363eb0cabbe1.tar.xz |
Bug 466178 - Add an INTEGER custom field type
r=glob, a=justdave
Diffstat (limited to 'Bugzilla/Bug.pm')
-rw-r--r-- | Bugzilla/Bug.pm | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index dd22426bb..a6347cb2e 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -158,6 +158,9 @@ sub VALIDATORS { elsif ($field->type == FIELD_TYPE_TEXTAREA) { $validator = \&_check_textarea_field; } + elsif ($field->type == FIELD_TYPE_INTEGER) { + $validator = \&_check_integer_field; + } else { $validator = \&_check_default_field; } @@ -2110,6 +2113,27 @@ sub _check_textarea_field { return $text; } +sub _check_integer_field { + my ($invocant, $value, $field) = @_; + $value = defined($value) ? trim($value) : ''; + + if ($value eq '') { + return 0; + } + + my $orig_value = $value; + if (!detaint_signed($value)) { + ThrowUserError("number_not_integer", + {field => $field, num => $orig_value}); + } + elsif ($value > MAX_INT_32) { + ThrowUserError("number_too_large", + {field => $field, num => $orig_value, max_num => MAX_INT_32}); + } + + return $value; +} + sub _check_relationship_loop { # Generates a dependency tree for a given bug. Calls itself recursively # to generate sub-trees for the bug's dependencies. |