Differential D17252 Diff 41494 src/applications/diffusion/xaction/DiffusionCommitAuditTransaction.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/diffusion/xaction/DiffusionCommitAuditTransaction.php
| <?php | <?php | ||||
| abstract class DiffusionCommitAuditTransaction | abstract class DiffusionCommitAuditTransaction | ||||
| extends DiffusionCommitActionTransaction { | extends DiffusionCommitActionTransaction { | ||||
| protected function getCommitActionGroupKey() { | protected function getCommitActionGroupKey() { | ||||
| return DiffusionCommitEditEngine::ACTIONGROUP_AUDIT; | return DiffusionCommitEditEngine::ACTIONGROUP_AUDIT; | ||||
| } | } | ||||
| public function generateOldValue($object) { | |||||
| return false; | |||||
| } | |||||
| protected function isViewerAnyAuditor( | protected function isViewerAnyAuditor( | ||||
| PhabricatorRepositoryCommit $commit, | PhabricatorRepositoryCommit $commit, | ||||
| 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 various inactive states like "Resigned" and "Not Required". | ||||
| $active = array( | |||||
| return $this->isViewerAuditStatusAmong( | |||||
| $commit, | |||||
| $viewer, | |||||
| array( | |||||
| PhabricatorAuditStatusConstants::AUDIT_REQUIRED, | PhabricatorAuditStatusConstants::AUDIT_REQUIRED, | ||||
| PhabricatorAuditStatusConstants::CONCERNED, | PhabricatorAuditStatusConstants::CONCERNED, | ||||
| PhabricatorAuditStatusConstants::ACCEPTED, | PhabricatorAuditStatusConstants::ACCEPTED, | ||||
| PhabricatorAuditStatusConstants::AUDIT_REQUESTED, | PhabricatorAuditStatusConstants::AUDIT_REQUESTED, | ||||
| )); | ); | ||||
| $active = array_fuse($active); | |||||
| $viewer_status = $this->getViewerAuditStatus($commit, $viewer); | |||||
| return isset($active[$viewer_status]); | |||||
| } | } | ||||
| protected function isViewerAcceptingAuditor( | protected function isViewerFullyAccepted( | ||||
| PhabricatorRepositoryCommit $commit, | PhabricatorRepositoryCommit $commit, | ||||
| PhabricatorUser $viewer) { | PhabricatorUser $viewer) { | ||||
| return $this->isViewerAuditStatusAmong( | return $this->isViewerAuditStatusFullyAmong( | ||||
| $commit, | $commit, | ||||
| $viewer, | $viewer, | ||||
| array( | array( | ||||
| PhabricatorAuditStatusConstants::ACCEPTED, | PhabricatorAuditStatusConstants::ACCEPTED, | ||||
| )); | )); | ||||
| } | } | ||||
| protected function isViewerRejectingAuditor( | protected function isViewerFullyRejected( | ||||
| PhabricatorRepositoryCommit $commit, | PhabricatorRepositoryCommit $commit, | ||||
| PhabricatorUser $viewer) { | PhabricatorUser $viewer) { | ||||
| return $this->isViewerAuditStatusAmong( | return $this->isViewerAuditStatusFullyAmong( | ||||
| $commit, | $commit, | ||||
| $viewer, | $viewer, | ||||
| array( | array( | ||||
| PhabricatorAuditStatusConstants::CONCERNED, | PhabricatorAuditStatusConstants::CONCERNED, | ||||
| )); | )); | ||||
| } | } | ||||
| protected function getViewerAuditStatus( | protected function getViewerAuditStatus( | ||||
| Show All 10 Lines | foreach ($commit->getAudits() as $audit) { | ||||
| } | } | ||||
| return $audit->getAuditStatus(); | return $audit->getAuditStatus(); | ||||
| } | } | ||||
| return null; | return null; | ||||
| } | } | ||||
| protected function isViewerAuditStatusAmong( | protected function isViewerAuditStatusFullyAmong( | ||||
| PhabricatorRepositoryCommit $commit, | PhabricatorRepositoryCommit $commit, | ||||
| PhabricatorUser $viewer, | PhabricatorUser $viewer, | ||||
| array $status_list) { | array $status_list) { | ||||
| $status = $this->getViewerAuditStatus($commit, $viewer); | $status = $this->getViewerAuditStatus($commit, $viewer); | ||||
| if ($status === null) { | if ($status === null) { | ||||
| return false; | return false; | ||||
| } | } | ||||
| $status_map = array_fuse($status_list); | $status_map = array_fuse($status_list); | ||||
| return isset($status_map[$status]); | foreach ($commit->getAudits() as $audit) { | ||||
| if (!$commit->hasAuditAuthority($viewer, $audit)) { | |||||
| continue; | |||||
| } | |||||
| $status = $audit->getAuditStatus(); | |||||
| if (isset($status_map[$status])) { | |||||
| continue; | |||||
| } | |||||
| return false; | |||||
| } | |||||
| return true; | |||||
| } | } | ||||
| protected function applyAuditorEffect( | protected function applyAuditorEffect( | ||||
| PhabricatorRepositoryCommit $commit, | PhabricatorRepositoryCommit $commit, | ||||
| PhabricatorUser $viewer, | PhabricatorUser $viewer, | ||||
| $value, | $value, | ||||
| $status) { | $status) { | ||||
| Show All 24 Lines | |||||