From 8918a55e52c9badc177a791a4e70b1033c6615b7 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Tue, 10 Apr 2007 17:07:16 +0000 Subject: Bug 344969: Remove hardcoded bug statuses from collectstats.pl and reports.cgi (prepare them for custom statuses) - Patch by Frédéric Buclin r=gerv a=LpSolit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- collectstats.pl | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) (limited to 'collectstats.pl') diff --git a/collectstats.pl b/collectstats.pl index 7bc2b6174..ca97c0043 100755 --- a/collectstats.pl +++ b/collectstats.pl @@ -72,19 +72,21 @@ my $datadir = bz_locations()->{'datadir'}; my @myproducts = map {$_->name} Bugzilla::Product->get_all; unshift(@myproducts, "-All-"); -# As we can now customize the list of resolutions, looking at the actual list -# of available resolutions only is not enough as some now removed resolutions +# As we can now customize statuses and resolutions, looking at the current list +# of legal values only is not enough as some now removed statuses and resolutions # may have existed in the past, or have been renamed. We want them all. -my @resolutions = @{get_legal_field_values('resolution')}; -my $old_resolutions = - $dbh->selectcol_arrayref('SELECT bugs_activity.added +my $fields = {}; +foreach my $field ('bug_status', 'resolution') { + my $values = get_legal_field_values($field); + my $old_values = $dbh->selectcol_arrayref( + "SELECT bugs_activity.added FROM bugs_activity INNER JOIN fielddefs ON fielddefs.id = bugs_activity.fieldid - LEFT JOIN resolution - ON resolution.value = bugs_activity.added + LEFT JOIN $field + ON $field.value = bugs_activity.added WHERE fielddefs.name = ? - AND resolution.id IS NULL + AND $field.id IS NULL UNION @@ -92,19 +94,21 @@ my $old_resolutions = FROM bugs_activity INNER JOIN fielddefs ON fielddefs.id = bugs_activity.fieldid - LEFT JOIN resolution - ON resolution.value = bugs_activity.removed + LEFT JOIN $field + ON $field.value = bugs_activity.removed WHERE fielddefs.name = ? - AND resolution.id IS NULL', - undef, ('resolution', 'resolution')); + AND $field.id IS NULL", + undef, ($field, $field)); -push(@resolutions, @$old_resolutions); + push(@$values, @$old_values); + $fields->{$field} = $values; +} + +my @statuses = @{$fields->{'bug_status'}}; +my @resolutions = @{$fields->{'resolution'}}; # Exclude "" from the resolution list. @resolutions = grep {$_} @resolutions; -# Actually, the list of statuses is predefined. This will change in the near future. -my @statuses = qw(NEW ASSIGNED REOPENED UNCONFIRMED RESOLVED VERIFIED CLOSED); - my $tstart = time; foreach (@myproducts) { my $dir = "$datadir/mining"; -- cgit v1.2.3-24-g4f1b