Differential D21599 Diff 51420 src/applications/diffusion/xaction/DiffusionCommitAuditTransaction.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/diffusion/xaction/DiffusionCommitAuditTransaction.php
Show All 15 Lines | protected function isViewerAnyAuditor( | ||||
PhabricatorUser $viewer) { | PhabricatorUser $viewer) { | ||||
return ($this->getViewerAuditStatus($commit, $viewer) !== null); | return ($this->getViewerAuditStatus($commit, $viewer) !== null); | ||||
} | } | ||||
protected function isViewerAnyActiveAuditor( | protected function isViewerAnyActiveAuditor( | ||||
PhabricatorRepositoryCommit $commit, | PhabricatorRepositoryCommit $commit, | ||||
PhabricatorUser $viewer) { | PhabricatorUser $viewer) { | ||||
// This omits various inactive states like "Resigned" and "Not Required". | // This omits inactive states; currently just "Resigned". | ||||
$active = array( | $active = array( | ||||
PhabricatorAuditStatusConstants::AUDIT_REQUIRED, | PhabricatorAuditRequestStatus::AUDIT_REQUIRED, | ||||
PhabricatorAuditStatusConstants::CONCERNED, | PhabricatorAuditRequestStatus::CONCERNED, | ||||
PhabricatorAuditStatusConstants::ACCEPTED, | PhabricatorAuditRequestStatus::ACCEPTED, | ||||
PhabricatorAuditStatusConstants::AUDIT_REQUESTED, | PhabricatorAuditRequestStatus::AUDIT_REQUESTED, | ||||
); | ); | ||||
$active = array_fuse($active); | $active = array_fuse($active); | ||||
$viewer_status = $this->getViewerAuditStatus($commit, $viewer); | $viewer_status = $this->getViewerAuditStatus($commit, $viewer); | ||||
return isset($active[$viewer_status]); | return isset($active[$viewer_status]); | ||||
} | } | ||||
protected function isViewerFullyAccepted( | protected function isViewerFullyAccepted( | ||||
PhabricatorRepositoryCommit $commit, | PhabricatorRepositoryCommit $commit, | ||||
PhabricatorUser $viewer) { | PhabricatorUser $viewer) { | ||||
return $this->isViewerAuditStatusFullyAmong( | return $this->isViewerAuditStatusFullyAmong( | ||||
$commit, | $commit, | ||||
$viewer, | $viewer, | ||||
array( | array( | ||||
PhabricatorAuditStatusConstants::ACCEPTED, | PhabricatorAuditRequestStatus::ACCEPTED, | ||||
)); | )); | ||||
} | } | ||||
protected function isViewerFullyRejected( | protected function isViewerFullyRejected( | ||||
PhabricatorRepositoryCommit $commit, | PhabricatorRepositoryCommit $commit, | ||||
PhabricatorUser $viewer) { | PhabricatorUser $viewer) { | ||||
return $this->isViewerAuditStatusFullyAmong( | return $this->isViewerAuditStatusFullyAmong( | ||||
$commit, | $commit, | ||||
$viewer, | $viewer, | ||||
array( | array( | ||||
PhabricatorAuditStatusConstants::CONCERNED, | PhabricatorAuditRequestStatus::CONCERNED, | ||||
)); | )); | ||||
} | } | ||||
protected function getViewerAuditStatus( | protected function getViewerAuditStatus( | ||||
PhabricatorRepositoryCommit $commit, | PhabricatorRepositoryCommit $commit, | ||||
PhabricatorUser $viewer) { | PhabricatorUser $viewer) { | ||||
if (!$viewer->getPHID()) { | if (!$viewer->getPHID()) { | ||||
▲ Show 20 Lines • Show All 47 Lines • ▼ Show 20 Lines | protected function applyAuditorEffect( | ||||
$actor = $this->getActor(); | $actor = $this->getActor(); | ||||
$acting_phid = $this->getActingAsPHID(); | $acting_phid = $this->getActingAsPHID(); | ||||
$audits = $commit->getAudits(); | $audits = $commit->getAudits(); | ||||
$audits = mpull($audits, null, 'getAuditorPHID'); | $audits = mpull($audits, null, 'getAuditorPHID'); | ||||
$map = array(); | $map = array(); | ||||
$with_authority = ($status != PhabricatorAuditStatusConstants::RESIGNED); | $with_authority = ($status != PhabricatorAuditRequestStatus::RESIGNED); | ||||
if ($with_authority) { | if ($with_authority) { | ||||
foreach ($audits as $audit) { | foreach ($audits as $audit) { | ||||
if ($commit->hasAuditAuthority($actor, $audit, $acting_phid)) { | if ($commit->hasAuditAuthority($actor, $audit, $acting_phid)) { | ||||
$map[$audit->getAuditorPHID()] = $status; | $map[$audit->getAuditorPHID()] = $status; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
// In all cases, you affect yourself. | // In all cases, you affect yourself. | ||||
$map[$viewer->getPHID()] = $status; | $map[$viewer->getPHID()] = $status; | ||||
$this->updateAudits($commit, $map); | $this->updateAudits($commit, $map); | ||||
} | } | ||||
} | } |