@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add an "Auditors" rule for Commits

Summary: Fixes T5889. You can't write a rule like "if no other Herald rules did anything...", but you can use this rule to check for Owners or an explicit "Auditors" field doing things.

Test Plan: Using the test console, ran an "Auditors" rule against a commit with and without an auditor. Got expected pass/fail outcomes.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T5889

Differential Revision: https://secure.phabricator.com/D17221

+56
+2
src/__phutil_library_map__.php
··· 617 617 'DiffusionCommitActionTransaction' => 'applications/diffusion/xaction/DiffusionCommitActionTransaction.php', 618 618 'DiffusionCommitAffectedFilesHeraldField' => 'applications/diffusion/herald/DiffusionCommitAffectedFilesHeraldField.php', 619 619 'DiffusionCommitAuditTransaction' => 'applications/diffusion/xaction/DiffusionCommitAuditTransaction.php', 620 + 'DiffusionCommitAuditorsHeraldField' => 'applications/diffusion/herald/DiffusionCommitAuditorsHeraldField.php', 620 621 'DiffusionCommitAuditorsTransaction' => 'applications/diffusion/xaction/DiffusionCommitAuditorsTransaction.php', 621 622 'DiffusionCommitAuthorHeraldField' => 'applications/diffusion/herald/DiffusionCommitAuthorHeraldField.php', 622 623 'DiffusionCommitAutocloseHeraldField' => 'applications/diffusion/herald/DiffusionCommitAutocloseHeraldField.php', ··· 5321 5322 'DiffusionCommitActionTransaction' => 'DiffusionCommitTransactionType', 5322 5323 'DiffusionCommitAffectedFilesHeraldField' => 'DiffusionCommitHeraldField', 5323 5324 'DiffusionCommitAuditTransaction' => 'DiffusionCommitActionTransaction', 5325 + 'DiffusionCommitAuditorsHeraldField' => 'DiffusionCommitHeraldField', 5324 5326 'DiffusionCommitAuditorsTransaction' => 'DiffusionCommitTransactionType', 5325 5327 'DiffusionCommitAuthorHeraldField' => 'DiffusionCommitHeraldField', 5326 5328 'DiffusionCommitAutocloseHeraldField' => 'DiffusionCommitHeraldField',
+41
src/applications/diffusion/herald/DiffusionCommitAuditorsHeraldField.php
··· 1 + <?php 2 + 3 + final class DiffusionCommitAuditorsHeraldField 4 + extends DiffusionCommitHeraldField { 5 + 6 + const FIELDCONST = 'diffusion.commit.auditors'; 7 + 8 + public function getHeraldFieldName() { 9 + return pht('Auditors'); 10 + } 11 + 12 + public function getHeraldFieldValue($object) { 13 + $viewer = PhabricatorUser::getOmnipotentUser(); 14 + 15 + $commit = id(new DiffusionCommitQuery()) 16 + ->setViewer($viewer) 17 + ->withPHIDs(array($object->getPHID())) 18 + ->needAuditRequests(true) 19 + ->executeOne(); 20 + 21 + $audits = $commit->getAudits(); 22 + 23 + $phids = array(); 24 + foreach ($audits as $audit) { 25 + if ($audit->isActiveAudit()) { 26 + $phids[] = $audit->getAuditorPHID(); 27 + } 28 + } 29 + 30 + return $phids; 31 + } 32 + 33 + protected function getHeraldFieldStandardType() { 34 + return self::STANDARD_PHID_LIST; 35 + } 36 + 37 + protected function getDatasource() { 38 + return new DiffusionAuditorDatasource(); 39 + } 40 + 41 + }
+13
src/applications/repository/storage/PhabricatorRepositoryAuditRequest.php
··· 49 49 return $this->assertAttached($this->commit); 50 50 } 51 51 52 + public function isActiveAudit() { 53 + switch ($this->getAuditStatus()) { 54 + case PhabricatorAuditStatusConstants::NONE: 55 + case PhabricatorAuditStatusConstants::AUDIT_NOT_REQUIRED: 56 + case PhabricatorAuditStatusConstants::RESIGNED: 57 + case PhabricatorAuditStatusConstants::CLOSED: 58 + case PhabricatorAuditStatusConstants::CC: 59 + return false; 60 + } 61 + 62 + return true; 63 + } 64 + 52 65 public function isInteresting() { 53 66 switch ($this->getAuditStatus()) { 54 67 case PhabricatorAuditStatusConstants::NONE: