]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 344969: Remove hardcoded bug statuses from collectstats.pl and reports.cgi (prepa...
authorlpsolit%gmail.com <>
Tue, 10 Apr 2007 17:07:16 +0000 (17:07 +0000)
committerlpsolit%gmail.com <>
Tue, 10 Apr 2007 17:07:16 +0000 (17:07 +0000)
collectstats.pl
reports.cgi

index 7bc2b6174d67c004963c50d02406a3cb8d8415da..ca97c0043c358256e165ada0ffb1e32741629d1a 100755 (executable)
@@ -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";
index 2c9f8facc42780df9caf021b2a36b177a58cd6c2..0be2ab64bab569f9c652c46b2da0aea42dc6f91c 100755 (executable)
@@ -75,7 +75,7 @@ if (! defined $cgi->param('product')) {
       || ThrowCodeError('chart_dir_nonexistent',
                         {dir => $dir, graph_dir => $graph_dir});
 
-    my %default_sel = map { $_ => 1 } qw/UNCONFIRMED NEW ASSIGNED REOPENED/;
+    my %default_sel = map { $_ => 1 } BUG_STATE_OPEN;
 
     my @datasets;
     my @data = get_data($dir);