@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.

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

+46
+2
src/__phutil_library_map__.php
··· 609 609 'DifferentialRevisionIDCommitMessageField' => 'applications/differential/field/DifferentialRevisionIDCommitMessageField.php', 610 610 'DifferentialRevisionInlineTransaction' => 'applications/differential/xaction/DifferentialRevisionInlineTransaction.php', 611 611 'DifferentialRevisionInlinesController' => 'applications/differential/controller/DifferentialRevisionInlinesController.php', 612 + 'DifferentialRevisionJIRAIssueURIsHeraldField' => 'applications/differential/herald/DifferentialRevisionJIRAIssueURIsHeraldField.php', 612 613 'DifferentialRevisionListController' => 'applications/differential/controller/DifferentialRevisionListController.php', 613 614 'DifferentialRevisionListView' => 'applications/differential/view/DifferentialRevisionListView.php', 614 615 'DifferentialRevisionMailReceiver' => 'applications/differential/mail/DifferentialRevisionMailReceiver.php', ··· 6226 6227 'DifferentialRevisionIDCommitMessageField' => 'DifferentialCommitMessageField', 6227 6228 'DifferentialRevisionInlineTransaction' => 'PhabricatorModularTransactionType', 6228 6229 'DifferentialRevisionInlinesController' => 'DifferentialController', 6230 + 'DifferentialRevisionJIRAIssueURIsHeraldField' => 'DifferentialRevisionHeraldField', 6229 6231 'DifferentialRevisionListController' => 'DifferentialController', 6230 6232 'DifferentialRevisionListView' => 'AphrontView', 6231 6233 'DifferentialRevisionMailReceiver' => 'PhabricatorObjectMailReceiver',
+44
src/applications/differential/herald/DifferentialRevisionJIRAIssueURIsHeraldField.php
··· 1 + <?php 2 + 3 + final class DifferentialRevisionJIRAIssueURIsHeraldField 4 + extends DifferentialRevisionHeraldField { 5 + 6 + const FIELDCONST = 'differential.revision.jira.uris'; 7 + 8 + public function getHeraldFieldName() { 9 + return pht('JIRA Issue URIs'); 10 + } 11 + 12 + public function supportsObject($object) { 13 + $provider = PhabricatorJIRAAuthProvider::getJIRAProvider(); 14 + if (!$provider) { 15 + return false; 16 + } 17 + 18 + return parent::supportsObject($object); 19 + } 20 + 21 + public function getHeraldFieldValue($object) { 22 + $adapter = $this->getAdapter(); 23 + $viewer = $adapter->getViewer(); 24 + 25 + $jira_phids = PhabricatorEdgeQuery::loadDestinationPHIDs( 26 + $object->getPHID(), 27 + PhabricatorJiraIssueHasObjectEdgeType::EDGECONST); 28 + if (!$jira_phids) { 29 + return array(); 30 + } 31 + 32 + $xobjs = id(new DoorkeeperExternalObjectQuery()) 33 + ->setViewer($viewer) 34 + ->withPHIDs($jira_phids) 35 + ->execute(); 36 + 37 + return mpull($xobjs, 'getObjectURI'); 38 + } 39 + 40 + protected function getHeraldFieldStandardType() { 41 + return self::STANDARD_TEXT_LIST; 42 + } 43 + 44 + }