From 9e65e6c5034226bc738aa51a4bd0be6ed2ca7f60 Mon Sep 17 00:00:00 2001 From: epriestley Date: Wed, 10 Apr 2019 09:09:34 -0700 Subject: [PATCH] Support "JIRA Issue URIs" as a Herald field for revisions Summary: See PHI1175. An install would like to trigger some reminders/guidance if users don't link revisions to JIRA issues. Expose "JIRA Issue URIs" as a field so Herald can act on the presence or absence of issues. I'm exposing "JIRA Issue URIs", not a field like "[ Has Jira Issue ][ is true ]", since it's a bit more flexible: you can use a regexp to test against particular `PROJ-123` project prefixes in JIRA, for example. Test Plan: {F6367696} Reviewers: amckinley Reviewed By: amckinley Differential Revision: https://secure.phabricator.com/D20386 --- src/__phutil_library_map__.php | 2 + ...entialRevisionJIRAIssueURIsHeraldField.php | 44 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/applications/differential/herald/DifferentialRevisionJIRAIssueURIsHeraldField.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 65037a6aa1..56a55a3d1b 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -609,6 +609,7 @@ phutil_register_library_map(array( 'DifferentialRevisionIDCommitMessageField' => 'applications/differential/field/DifferentialRevisionIDCommitMessageField.php', 'DifferentialRevisionInlineTransaction' => 'applications/differential/xaction/DifferentialRevisionInlineTransaction.php', 'DifferentialRevisionInlinesController' => 'applications/differential/controller/DifferentialRevisionInlinesController.php', + 'DifferentialRevisionJIRAIssueURIsHeraldField' => 'applications/differential/herald/DifferentialRevisionJIRAIssueURIsHeraldField.php', 'DifferentialRevisionListController' => 'applications/differential/controller/DifferentialRevisionListController.php', 'DifferentialRevisionListView' => 'applications/differential/view/DifferentialRevisionListView.php', 'DifferentialRevisionMailReceiver' => 'applications/differential/mail/DifferentialRevisionMailReceiver.php', @@ -6226,6 +6227,7 @@ phutil_register_library_map(array( 'DifferentialRevisionIDCommitMessageField' => 'DifferentialCommitMessageField', 'DifferentialRevisionInlineTransaction' => 'PhabricatorModularTransactionType', 'DifferentialRevisionInlinesController' => 'DifferentialController', + 'DifferentialRevisionJIRAIssueURIsHeraldField' => 'DifferentialRevisionHeraldField', 'DifferentialRevisionListController' => 'DifferentialController', 'DifferentialRevisionListView' => 'AphrontView', 'DifferentialRevisionMailReceiver' => 'PhabricatorObjectMailReceiver', diff --git a/src/applications/differential/herald/DifferentialRevisionJIRAIssueURIsHeraldField.php b/src/applications/differential/herald/DifferentialRevisionJIRAIssueURIsHeraldField.php new file mode 100644 index 0000000000..83b3cec39e --- /dev/null +++ b/src/applications/differential/herald/DifferentialRevisionJIRAIssueURIsHeraldField.php @@ -0,0 +1,44 @@ +getAdapter(); + $viewer = $adapter->getViewer(); + + $jira_phids = PhabricatorEdgeQuery::loadDestinationPHIDs( + $object->getPHID(), + PhabricatorJiraIssueHasObjectEdgeType::EDGECONST); + if (!$jira_phids) { + return array(); + } + + $xobjs = id(new DoorkeeperExternalObjectQuery()) + ->setViewer($viewer) + ->withPHIDs($jira_phids) + ->execute(); + + return mpull($xobjs, 'getObjectURI'); + } + + protected function getHeraldFieldStandardType() { + return self::STANDARD_TEXT_LIST; + } + +}