diff options
author | Simon Green <sgreen@redhat.com> | 2014-06-17 01:10:52 +0200 |
---|---|---|
committer | Simon Green <sgreen@redhat.com> | 2014-06-17 01:10:52 +0200 |
commit | d771ac8c3a6f6aa20e2e188b22dc8f7f89853434 (patch) | |
tree | 5656689b74b2de156860372401e1706f55600db5 | |
parent | f1a0dec0fc70a2044e205ee40667629253d81433 (diff) | |
download | bugzilla-d771ac8c3a6f6aa20e2e188b22dc8f7f89853434.tar.gz bugzilla-d771ac8c3a6f6aa20e2e188b22dc8f7f89853434.tar.xz |
Bug 653597 - Reports with "Real Name" fields use foo_real_name in the url parameters for linked queries
r=gerv, a=justdave
-rw-r--r-- | Bugzilla/Field.pm | 6 | ||||
-rw-r--r-- | Bugzilla/Search.pm | 32 |
2 files changed, 32 insertions, 6 deletions
diff --git a/Bugzilla/Field.pm b/Bugzilla/Field.pm index 6ad8df573..e72a94293 100644 --- a/Bugzilla/Field.pm +++ b/Bugzilla/Field.pm @@ -201,6 +201,12 @@ use constant DEFAULT_FIELDS => ( buglist => 1}, {name => 'qa_contact', desc => 'QAContact', in_new_bugmail => 1, buglist => 1}, + {name => 'assigned_to_realname', desc => 'AssignedToName', + in_new_bugmail => 0, buglist => 1}, + {name => 'reporter_realname', desc => 'ReportedByName', + in_new_bugmail => 0, buglist => 1}, + {name => 'qa_contact_realname', desc => 'QAContactName', + in_new_bugmail => 0, buglist => 1}, {name => 'cc', desc => 'CC', in_new_bugmail => 1}, {name => 'dependson', desc => 'Depends on', in_new_bugmail => 1, is_numeric => 1, buglist => 1}, diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm index 8a549a2b9..18abf8d25 100644 --- a/Bugzilla/Search.pm +++ b/Bugzilla/Search.pm @@ -235,6 +235,9 @@ use constant OPERATOR_FIELD_OVERRIDE => { assigned_to => { _non_changed => \&_user_nonchanged, }, + assigned_to_realname => { + _non_changed => \&_user_nonchanged, + }, cc => { _non_changed => \&_user_nonchanged, }, @@ -244,6 +247,9 @@ use constant OPERATOR_FIELD_OVERRIDE => { reporter => { _non_changed => \&_user_nonchanged, }, + reporter_realname => { + _non_changed => \&_user_nonchanged, + }, 'requestees.login_name' => { _non_changed => \&_user_nonchanged, }, @@ -253,7 +259,10 @@ use constant OPERATOR_FIELD_OVERRIDE => { qa_contact => { _non_changed => \&_user_nonchanged, }, - + qa_contact_realname => { + _non_changed => \&_user_nonchanged, + }, + # General Bug Fields alias => { _non_changed => \&_nullable }, 'attach_data.thedata' => MULTI_SELECT_OVERRIDE, @@ -570,9 +579,6 @@ sub COLUMNS { # of short_short_desc.) my %columns = ( relevance => { title => 'Relevance' }, - assigned_to_realname => { title => 'Assignee' }, - reporter_realname => { title => 'Reporter' }, - qa_contact_realname => { title => 'QA Contact' }, ); # Next we define columns that have special SQL instead of just something @@ -629,7 +635,7 @@ sub COLUMNS { $sql = $dbh->sql_string_until($sql, $dbh->quote('@')); } $special_sql{$col} = $sql; - $columns{"${col}_realname"}->{name} = "map_${col}.realname"; + $special_sql{"${col}_realname"} = "map_${col}.realname"; } foreach my $col (@id_fields) { @@ -2399,6 +2405,20 @@ sub _user_nonchanged { if ($args->{value_is_id}) { $null_alternate = 0; } + elsif (substr($field, -9) eq '_realname') { + my $as = "name_${field}_$chart_id"; + # For fields with periods in their name. + $as =~ s/\./_/; + my $join = { + table => 'profiles', + as => $as, + from => substr($args->{full_field}, 0, -9), + to => 'userid', + join => (!$is_in_other_table and !$is_nullable) ? 'INNER' : undef, + }; + push(@$joins, $join); + $args->{full_field} = "$as.realname"; + } else { my $as = "name_${field}_$chart_id"; # For fields with periods in their name. @@ -2413,7 +2433,7 @@ sub _user_nonchanged { push(@$joins, $join); $args->{full_field} = "$as.login_name"; } - + # We COALESCE fields that can be NULL, to make "not"-style operators # continue to work properly. For example, "qa_contact is not equal to bob" # should also show bugs where the qa_contact is NULL. With COALESCE, |