summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Field.pm6
-rw-r--r--Bugzilla/Search.pm32
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,