summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Bug.pm
diff options
context:
space:
mode:
authorSimon Green <sgreen@redhat.com>2014-02-26 23:33:45 +0100
committerSimon Green <sgreen@redhat.com>2014-02-26 23:33:45 +0100
commit3776f86ebdfb6169a35c525ce6b8363eb0cabbe1 (patch)
treea4c68a99923b16df2628af32e3a20064cdbe84b0 /Bugzilla/Bug.pm
parent64f44ef195aedfa291ffa474fab1db13624f60d7 (diff)
downloadbugzilla-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.pm24
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.