From 8bc92049518f57d645b1e3290667c21d502d0d56 Mon Sep 17 00:00:00 2001 From: Koosha Khajeh Moogahi Date: Thu, 20 Sep 2012 20:21:04 +0200 Subject: Bug 450546: Use visible_bugs() where appropriate instead of/in combination with can_see_bug() to improve performance r/a=LpSolit --- extensions/Voting/Extension.pm | 1 + show_bug.cgi | 18 +++++++++++++++--- showdependencygraph.cgi | 5 ++++- showdependencytree.cgi | 2 +- summarize_time.cgi | 2 +- template/en/default/list/list.html.tmpl | 5 ++--- 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/extensions/Voting/Extension.pm b/extensions/Voting/Extension.pm index b4352fa2f..4cb8171e8 100644 --- a/extensions/Voting/Extension.pm +++ b/extensions/Voting/Extension.pm @@ -435,6 +435,7 @@ sub _page_user { ORDER BY votes.bug_id', undef, ($who->id, $product->id)); + $user->visible_bugs([map { $_->[0] } @$vote_list]); foreach (@$vote_list) { my ($id, $count, $summary) = @$_; $total += $count; diff --git a/show_bug.cgi b/show_bug.cgi index e5ae4bfd0..cc568fbce 100755 --- a/show_bug.cgi +++ b/show_bug.cgi @@ -63,15 +63,27 @@ if ($single) { 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) { next unless $bug_id; my $bug = new Bugzilla::Bug($bug_id); - if (!$bug->{error} && $user->can_see_bug($bug->bug_id)) { + if (!$bug->{error}) { + push(@check_bugs, $bug); + } + else { + push(@illegal_bugs, { bug_id => trim($bug_id), error => $bug->{error} }); + } + } + + $user->visible_bugs(\@check_bugs); + + foreach my $bug (@check_bugs) { + if ($user->can_see_bug($bug->id)) { push(@bugs, $bug); } else { - push(@illegal_bugs, { bug_id => trim($bug_id), - error => $bug->{error} || 'NotPermitted' }); + push(@illegal_bugs, { bug_id => $bug->id, error => 'NotPermitted' }); } } } diff --git a/showdependencygraph.cgi b/showdependencygraph.cgi index ff0602d46..67faced19 100755 --- a/showdependencygraph.cgi +++ b/showdependencygraph.cgi @@ -169,7 +169,10 @@ my $sth = $dbh->prepare( q{SELECT bug_status, resolution, short_desc FROM bugs WHERE bugs.bug_id = ?}); -foreach my $k (keys(%seen)) { + +my @bug_ids = keys %seen; +$user->visible_bugs(\@bug_ids); +foreach my $k (@bug_ids) { # Retrieve bug information from the database my ($stat, $resolution, $summary) = $dbh->selectrow_array($sth, undef, $k); diff --git a/showdependencytree.cgi b/showdependencytree.cgi index 4031ed263..f4d5e3785 100755 --- a/showdependencytree.cgi +++ b/showdependencytree.cgi @@ -95,7 +95,7 @@ sub GenerateTree { # Record this depth in the global $realdepth variable if it's farther # than we've gone before. $realdepth = max($realdepth, $depth); - + Bugzilla->user->visible_bugs(\@dependencies); foreach my $dep_id (@dependencies) { # Get this dependency's record from the database and generate # its sub-tree if we haven't already done so (which happens diff --git a/summarize_time.cgi b/summarize_time.cgi index e06d3257d..d77634da5 100755 --- a/summarize_time.cgi +++ b/summarize_time.cgi @@ -275,7 +275,7 @@ if ($do_report) { function=>"summarize_time"}); } @bugs = get_blocker_ids($bugs[0]); - @bugs = grep { $user->can_see_bug($_) } @bugs; + @bugs = @{ $user->visible_bugs(\@bugs) }; } $start_date = trim $cgi->param('start_date'); diff --git a/template/en/default/list/list.html.tmpl b/template/en/default/list/list.html.tmpl index 1c5c22810..3be607a38 100644 --- a/template/en/default/list/list.html.tmpl +++ b/template/en/default/list/list.html.tmpl @@ -191,9 +191,8 @@ [% IF bugs.size > 0 %]
- [% FOREACH id = buglist %] - - [% END %] + [% id = buglist.join(",") %] +
-- cgit v1.2.3-24-g4f1b