summaryrefslogtreecommitdiffstats
path: root/extensions/PhabBugz
diff options
context:
space:
mode:
authordklawren <dklawren@users.noreply.github.com>2017-09-28 16:22:37 +0200
committerDavid Walsh <davidwalsh83@gmail.com>2017-09-28 16:22:37 +0200
commitde23b442ba2f6f9a28360dd8696565efee1f88bf (patch)
treeba909bf17690c994d35a7878a15487692e88b359 /extensions/PhabBugz
parent3e13de0966e361ca4e70cfd2d781320f25d820d3 (diff)
downloadbugzilla-de23b442ba2f6f9a28360dd8696565efee1f88bf.tar.gz
bugzilla-de23b442ba2f6f9a28360dd8696565efee1f88bf.tar.xz
Bug 1403584: Clear r+ in bug when reviewer is removed from the revision by the author via Change Reviewers (#251)
Diffstat (limited to 'extensions/PhabBugz')
-rw-r--r--extensions/PhabBugz/lib/WebService.pm15
1 files changed, 11 insertions, 4 deletions
diff --git a/extensions/PhabBugz/lib/WebService.pm b/extensions/PhabBugz/lib/WebService.pm
index 28ca19172..4b14f1495 100644
--- a/extensions/PhabBugz/lib/WebService.pm
+++ b/extensions/PhabBugz/lib/WebService.pm
@@ -185,16 +185,20 @@ sub update_reviewer_statuses {
next if $revision_id != $curr_revision_id;
# Clear old flags if no longer accepted
- my (@old_flags, @new_flags, %accepted_done, %denied_done, $flag_type);
+ my (@denied_flags, @new_flags, @removed_flags, %accepted_done, $flag_type);
foreach my $flag (@{ $attachment->flags }) {
next if $flag->type->name ne 'review';
$flag_type = $flag->type;
if (any { $flag->setter->id == $_ } @$denied_user_ids) {
- push(@old_flags, { id => $flag->id, setter => $flag->setter, status => 'X' });
+ push(@denied_flags, { id => $flag->id, setter => $flag->setter, status => 'X' });
}
if (any { $flag->setter->id == $_ } @$accepted_user_ids) {
$accepted_done{$flag->setter->id}++;
}
+ if ($flag->status eq '+'
+ && !any { $flag->setter->id == $_ } (@$accepted_user_ids, @$denied_user_ids)) {
+ push(@removed_flags, { id => $flag->id, setter => $flag->setter, status => 'X' });
+ }
}
$flag_type ||= first { $_->name eq 'review' } @{ $attachment->flag_types };
@@ -212,9 +216,12 @@ sub update_reviewer_statuses {
foreach my $flag_data (@new_flags) {
$comment .= $flag_data->{setter}->name . " has approved the revision.\n";
}
- foreach my $flag_data (@old_flags) {
+ foreach my $flag_data (@denied_flags) {
$comment .= $flag_data->{setter}->name . " has requested changes to the revision.\n";
}
+ foreach my $flag_data (@removed_flags) {
+ $comment .= $flag_data->{setter}->name . " has been removed from the revision.\n";
+ }
if ($comment) {
$comment .= "\n" . Bugzilla->params->{phabricator_base_uri} . "D" . $revision_id;
@@ -227,7 +234,7 @@ sub update_reviewer_statuses {
});
}
- $attachment->set_flags(\@old_flags, \@new_flags);
+ $attachment->set_flags([ @denied_flags, @removed_flags ], \@new_flags);
$attachment->update($timestamp);
$bug->update($timestamp) if $comment;