summaryrefslogtreecommitdiffstats
path: root/extensions/Push
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/Push')
-rw-r--r--extensions/Push/lib/Connector/Phabricator.pm28
1 files changed, 23 insertions, 5 deletions
diff --git a/extensions/Push/lib/Connector/Phabricator.pm b/extensions/Push/lib/Connector/Phabricator.pm
index 8c3b56112..5da64901a 100644
--- a/extensions/Push/lib/Connector/Phabricator.pm
+++ b/extensions/Push/lib/Connector/Phabricator.pm
@@ -20,11 +20,19 @@ use Bugzilla::User;
use Bugzilla::Extension::PhabBugz::Constants;
use Bugzilla::Extension::PhabBugz::Util qw(
- add_comment_to_revision create_private_revision_policy
- edit_revision_policy get_attachment_revisions get_bug_role_phids
- intersect make_revision_public
- make_revision_private set_revision_subscribers
- get_security_sync_groups add_security_sync_comments);
+ add_comment_to_revision
+ add_security_sync_comments
+ create_private_revision_policy
+ edit_revision_policy
+ get_attachment_revisions
+ get_bug_role_phids
+ get_project_phid
+ get_security_sync_groups
+ intersect
+ make_revision_public
+ make_revision_private
+ set_revision_subscribers
+);
use Bugzilla::Extension::Push::Constants;
use Bugzilla::Extension::Push::Util qw(is_public);
@@ -96,9 +104,14 @@ sub send {
$subscribers = get_bug_role_phids($bug);
}
+ my $secure_project_phid = get_project_phid('secure-revision');
+
foreach my $revision (@revisions) {
my $revision_phid = $revision->{phid};
+ my $rev_obj = Bugzilla::Extension::PhabBugz::Revision->new_from_query({ phids => [ $revision_phid ] });
+ my $revision_updated;
+
if ( $is_public && $group_change ) {
Bugzilla->audit(sprintf(
'Making revision %s public for bug %s',
@@ -106,6 +119,8 @@ sub send {
$bug->id
));
make_revision_public($revision_phid);
+ $rev_obj->remove_project($secure_project_phid);
+ $revision_updated = 1;
}
elsif ( !$is_public && $group_change ) {
Bugzilla->audit(sprintf(
@@ -115,6 +130,8 @@ sub send {
));
my $policy_phid = create_private_revision_policy( $bug, \@set_groups );
edit_revision_policy( $revision_phid, $policy_phid, $subscribers );
+ $rev_obj->add_project($secure_project_phid);
+ $revision_updated = 1;
}
elsif ( !$is_public && !$group_change ) {
Bugzilla->audit(sprintf(
@@ -124,6 +141,7 @@ sub send {
));
set_revision_subscribers( $revision_phid, $subscribers );
}
+ $rev_obj->update() if $revision_updated;
}
return PUSH_RESULT_OK;