]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1546437 - group reviewers not properly flagged in "Phabricator Revisions" bugzill...
authordklawren <dklawren@users.noreply.github.com>
Tue, 28 May 2019 19:18:55 +0000 (15:18 -0400)
committerDylan William Hardison <dylan@hardison.net>
Tue, 28 May 2019 19:18:55 +0000 (15:18 -0400)
extensions/PhabBugz/lib/Revision.pm
extensions/PhabBugz/lib/Types.pm

index 1e3a1fa4cdae04b5be52f1be7504555620439412..4c6338b5c2fcdd87d5e471149a2284e7ff50d924 100644 (file)
@@ -44,7 +44,7 @@ has subscriber_count => (is => 'ro',   isa => Int);
 has bug              => (is => 'lazy', isa => Object);
 has author           => (is => 'lazy', isa => Object);
 has reviews =>
-  (is => 'lazy', isa => ArrayRef [Dict [user => PhabUser, status => Str]]);
+  (is => 'lazy', isa => ArrayRef [Dict [user => PhabUser | PhabProject, status => Str]]);
 has subscribers => (is => 'lazy', isa => ArrayRef [PhabUser]);
 has projects    => (is => 'lazy', isa => ArrayRef [Project]);
 has reviewers_raw => (
@@ -285,14 +285,23 @@ sub _build_reviews {
   my ($self) = @_;
 
   my %by_phid = map { $_->{reviewerPHID} => $_ } @{$self->reviewers_raw};
-  my $users
-    = Bugzilla::Extension::PhabBugz::User->match({phids => [keys %by_phid]});
+  my @users;
+  foreach my $phid (keys %by_phid) {
+    if ($phid =~ /^PHID-PROJ/) {
+      push(@users,
+        Bugzilla::Extension::PhabBugz::Project->new_from_query({phids => [$phid]}));
+    }
+    else {
+      push(@users,
+        Bugzilla::Extension::PhabBugz::User->new_from_query({phids => [$phid]}));
+    }
+  }
 
   my @reviewers;
-  foreach my $user (@{$users}) {
+  foreach my $user (@users) {
     my $reviewer_data = {user => $user, status => $by_phid{$user->phid}{status}};
 
-# Set to accepted-prior if the diffs reviewer are different and the reviewer status is accepted
+    # Set to accepted-prior if the diffs reviewer are different and the reviewer status is accepted
     foreach my $reviewer_extra (@{$self->reviewers_extra_raw}) {
       if ($reviewer_extra->{reviewerPHID} eq $user->phid) {
         if ($reviewer_extra->{diffPHID}) {
index 267b8c26aad5b65762ac89efb89ad0ea1e42972a..49dcd2e532659753bb8582f1451d25c45d9d4f3c 100644 (file)
@@ -12,14 +12,16 @@ use strict;
 use warnings;
 
 use Type::Library -base,
-  -declare => qw( Revision LinkedPhabUser PhabUser Policy Project );
+  -declare => qw( Revision LinkedPhabUser PhabProject PhabUser Policy Project );
 use Type::Utils -all;
 use Types::Standard -all;
 
-class_type Revision, {class => 'Bugzilla::Extension::PhabBugz::Revision'};
-class_type Policy,   {class => 'Bugzilla::Extension::PhabBugz::Policy'};
-class_type Project,  {class => 'Bugzilla::Extension::PhabBugz::Project'};
-class_type PhabUser, {class => 'Bugzilla::Extension::PhabBugz::User'};
+class_type Revision,    {class => 'Bugzilla::Extension::PhabBugz::Revision'};
+class_type Policy,      {class => 'Bugzilla::Extension::PhabBugz::Policy'};
+class_type Project,     {class => 'Bugzilla::Extension::PhabBugz::Project'};
+class_type PhabProject, {class => 'Bugzilla::Extension::PhabBugz::Project'};
+class_type PhabUser,    {class => 'Bugzilla::Extension::PhabBugz::User'};
 declare LinkedPhabUser, as PhabUser, where { is_Int($_->bugzilla_id) };
 
+
 1;