Commit 3b2fcf52 authored by Frédéric Buclin's avatar Frédéric Buclin

Bug 745320: Shared queries do not work when tags are part of the query

r=dkl a=LpSolit
parent b1779f28
...@@ -802,8 +802,8 @@ sub _param_array { ...@@ -802,8 +802,8 @@ sub _param_array {
} }
sub _params { $_[0]->{params} } sub _params { $_[0]->{params} }
sub _user { return $_[0]->{user} } sub _user { return $_[0]->{user} }
sub _sharer_id { $_[0]->{sharer} }
############################## ##############################
# Internal Accessors: SELECT # # Internal Accessors: SELECT #
...@@ -2546,8 +2546,8 @@ sub _multiselect_table { ...@@ -2546,8 +2546,8 @@ sub _multiselect_table {
} }
elsif ($field eq 'tag') { elsif ($field eq 'tag') {
$args->{full_field} = 'tag.name'; $args->{full_field} = 'tag.name';
return "bug_tag INNER JOIN tag ON bug_tag.tag_id = tag.id" return "bug_tag INNER JOIN tag ON bug_tag.tag_id = tag.id AND user_id = "
. " AND user_id = " . $self->_user->id; . ($self->_sharer_id || $self->_user->id);
} }
elsif ($field eq 'bug_group') { elsif ($field eq 'bug_group') {
$args->{full_field} = 'groups.name'; $args->{full_field} = 'groups.name';
......
...@@ -211,7 +211,9 @@ sub LookupNamedQuery { ...@@ -211,7 +211,9 @@ sub LookupNamedQuery {
$query->url $query->url
|| ThrowUserError("buglist_parameters_required"); || ThrowUserError("buglist_parameters_required");
return wantarray ? ($query->url, $query->id) : $query->url; # Detaint $sharer_id.
$sharer_id = $query->user->id if $sharer_id;
return wantarray ? ($query->url, $query->id, $sharer_id) : $query->url;
} }
# Inserts a Named Query (a "Saved Search") into the database, or # Inserts a Named Query (a "Saved Search") into the database, or
...@@ -330,6 +332,7 @@ sub _close_standby_message { ...@@ -330,6 +332,7 @@ sub _close_standby_message {
my $cmdtype = $cgi->param('cmdtype') || ''; my $cmdtype = $cgi->param('cmdtype') || '';
my $remaction = $cgi->param('remaction') || ''; my $remaction = $cgi->param('remaction') || '';
my $sharer_id;
# Backwards-compatibility - the old interface had cmdtype="runnamed" to run # Backwards-compatibility - the old interface had cmdtype="runnamed" to run
# a named command, and we can't break this because it's in bookmarks. # a named command, and we can't break this because it's in bookmarks.
...@@ -366,8 +369,9 @@ $filename =~ s/"/\\"/g; # escape quotes ...@@ -366,8 +369,9 @@ $filename =~ s/"/\\"/g; # escape quotes
if ($cmdtype eq "dorem") { if ($cmdtype eq "dorem") {
if ($remaction eq "run") { if ($remaction eq "run") {
my $query_id; my $query_id;
($buffer, $query_id) = LookupNamedQuery(scalar $cgi->param("namedcmd"), ($buffer, $query_id, $sharer_id) =
scalar $cgi->param('sharer_id')); LookupNamedQuery(scalar $cgi->param("namedcmd"),
scalar $cgi->param('sharer_id'));
# If this is the user's own query, remember information about it # If this is the user's own query, remember information about it
# so that it can be modified easily. # so that it can be modified easily.
$vars->{'searchname'} = $cgi->param('namedcmd'); $vars->{'searchname'} = $cgi->param('namedcmd');
...@@ -727,7 +731,8 @@ if ($format->{'extension'} eq 'html' && !defined $params->param('limit')) { ...@@ -727,7 +731,8 @@ if ($format->{'extension'} eq 'html' && !defined $params->param('limit')) {
# Generate the basic SQL query that will be used to generate the bug list. # Generate the basic SQL query that will be used to generate the bug list.
my $search = new Bugzilla::Search('fields' => \@selectcolumns, my $search = new Bugzilla::Search('fields' => \@selectcolumns,
'params' => scalar $params->Vars, 'params' => scalar $params->Vars,
'order' => \@order_columns); 'order' => \@order_columns,
'sharer' => $sharer_id);
my $query = $search->sql; my $query = $search->sql;
$vars->{'search_description'} = $search->search_description; $vars->{'search_description'} = $search->search_description;
$order = join(',', $search->order); $order = join(',', $search->order);
......
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