summaryrefslogtreecommitdiffstats
path: root/extensions/PhabBugz
diff options
context:
space:
mode:
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;