diff options
Diffstat (limited to 'extensions/PhabBugz/lib/Feed.pm')
-rw-r--r-- | extensions/PhabBugz/lib/Feed.pm | 39 |
1 files changed, 8 insertions, 31 deletions
diff --git a/extensions/PhabBugz/lib/Feed.pm b/extensions/PhabBugz/lib/Feed.pm index 31dd8bca0..9fb1dac11 100644 --- a/extensions/PhabBugz/lib/Feed.pm +++ b/extensions/PhabBugz/lib/Feed.pm @@ -337,20 +337,6 @@ sub process_revision_change { blessed $revision_phid ? $revision_phid : Bugzilla::Extension::PhabBugz::Revision->new_from_query({ phids => [ $revision_phid ] }); - - # Project tags/groups that will be used later for policies, etc. - my $secure_revision = - Bugzilla::Extension::PhabBugz::Project->new_from_query( - { - name => 'secure-revision' - } - ); - my $edit_bugs = - Bugzilla::Extension::PhabBugz::Project->new_from_query( - { - name => 'bmo-editbugs-team' - } - ); # NO BUG ID @@ -358,9 +344,7 @@ sub process_revision_change { if ($story_text =~ /\s+created\s+D\d+/) { # If new revision and bug id was omitted, make revision public INFO("No bug associated with new revision. Marking public."); - $revision->set_policy('view', 'public'); - $revision->set_policy('edit', ($edit_bugs ? $edit_bugs->phid : 'users')); - $revision->remove_project($secure_revision->phid); + $revision->make_public(); $revision->update(); INFO("SUCCESS"); return; @@ -388,9 +372,7 @@ sub process_revision_change { # If bug is public then remove privacy policy if (!@{ $bug->groups_in }) { INFO('Bug is public so setting view/edit public'); - $revision->set_policy('view', 'public'); - $revision->set_policy('edit', ($edit_bugs ? $edit_bugs->phid : 'users')); - $revision->remove_project($secure_revision->phid); + $revision->make_public(); } # else bug is private. else { @@ -405,7 +387,7 @@ sub process_revision_change { # Otherwise, we create a new custom policy containing the project # groups that are mapped to bugzilla groups. else { - my @set_projects = map { "bmo-" . $_ } @set_groups; + my $set_project_names = [ map { "bmo-" . $_ } @set_groups ]; # If current policy projects matches what we want to set, then # we leave the current policy alone. @@ -414,13 +396,12 @@ sub process_revision_change { INFO("Loading current policy: " . $revision->view_policy); $current_policy = Bugzilla::Extension::PhabBugz::Policy->new_from_query({ phids => [ $revision->view_policy ]}); - my $current_projects = $current_policy->rule_projects; - INFO("Current policy projects: " . join(", ", @$current_projects)); - my ($added, $removed) = diff_arrays($current_projects, \@set_projects); + my $current_project_names = [ map { $_->name } @{ $current_policy->rule_projects } ]; + INFO("Current policy projects: " . join(", ", @$current_project_names)); + my ($added, $removed) = diff_arrays($current_project_names, $set_project_names); if (@$added || @$removed) { INFO('Project groups do not match. Need new custom policy'); $current_policy = undef; - } else { INFO('Project groups match. Leaving current policy as-is'); @@ -428,13 +409,9 @@ sub process_revision_change { } if (!$current_policy) { - INFO("Creating new custom policy: " . join(", ", @set_projects)); - my $new_policy = Bugzilla::Extension::PhabBugz::Policy->create(\@set_projects); - $revision->set_policy('view', $new_policy->phid); - $revision->set_policy('edit', $new_policy->phid); + INFO("Creating new custom policy: " . join(", ", @$set_project_names)); + $revision->make_private($set_project_names); } - - $revision->add_project($secure_revision->phid); } # Subscriber list of the private revision should always match |