aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'show_bug.cgi')
-rwxr-xr-xshow_bug.cgi124
1 files changed, 67 insertions, 57 deletions
diff --git a/show_bug.cgi b/show_bug.cgi
index 9e31fc4a7..bed27b8d9 100755
--- a/show_bug.cgi
+++ b/show_bug.cgi
@@ -18,24 +18,27 @@ use Bugzilla::Error;
use Bugzilla::Util;
use Bugzilla::Bug;
-my $cgi = Bugzilla->cgi;
+my $cgi = Bugzilla->cgi;
my $template = Bugzilla->template;
-my $vars = {};
+my $vars = {};
my $user = Bugzilla->login();
-my $format = $template->get_format("bug/show", scalar $cgi->param('format'),
- scalar $cgi->param('ctype'));
+my $format = $template->get_format(
+ "bug/show",
+ scalar $cgi->param('format'),
+ scalar $cgi->param('ctype')
+);
# Editable, 'single' HTML bugs are treated slightly specially in a few places
my $single = !$format->{format} && $format->{extension} eq 'html';
# If we don't have an ID, _AND_ we're only doing a single bug, then prompt
if (!$cgi->param('id') && $single) {
- print $cgi->header();
- $template->process("bug/choose.html.tmpl", $vars) ||
- ThrowTemplateError($template->error());
- exit;
+ print $cgi->header();
+ $template->process("bug/choose.html.tmpl", $vars)
+ || ThrowTemplateError($template->error());
+ exit;
}
my (@bugs, @illegal_bugs);
@@ -47,83 +50,90 @@ my %marks;
Bugzilla->switch_to_shadow_db unless $user->id;
if ($single) {
- my $id = $cgi->param('id');
- push @bugs, Bugzilla::Bug->check({ id => $id, cache => 1 });
- if (defined $cgi->param('mark')) {
- foreach my $range (split ',', $cgi->param('mark')) {
- if ($range =~ /^(\d+)-(\d+)$/) {
- foreach my $i ($1..$2) {
- $marks{$i} = 1;
- }
- } elsif ($range =~ /^(\d+)$/) {
- $marks{$1} = 1;
- }
+ my $id = $cgi->param('id');
+ push @bugs, Bugzilla::Bug->check({id => $id, cache => 1});
+ if (defined $cgi->param('mark')) {
+ foreach my $range (split ',', $cgi->param('mark')) {
+ if ($range =~ /^(\d+)-(\d+)$/) {
+ foreach my $i ($1 .. $2) {
+ $marks{$i} = 1;
}
+ }
+ elsif ($range =~ /^(\d+)$/) {
+ $marks{$1} = 1;
+ }
+ }
+ }
+}
+else {
+ my $count = 0;
+ foreach my $id ($cgi->param('id')) {
+
+ # Be kind enough and accept URLs of the form: id=1,2,3.
+ my @ids = split(/,/, $id);
+ my @check_bugs;
+
+ foreach my $bug_id (@ids) {
+ last if $count == 100;
+ next unless $bug_id;
+ my $bug = new Bugzilla::Bug({id => $bug_id, cache => 1});
+ if (!$bug->{error}) {
+ push(@check_bugs, $bug);
+ }
+ else {
+ push(@illegal_bugs, {bug_id => trim($bug_id), error => $bug->{error}});
+ }
+ $count++;
}
-} else {
- my $count = 0;
- foreach my $id ($cgi->param('id')) {
- # Be kind enough and accept URLs of the form: id=1,2,3.
- my @ids = split(/,/, $id);
- my @check_bugs;
-
- foreach my $bug_id (@ids) {
- last if $count == 100;
- next unless $bug_id;
- my $bug = new Bugzilla::Bug({ id => $bug_id, cache => 1 });
- if (!$bug->{error}) {
- push(@check_bugs, $bug);
- }
- else {
- push(@illegal_bugs, { bug_id => trim($bug_id), error => $bug->{error} });
- }
- $count++;
- }
- $user->visible_bugs(\@check_bugs);
+ $user->visible_bugs(\@check_bugs);
- foreach my $bug (@check_bugs) {
- if ($user->can_see_bug($bug->id)) {
- push(@bugs, $bug);
- }
- else {
- my $error = 'NotPermitted'; # Trick to make 012throwables.t happy.
- push(@illegal_bugs, { bug_id => $bug->id, error => $error });
- }
- }
+ foreach my $bug (@check_bugs) {
+ if ($user->can_see_bug($bug->id)) {
+ push(@bugs, $bug);
+ }
+ else {
+ my $error = 'NotPermitted'; # Trick to make 012throwables.t happy.
+ push(@illegal_bugs, {bug_id => $bug->id, error => $error});
+ }
}
+ }
}
Bugzilla::Bug->preload(\@bugs);
-$vars->{'bugs'} = [@bugs, @illegal_bugs];
+$vars->{'bugs'} = [@bugs, @illegal_bugs];
$vars->{'marks'} = \%marks;
-my @bugids = map {$_->bug_id} grep {!$_->error} @bugs;
+my @bugids = map { $_->bug_id } grep { !$_->error } @bugs;
$vars->{'bugids'} = join(", ", @bugids);
# Work out which fields we are displaying (currently XML only.)
# If no explicit list is defined, we show all fields. We then exclude any
-# on the exclusion list. This is so you can say e.g. "Everything except
+# on the exclusion list. This is so you can say e.g. "Everything except
# attachments" without listing almost all the fields.
-my @fieldlist = (Bugzilla::Bug->fields, 'flag', 'group', 'long_desc',
- 'attachment', 'attachmentdata', 'token');
+my @fieldlist = (
+ Bugzilla::Bug->fields, 'flag',
+ 'group', 'long_desc',
+ 'attachment', 'attachmentdata',
+ 'token'
+);
my %displayfields;
if ($cgi->param("field")) {
- @fieldlist = $cgi->param("field");
+ @fieldlist = $cgi->param("field");
}
unless ($user->is_timetracker) {
- @fieldlist = grep($_ !~ /_time$/, @fieldlist);
+ @fieldlist = grep($_ !~ /_time$/, @fieldlist);
}
foreach (@fieldlist) {
- $displayfields{$_} = 1;
+ $displayfields{$_} = 1;
}
foreach ($cgi->param("excludefield")) {
- $displayfields{$_} = undef;
+ $displayfields{$_} = undef;
}
$vars->{'displayfields'} = \%displayfields;