summaryrefslogtreecommitdiffstats
path: root/extensions/PhabBugz/lib/Util.pm
diff options
context:
space:
mode:
authordklawren <dklawren@users.noreply.github.com>2018-05-31 04:12:59 +0200
committerGitHub <noreply@github.com>2018-05-31 04:12:59 +0200
commit5460e9be3a80d353f7c49ca94833c08455440ce8 (patch)
treebbe9cfc7f08d5cdc3b55541be1f98b08f2c2e34a /extensions/PhabBugz/lib/Util.pm
parente2ff84039ad6976142fa9081e920593d94f2be8f (diff)
downloadbugzilla-5460e9be3a80d353f7c49ca94833c08455440ce8.tar.gz
bugzilla-5460e9be3a80d353f7c49ca94833c08455440ce8.tar.xz
Bug 1430905 - Remove legacy phabbugz code that is no longer needed
Diffstat (limited to 'extensions/PhabBugz/lib/Util.pm')
-rw-r--r--extensions/PhabBugz/lib/Util.pm300
1 files changed, 25 insertions, 275 deletions
diff --git a/extensions/PhabBugz/lib/Util.pm b/extensions/PhabBugz/lib/Util.pm
index 916455e24..b24124ede 100644
--- a/extensions/PhabBugz/lib/Util.pm
+++ b/extensions/PhabBugz/lib/Util.pm
@@ -25,56 +25,19 @@ use Taint::Util qw(untaint);
use base qw(Exporter);
-our @EXPORT_OK = qw(
- add_comment_to_revision
+our @EXPORT = qw(
add_security_sync_comments
- create_private_revision_policy
- create_project
create_revision_attachment
- edit_revision_policy
get_attachment_revisions
get_bug_role_phids
get_needs_review
- get_project_phid
- get_revisions_by_ids
- get_revisions_by_phids
get_security_sync_groups
intersect
is_attachment_phab_revision
- make_revision_private
- make_revision_public
request
set_phab_user
- set_project_members
- set_revision_subscribers
);
-sub get_revisions_by_ids {
- my ($ids) = @_;
- return _get_revisions({ ids => $ids });
-}
-
-sub get_revisions_by_phids {
- my ($phids) = @_;
- return _get_revisions({ phids => $phids });
-}
-
-sub _get_revisions {
- my ($constraints) = @_;
-
- my $data = {
- queryKey => 'all',
- constraints => $constraints
- };
-
- my $result = request('differential.revision.search', $data);
-
- ThrowUserError('invalid_phabricator_revision_id')
- unless (exists $result->{result}{data} && @{ $result->{result}{data} });
-
- return $result->{result}{data};
-}
-
sub create_revision_attachment {
my ( $bug, $revision, $timestamp ) = @_;
@@ -131,230 +94,14 @@ sub get_bug_role_phids {
push(@bug_users, $bug->qa_contact) if $bug->qa_contact;
push(@bug_users, @{ $bug->cc_users }) if @{ $bug->cc_users };
- my $phab_users = Bugzilla::Extension::PhabBugz::User->match(
- {
- ids => [ map { $_->id } @bug_users ]
- }
- );
-
- return [ map { $_->phid } @$phab_users ];
-}
-
-sub create_private_revision_policy {
- my ( $groups ) = @_;
-
- my $data = {
- objectType => 'DREV',
- default => 'deny',
- policy => [
- {
- action => 'allow',
- rule => 'PhabricatorSubscriptionsSubscribersPolicyRule'
- },
- {
- action => 'allow',
- rule => 'PhabricatorDifferentialReviewersPolicyRule'
- }
- ]
- };
-
- if(scalar @$groups gt 0) {
- my $project_phids = [];
- foreach my $group (@$groups) {
- my $phid = get_project_phid('bmo-' . $group);
- push(@$project_phids, $phid) if $phid;
- }
-
- ThrowUserError('invalid_phabricator_projects') unless @$project_phids;
-
- push(@{ $data->{policy} },
- {
- action => 'allow',
- rule => 'PhabricatorProjectsPolicyRule',
- value => $project_phids,
- }
- );
- }
- else {
- my $secure_revision = Bugzilla::Extension::PhabBugz::Project->new_from_query({
- name => 'secure-revision'
- });
- push(@{ $data->{policy} },
- {
- action => 'allow',
- value => $secure_revision->phid,
- }
- );
- }
-
- my $result = request('policy.create', $data);
- return $result->{result}{phid};
-}
-
-sub make_revision_public {
- my ($revision_phid) = @_;
- return request('differential.revision.edit', {
- transactions => [
- {
- type => 'view',
- value => 'public'
- },
- {
- type => 'edit',
- value => 'users'
- }
- ],
- objectIdentifier => $revision_phid
- });
-
-}
-
-sub make_revision_private {
- my ($revision_phid) = @_;
-
- # When creating a private policy with no args it
- # creates one with the secure-revision project.
- my $private_policy = create_private_revision_policy();
-
- return request('differential.revision.edit', {
- transactions => [
- {
- type => "view",
- value => $private_policy->phid
- },
- {
- type => "edit",
- value => $private_policy->phid
- }
- ],
- objectIdentifier => $revision_phid
- });
-}
-
-sub edit_revision_policy {
- my ($revision_phid, $policy_phid, $subscribers) = @_;
-
- my $data = {
- transactions => [
- {
- type => 'view',
- value => $policy_phid
- },
- {
- type => 'edit',
- value => $policy_phid
- }
- ],
- objectIdentifier => $revision_phid
- };
-
- if (@$subscribers) {
- push(@{ $data->{transactions} }, {
- type => 'subscribers.set',
- value => $subscribers
- });
- }
-
- return request('differential.revision.edit', $data);
-}
-
-sub set_revision_subscribers {
- my ($revision_phid, $subscribers) = @_;
-
- my $data = {
- transactions => [
- {
- type => 'subscribers.set',
- value => $subscribers
- }
- ],
- objectIdentifier => $revision_phid
- };
-
- return request('differential.revision.edit', $data);
-}
-
-sub add_comment_to_revision {
- my ($revision_phid, $comment) = @_;
-
- my $data = {
- transactions => [
- {
- type => 'comment',
- value => $comment
- }
- ],
- objectIdentifier => $revision_phid
- };
- return request('differential.revision.edit', $data);
-}
-
-sub get_project_phid {
- my $project = shift;
- my $memcache = Bugzilla->memcached;
-
- # Check memcache
- my $project_phid = $memcache->get_config({ key => "phab_project_phid_" . $project });
- if (!$project_phid) {
- my $data = {
- queryKey => 'all',
- constraints => {
- name => $project
- }
- };
-
- my $result = request('project.search', $data);
- return undef
- unless (exists $result->{result}{data} && @{ $result->{result}{data} });
-
- # If name is used as a query param, we need to loop through and look
- # for exact match as Conduit will tokenize the name instead of doing
- # exact string match :(
- foreach my $item ( @{ $result->{result}{data} } ) {
- next if $item->{fields}{name} ne $project;
- $project_phid = $item->{phid};
+ my $phab_users =
+ Bugzilla::Extension::PhabBugz::User->match(
+ {
+ ids => [ map { $_->id } @bug_users ]
}
+ );
- $memcache->set_config({ key => "phab_project_phid_" . $project, data => $project_phid });
- }
- return $project_phid;
-}
-
-sub create_project {
- my ($project, $description, $members) = @_;
-
- my $secure_revision = Bugzilla::Extension::PhabBugz::Project->new_from_query({
- name => 'secure-revision'
- });
-
- my $data = {
- transactions => [
- { type => 'name', value => $project },
- { type => 'description', value => $description },
- { type => 'edit', value => $secure_revision->phid }.
- { type => 'join', value => $secure_revision->phid },
- { type => 'view', value => $secure_revision->phid },
- { type => 'icon', value => 'group' },
- { type => 'color', value => 'red' }
- ]
- };
-
- my $result = request('project.edit', $data);
- return $result->{result}{object}{phid};
-}
-
-sub set_project_members {
- my ($project_id, $phab_user_ids) = @_;
-
- my $data = {
- objectIdentifier => $project_id,
- transactions => [
- { type => 'members.set', value => $phab_user_ids }
- ]
- };
-
- my $result = request('project.edit', $data);
- return $result->{result}{object}{phid};
+ return [ map { $_->phid } @{ $phab_users } ];
}
sub is_attachment_phab_revision {
@@ -366,26 +113,29 @@ sub is_attachment_phab_revision {
sub get_attachment_revisions {
my $bug = shift;
- my $revisions;
-
my @attachments =
grep { is_attachment_phab_revision($_) } @{ $bug->attachments() };
- if (@attachments) {
- my @revision_ids;
- foreach my $attachment (@attachments) {
- my ($revision_id) =
- ( $attachment->filename =~ PHAB_ATTACHMENT_PATTERN );
- next if !$revision_id;
- push( @revision_ids, int($revision_id) );
- }
+ return unless @attachments;
- if (@revision_ids) {
- $revisions = get_revisions_by_ids( \@revision_ids );
- }
+ my @revision_ids;
+ foreach my $attachment (@attachments) {
+ my ($revision_id) =
+ ( $attachment->filename =~ PHAB_ATTACHMENT_PATTERN );
+ next if !$revision_id;
+ push( @revision_ids, int($revision_id) );
+ }
+
+ return unless @revision_ids;
+
+ my @revisions;
+ foreach my $revision_id (@revision_ids) {
+ push @revisions, Bugzilla::Extension::PhabBugz::Revision->new_from_query({
+ ids => [ $revision_id ]
+ });
}
- return @$revisions;
+ return \@revisions;
}
sub request {
@@ -462,7 +212,7 @@ sub add_security_sync_comments {
my $phab_error_message = 'Revision is being made private due to unknown Bugzilla groups.';
foreach my $revision (@$revisions) {
- add_comment_to_revision( $revision->{phid}, $phab_error_message );
+ $revision->add_comment($phab_error_message);
}
my $num_revisions = scalar @$revisions;