diff options
author | lpsolit%gmail.com <> | 2008-11-09 01:01:39 +0000 |
---|---|---|
committer | lpsolit%gmail.com <> | 2008-11-09 01:01:39 +0000 |
commit | 92bcb0d9b836c27fa7cbfe57e5de1666be3dde76 (patch) | |
tree | aad2a56bff48038118996dd5a1bbee8e4e1321a6 | |
parent | 2dcb25783adbebb426c8f22ca3606ade097056fe (diff) | |
download | bugs-92bcb0d9b836c27fa7cbfe57e5de1666be3dde76.tar bugs-92bcb0d9b836c27fa7cbfe57e5de1666be3dde76.tar.gz bugs-92bcb0d9b836c27fa7cbfe57e5de1666be3dde76.tar.bz2 bugs-92bcb0d9b836c27fa7cbfe57e5de1666be3dde76.tar.xz bugs-92bcb0d9b836c27fa7cbfe57e5de1666be3dde76.zip |
Bug 364162: Code determining if named queries should be shown in the page footer is suboptimal - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=mkanat
-rw-r--r-- | Bugzilla/Search/Saved.pm | 24 | ||||
-rw-r--r-- | Bugzilla/User.pm | 5 |
2 files changed, 29 insertions, 0 deletions
diff --git a/Bugzilla/Search/Saved.pm b/Bugzilla/Search/Saved.pm index 9aa27714d..c8322242b 100644 --- a/Bugzilla/Search/Saved.pm +++ b/Bugzilla/Search/Saved.pm @@ -117,6 +117,24 @@ sub create { return $obj; } +sub preload { + my ($searches) = @_; + my $dbh = Bugzilla->dbh; + + return unless scalar @$searches; + + my @query_ids = map { $_->id } @$searches; + my $queries_in_footer = $dbh->selectcol_arrayref( + 'SELECT namedquery_id + FROM namedqueries_link_in_footer + WHERE ' . $dbh->sql_in('namedquery_id', \@query_ids) . ' AND user_id = ?', + undef, Bugzilla->user->id); + + my %links_in_footer = map { $_ => 1 } @$queries_in_footer; + foreach my $query (@$searches) { + $query->{link_in_footer} = ($links_in_footer{$query->id}) ? 1 : 0; + } +} ##################### # Complex Accessors # ##################### @@ -250,6 +268,12 @@ Does not accept a bare C<name> argument. Instead, accepts only an id. See also: L<Bugzilla::Object/new>. +=item C<preload> + +Sets C<link_in_footer> for all given saved searches at once, for the +currently logged in user. This is much faster than calling this method +for each saved search individually. + =back diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index 293b18d3e..5c4c8621c 100644 --- a/Bugzilla/User.pm +++ b/Bugzilla/User.pm @@ -284,6 +284,11 @@ sub queries { 'SELECT id FROM namedqueries WHERE userid = ?', undef, $self->id); require Bugzilla::Search::Saved; $self->{queries} = Bugzilla::Search::Saved->new_from_list($query_ids); + + # We preload link_in_footer from here as this information is always requested. + # This only works if the user object represents the current logged in user. + Bugzilla::Search::Saved::preload($self->{queries}) if $self->id == Bugzilla->user->id; + return $self->{queries}; } |