From 80fe382e3d2782f56b6496899e0fe93aba2f5220 Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 27 Feb 2018 13:44:53 -0800 Subject: [PATCH] Add "Committer's projects" and "Author's projects" fields to Herald commit rules Summary: Ref T13093. See PHI396. These are possibly somewhat niche, but reasonable to support and consistent with the existing "Pusher's projects". Also relabel "Pusher's projects" and "Project tags" for consistency and, hopefully, clarity. Test Plan: - Created new "commit" and "hook: commit content" Herald rules which run against "Author's projects" and "Committer's projects". - Test console'd the "Commit" rules. - Pushed through the "Hook" rule. - In all cases, saw fields populate appropriately. Maniphest Tasks: T13093 Differential Revision: https://secure.phabricator.com/D19145 --- src/__phutil_library_map__.php | 8 ++++ ...ffusionCommitAuthorProjectsHeraldField.php | 38 +++++++++++++++++++ ...sionCommitCommitterProjectsHeraldField.php | 38 +++++++++++++++++++ ...CommitContentAuthorProjectsHeraldField.php | 38 +++++++++++++++++++ ...mitContentCommitterProjectsHeraldField.php | 38 +++++++++++++++++++ ...CommitContentPusherProjectsHeraldField.php | 2 +- ...nPreCommitRefPusherProjectsHeraldField.php | 2 +- ...CommitRefRepositoryProjectsHeraldField.php | 2 +- .../project/herald/HeraldProjectsField.php | 2 +- 9 files changed, 164 insertions(+), 4 deletions(-) create mode 100644 src/applications/diffusion/herald/DiffusionCommitAuthorProjectsHeraldField.php create mode 100644 src/applications/diffusion/herald/DiffusionCommitCommitterProjectsHeraldField.php create mode 100644 src/applications/diffusion/herald/DiffusionPreCommitContentAuthorProjectsHeraldField.php create mode 100644 src/applications/diffusion/herald/DiffusionPreCommitContentCommitterProjectsHeraldField.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 3a7ba1dbbc..b72577583d 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -652,10 +652,12 @@ phutil_register_library_map(array( 'DiffusionCommitAuditorsHeraldField' => 'applications/diffusion/herald/DiffusionCommitAuditorsHeraldField.php', 'DiffusionCommitAuditorsTransaction' => 'applications/diffusion/xaction/DiffusionCommitAuditorsTransaction.php', 'DiffusionCommitAuthorHeraldField' => 'applications/diffusion/herald/DiffusionCommitAuthorHeraldField.php', + 'DiffusionCommitAuthorProjectsHeraldField' => 'applications/diffusion/herald/DiffusionCommitAuthorProjectsHeraldField.php', 'DiffusionCommitAutocloseHeraldField' => 'applications/diffusion/herald/DiffusionCommitAutocloseHeraldField.php', 'DiffusionCommitBranchesController' => 'applications/diffusion/controller/DiffusionCommitBranchesController.php', 'DiffusionCommitBranchesHeraldField' => 'applications/diffusion/herald/DiffusionCommitBranchesHeraldField.php', 'DiffusionCommitCommitterHeraldField' => 'applications/diffusion/herald/DiffusionCommitCommitterHeraldField.php', + 'DiffusionCommitCommitterProjectsHeraldField' => 'applications/diffusion/herald/DiffusionCommitCommitterProjectsHeraldField.php', 'DiffusionCommitConcernTransaction' => 'applications/diffusion/xaction/DiffusionCommitConcernTransaction.php', 'DiffusionCommitController' => 'applications/diffusion/controller/DiffusionCommitController.php', 'DiffusionCommitDiffContentAddedHeraldField' => 'applications/diffusion/herald/DiffusionCommitDiffContentAddedHeraldField.php', @@ -801,9 +803,11 @@ phutil_register_library_map(array( 'DiffusionPhpExternalSymbolsSource' => 'applications/diffusion/symbol/DiffusionPhpExternalSymbolsSource.php', 'DiffusionPreCommitContentAffectedFilesHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentAffectedFilesHeraldField.php', 'DiffusionPreCommitContentAuthorHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentAuthorHeraldField.php', + 'DiffusionPreCommitContentAuthorProjectsHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentAuthorProjectsHeraldField.php', 'DiffusionPreCommitContentAuthorRawHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentAuthorRawHeraldField.php', 'DiffusionPreCommitContentBranchesHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentBranchesHeraldField.php', 'DiffusionPreCommitContentCommitterHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentCommitterHeraldField.php', + 'DiffusionPreCommitContentCommitterProjectsHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentCommitterProjectsHeraldField.php', 'DiffusionPreCommitContentCommitterRawHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentCommitterRawHeraldField.php', 'DiffusionPreCommitContentDiffContentAddedHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentDiffContentAddedHeraldField.php', 'DiffusionPreCommitContentDiffContentHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentDiffContentHeraldField.php', @@ -5867,10 +5871,12 @@ phutil_register_library_map(array( 'DiffusionCommitAuditorsHeraldField' => 'DiffusionCommitHeraldField', 'DiffusionCommitAuditorsTransaction' => 'DiffusionCommitTransactionType', 'DiffusionCommitAuthorHeraldField' => 'DiffusionCommitHeraldField', + 'DiffusionCommitAuthorProjectsHeraldField' => 'DiffusionCommitHeraldField', 'DiffusionCommitAutocloseHeraldField' => 'DiffusionCommitHeraldField', 'DiffusionCommitBranchesController' => 'DiffusionController', 'DiffusionCommitBranchesHeraldField' => 'DiffusionCommitHeraldField', 'DiffusionCommitCommitterHeraldField' => 'DiffusionCommitHeraldField', + 'DiffusionCommitCommitterProjectsHeraldField' => 'DiffusionCommitHeraldField', 'DiffusionCommitConcernTransaction' => 'DiffusionCommitAuditTransaction', 'DiffusionCommitController' => 'DiffusionController', 'DiffusionCommitDiffContentAddedHeraldField' => 'DiffusionCommitHeraldField', @@ -6019,9 +6025,11 @@ phutil_register_library_map(array( 'DiffusionPhpExternalSymbolsSource' => 'DiffusionExternalSymbolsSource', 'DiffusionPreCommitContentAffectedFilesHeraldField' => 'DiffusionPreCommitContentHeraldField', 'DiffusionPreCommitContentAuthorHeraldField' => 'DiffusionPreCommitContentHeraldField', + 'DiffusionPreCommitContentAuthorProjectsHeraldField' => 'DiffusionPreCommitContentHeraldField', 'DiffusionPreCommitContentAuthorRawHeraldField' => 'DiffusionPreCommitContentHeraldField', 'DiffusionPreCommitContentBranchesHeraldField' => 'DiffusionPreCommitContentHeraldField', 'DiffusionPreCommitContentCommitterHeraldField' => 'DiffusionPreCommitContentHeraldField', + 'DiffusionPreCommitContentCommitterProjectsHeraldField' => 'DiffusionPreCommitContentHeraldField', 'DiffusionPreCommitContentCommitterRawHeraldField' => 'DiffusionPreCommitContentHeraldField', 'DiffusionPreCommitContentDiffContentAddedHeraldField' => 'DiffusionPreCommitContentHeraldField', 'DiffusionPreCommitContentDiffContentHeraldField' => 'DiffusionPreCommitContentHeraldField', diff --git a/src/applications/diffusion/herald/DiffusionCommitAuthorProjectsHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitAuthorProjectsHeraldField.php new file mode 100644 index 0000000000..a90480d50a --- /dev/null +++ b/src/applications/diffusion/herald/DiffusionCommitAuthorProjectsHeraldField.php @@ -0,0 +1,38 @@ +getAdapter(); + + $phid = $object->getCommitData()->getCommitDetail('authorPHID'); + if (!$phid) { + return array(); + } + + $viewer = $adapter->getViewer(); + + $projects = id(new PhabricatorProjectQuery()) + ->setViewer($viewer) + ->withMemberPHIDs(array($phid)) + ->execute(); + + return mpull($projects, 'getPHID'); + } + + protected function getHeraldFieldStandardType() { + return self::STANDARD_PHID_LIST; + } + + protected function getDatasource() { + return new PhabricatorProjectDatasource(); + } + +} diff --git a/src/applications/diffusion/herald/DiffusionCommitCommitterProjectsHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitCommitterProjectsHeraldField.php new file mode 100644 index 0000000000..97e604a481 --- /dev/null +++ b/src/applications/diffusion/herald/DiffusionCommitCommitterProjectsHeraldField.php @@ -0,0 +1,38 @@ +getAdapter(); + + $phid = $object->getCommitData()->getCommitDetail('committerPHID'); + if (!$phid) { + return array(); + } + + $viewer = $adapter->getViewer(); + + $projects = id(new PhabricatorProjectQuery()) + ->setViewer($viewer) + ->withMemberPHIDs(array($phid)) + ->execute(); + + return mpull($projects, 'getPHID'); + } + + protected function getHeraldFieldStandardType() { + return self::STANDARD_PHID_LIST; + } + + protected function getDatasource() { + return new PhabricatorProjectDatasource(); + } + +} diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentAuthorProjectsHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentAuthorProjectsHeraldField.php new file mode 100644 index 0000000000..ec138c9bde --- /dev/null +++ b/src/applications/diffusion/herald/DiffusionPreCommitContentAuthorProjectsHeraldField.php @@ -0,0 +1,38 @@ +getAdapter(); + + $phid = $adapter->getAuthorPHID(); + if (!$phid) { + return array(); + } + + $viewer = $adapter->getViewer(); + + $projects = id(new PhabricatorProjectQuery()) + ->setViewer($viewer) + ->withMemberPHIDs(array($phid)) + ->execute(); + + return mpull($projects, 'getPHID'); + } + + protected function getHeraldFieldStandardType() { + return self::STANDARD_PHID_LIST; + } + + protected function getDatasource() { + return new PhabricatorProjectDatasource(); + } + +} diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentCommitterProjectsHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentCommitterProjectsHeraldField.php new file mode 100644 index 0000000000..9b0f012f3c --- /dev/null +++ b/src/applications/diffusion/herald/DiffusionPreCommitContentCommitterProjectsHeraldField.php @@ -0,0 +1,38 @@ +getAdapter(); + + $phid = $adapter->getCommitterPHID(); + if (!$phid) { + return array(); + } + + $viewer = $adapter->getViewer(); + + $projects = id(new PhabricatorProjectQuery()) + ->setViewer($viewer) + ->withMemberPHIDs(array($phid)) + ->execute(); + + return mpull($projects, 'getPHID'); + } + + protected function getHeraldFieldStandardType() { + return self::STANDARD_PHID_LIST; + } + + protected function getDatasource() { + return new PhabricatorProjectDatasource(); + } + +} diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentPusherProjectsHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentPusherProjectsHeraldField.php index 6a8c79c108..eef82124cf 100644 --- a/src/applications/diffusion/herald/DiffusionPreCommitContentPusherProjectsHeraldField.php +++ b/src/applications/diffusion/herald/DiffusionPreCommitContentPusherProjectsHeraldField.php @@ -6,7 +6,7 @@ final class DiffusionPreCommitContentPusherProjectsHeraldField const FIELDCONST = 'diffusion.pre.content.pusher.projects'; public function getHeraldFieldName() { - return pht('Pusher projects'); + return pht("Pusher's projects"); } public function getHeraldFieldValue($object) { diff --git a/src/applications/diffusion/herald/DiffusionPreCommitRefPusherProjectsHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitRefPusherProjectsHeraldField.php index 6fff0a3570..937e758acf 100644 --- a/src/applications/diffusion/herald/DiffusionPreCommitRefPusherProjectsHeraldField.php +++ b/src/applications/diffusion/herald/DiffusionPreCommitRefPusherProjectsHeraldField.php @@ -6,7 +6,7 @@ final class DiffusionPreCommitRefPusherProjectsHeraldField const FIELDCONST = 'diffusion.pre.ref.pusher.projects'; public function getHeraldFieldName() { - return pht('Pusher projects'); + return pht("Pusher's projects"); } public function getHeraldFieldValue($object) { diff --git a/src/applications/diffusion/herald/DiffusionPreCommitRefRepositoryProjectsHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitRefRepositoryProjectsHeraldField.php index df262524f2..17670a1c41 100644 --- a/src/applications/diffusion/herald/DiffusionPreCommitRefRepositoryProjectsHeraldField.php +++ b/src/applications/diffusion/herald/DiffusionPreCommitRefRepositoryProjectsHeraldField.php @@ -16,7 +16,7 @@ final class DiffusionPreCommitRefRepositoryProjectsHeraldField } protected function getHeraldFieldStandardType() { - return HeraldField::STANDARD_PHID_LIST; + return self::STANDARD_PHID_LIST; } protected function getDatasource() { diff --git a/src/applications/project/herald/HeraldProjectsField.php b/src/applications/project/herald/HeraldProjectsField.php index 1e25948689..7f66a00cf3 100644 --- a/src/applications/project/herald/HeraldProjectsField.php +++ b/src/applications/project/herald/HeraldProjectsField.php @@ -5,7 +5,7 @@ final class HeraldProjectsField extends HeraldField { const FIELDCONST = 'projects'; public function getHeraldFieldName() { - return pht('Projects'); + return pht('Project tags'); } public function getFieldGroupKey() {