diff options
Diffstat (limited to 'Bugzilla/Config')
-rw-r--r-- | Bugzilla/Config/BugChange.pm | 22 | ||||
-rw-r--r-- | Bugzilla/Config/Common.pm | 12 |
2 files changed, 33 insertions, 1 deletions
diff --git a/Bugzilla/Config/BugChange.pm b/Bugzilla/Config/BugChange.pm index 6941f0046..65b2aec96 100644 --- a/Bugzilla/Config/BugChange.pm +++ b/Bugzilla/Config/BugChange.pm @@ -34,13 +34,35 @@ package Bugzilla::Config::BugChange; use strict; use Bugzilla::Config::Common; +use Bugzilla::Status; $Bugzilla::Config::BugChange::sortkey = "03"; sub get_param_list { my $class = shift; + + # Hardcoded bug statuses which existed before Bugzilla 3.1. + my @closed_bug_statuses = ('RESOLVED', 'VERIFIED', 'CLOSED'); + + # If we are upgrading from 3.0 or older, bug statuses are not customisable + # and bug_status.is_open is not yet defined (hence the eval), so we use + # the bug statuses above as they are still hardcoded. + eval { + my @current_closed_states = map {$_->name} Bugzilla::Status::closed_bug_statuses(); + # If no closed state was found, use the default list above. + @closed_bug_statuses = @current_closed_states if scalar(@current_closed_states); + }; + my @param_list = ( { + name => 'duplicate_or_move_bug_status', + type => 's', + choices => \@closed_bug_statuses, + default => $closed_bug_statuses[0], + checker => \&check_bug_status + }, + + { name => 'letsubmitterchoosepriority', type => 'b', default => 1 diff --git a/Bugzilla/Config/Common.pm b/Bugzilla/Config/Common.pm index 0d6db5257..188ef0c90 100644 --- a/Bugzilla/Config/Common.pm +++ b/Bugzilla/Config/Common.pm @@ -40,6 +40,7 @@ use Bugzilla::Util; use Bugzilla::Constants; use Bugzilla::Field; use Bugzilla::Group; +use Bugzilla::Status; use base qw(Exporter); @Bugzilla::Config::Common::EXPORT = @@ -48,7 +49,7 @@ use base qw(Exporter); check_opsys check_shadowdb check_urlbase check_webdotbase check_netmask check_user_verify_class check_image_converter check_languages check_mail_delivery_method check_notification - check_timezone check_utf8 + check_timezone check_utf8 check_bug_status ); # Checking functions for the various values @@ -166,6 +167,15 @@ sub check_opsys { return ""; } +sub check_bug_status { + my $bug_status = shift; + my @closed_bug_statuses = map {$_->name} Bugzilla::Status::closed_bug_statuses(); + if (lsearch(\@closed_bug_statuses, $bug_status) < 0) { + return "Must be a valid closed status: one of " . join(', ', @closed_bug_statuses); + } + return ""; +} + sub check_group { my $group_name = shift; return "" unless $group_name; |