diff options
Diffstat (limited to 'show_bug.cgi')
-rwxr-xr-x | show_bug.cgi | 124 |
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; |