Commit 92bcb0d9 authored by lpsolit%gmail.com's avatar lpsolit%gmail.com

Bug 364162: Code determining if named queries should be shown in the page footer…

Bug 364162: Code determining if named queries should be shown in the page footer is suboptimal - Patch by Fré©ric Buclin <LpSolit@gmail.com> r/a=mkanat
parent 2dcb2578
......@@ -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
......
......@@ -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};
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment