From 65d6f458b29f04d8f87c49b68f993613872fcf43 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Sun, 9 Nov 2008 01:03:32 +0000 Subject: [PATCH] =?utf8?q?Bug=20364162:=20Code=20determining=20if=20named?= =?utf8?q?=20queries=20should=20be=20shown=20in=20the=20page=20footer=20is?= =?utf8?q?=20suboptimal=20-=20Patch=20by=20Fr=C3=83=C2=A9d=C3=83=C2=A9ric?= =?utf8?q?=20Buclin=20=20r/a=3Dmkanat?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Bugzilla/Search/Saved.pm | 24 ++++++++++++++++++++++++ Bugzilla/User.pm | 5 +++++ 2 files changed, 29 insertions(+) diff --git a/Bugzilla/Search/Saved.pm b/Bugzilla/Search/Saved.pm index 9aa27714d3..c8322242bc 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 argument. Instead, accepts only an id. See also: L. +=item C + +Sets C 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 91240e1ceb..41ded04679 100644 --- a/Bugzilla/User.pm +++ b/Bugzilla/User.pm @@ -281,6 +281,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}; } -- 2.47.2