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 => (
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}) {
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;