as => 'security_cc',
extra => ['security_cc.who = ' . $user->id],
};
- push(@joins, $security_cc_join);
+ my $security_triage_join = {
+ table => 'components',
+ as => 'security_triage',
+ from => 'bugs.component_id',
+ to => 'id',
+ join => 'LEFT',
+ extra => ['security_triage.triage_owner_id = ' . $user->id],
+ };
+ push(@joins, $security_cc_join, $security_triage_join);
}
return @joins;
OR (bugs.reporter_accessible = 1 AND bugs.reporter = $userid)
OR (bugs.cclist_accessible = 1 AND security_cc.who IS NOT NULL)
OR bugs.assigned_to = $userid
+ OR security_triage.triage_owner_id IS NOT NULL
END
if (Bugzilla->params->{'useqacontact'}) {
$security_term .= " OR bugs.qa_contact = $userid";
# same result for bug_group_map.bug_id (so DISTINCT filters
# out duplicate rows).
"SELECT DISTINCT bugs.bug_id, reporter, assigned_to, qa_contact,
- reporter_accessible, cclist_accessible, cc.who,
- bug_group_map.bug_id
+ components.triage_owner_id, reporter_accessible,
+ cclist_accessible, cc.who, bug_group_map.bug_id
FROM bugs
LEFT JOIN cc
ON cc.bug_id = bugs.bug_id
AND cc.who = $user_id
+ LEFT JOIN components
+ ON bugs.component_id = components.id
LEFT JOIN bug_group_map
ON bugs.bug_id = bug_group_map.bug_id
AND bug_group_map.group_id NOT IN ("
$sth->execute(@check_ids);
my $use_qa_contact = Bugzilla->params->{'useqacontact'};
while (my $row = $sth->fetchrow_arrayref) {
- my ($bug_id, $reporter, $owner, $qacontact, $reporter_access, $cclist_access,
- $isoncclist, $missinggroup)
+ my ($bug_id, $reporter, $owner, $qacontact, $triage_owner, $reporter_access,
+ $cclist_access, $isoncclist, $missinggroup)
= @$row;
$visible_cache->{$bug_id}
||= ((($reporter == $user_id) && $reporter_access)
|| ($use_qa_contact && $qacontact && ($qacontact == $user_id))
+ || ($triage_owner && $triage_owner == $user_id)
|| ($owner == $user_id)
|| ($isoncclist && $cclist_access)
|| !$missinggroup) ? 1 : 0;
[% " disabled=\"disabled\"" UNLESS user_can_edit_accessible %]>
<label for="cclist_accessible">CC List</label>
</div>
- The assignee [% IF (Param('useqacontact')) %]and QA contact[% END %]
- can always see [% terms.abug %], and this section does not take effect
- unless the [% terms.bug %] is restricted to at least one group.
+ The assignee[% IF (Param('useqacontact')) %], QA contact, [% END %]
+ and triage owner can always see [% terms.abug %], and this section does not
+ take effect unless the [% terms.bug %] is restricted to at least one group.
[% END %]
</div>