mirror of
https://we.phorge.it/source/phorge.git
synced 2025-01-26 22:48:19 +01:00
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
This commit is contained in:
parent
a35fda2019
commit
9e65e6c503
2 changed files with 46 additions and 0 deletions
|
@ -609,6 +609,7 @@ phutil_register_library_map(array(
|
||||||
'DifferentialRevisionIDCommitMessageField' => 'applications/differential/field/DifferentialRevisionIDCommitMessageField.php',
|
'DifferentialRevisionIDCommitMessageField' => 'applications/differential/field/DifferentialRevisionIDCommitMessageField.php',
|
||||||
'DifferentialRevisionInlineTransaction' => 'applications/differential/xaction/DifferentialRevisionInlineTransaction.php',
|
'DifferentialRevisionInlineTransaction' => 'applications/differential/xaction/DifferentialRevisionInlineTransaction.php',
|
||||||
'DifferentialRevisionInlinesController' => 'applications/differential/controller/DifferentialRevisionInlinesController.php',
|
'DifferentialRevisionInlinesController' => 'applications/differential/controller/DifferentialRevisionInlinesController.php',
|
||||||
|
'DifferentialRevisionJIRAIssueURIsHeraldField' => 'applications/differential/herald/DifferentialRevisionJIRAIssueURIsHeraldField.php',
|
||||||
'DifferentialRevisionListController' => 'applications/differential/controller/DifferentialRevisionListController.php',
|
'DifferentialRevisionListController' => 'applications/differential/controller/DifferentialRevisionListController.php',
|
||||||
'DifferentialRevisionListView' => 'applications/differential/view/DifferentialRevisionListView.php',
|
'DifferentialRevisionListView' => 'applications/differential/view/DifferentialRevisionListView.php',
|
||||||
'DifferentialRevisionMailReceiver' => 'applications/differential/mail/DifferentialRevisionMailReceiver.php',
|
'DifferentialRevisionMailReceiver' => 'applications/differential/mail/DifferentialRevisionMailReceiver.php',
|
||||||
|
@ -6226,6 +6227,7 @@ phutil_register_library_map(array(
|
||||||
'DifferentialRevisionIDCommitMessageField' => 'DifferentialCommitMessageField',
|
'DifferentialRevisionIDCommitMessageField' => 'DifferentialCommitMessageField',
|
||||||
'DifferentialRevisionInlineTransaction' => 'PhabricatorModularTransactionType',
|
'DifferentialRevisionInlineTransaction' => 'PhabricatorModularTransactionType',
|
||||||
'DifferentialRevisionInlinesController' => 'DifferentialController',
|
'DifferentialRevisionInlinesController' => 'DifferentialController',
|
||||||
|
'DifferentialRevisionJIRAIssueURIsHeraldField' => 'DifferentialRevisionHeraldField',
|
||||||
'DifferentialRevisionListController' => 'DifferentialController',
|
'DifferentialRevisionListController' => 'DifferentialController',
|
||||||
'DifferentialRevisionListView' => 'AphrontView',
|
'DifferentialRevisionListView' => 'AphrontView',
|
||||||
'DifferentialRevisionMailReceiver' => 'PhabricatorObjectMailReceiver',
|
'DifferentialRevisionMailReceiver' => 'PhabricatorObjectMailReceiver',
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class DifferentialRevisionJIRAIssueURIsHeraldField
|
||||||
|
extends DifferentialRevisionHeraldField {
|
||||||
|
|
||||||
|
const FIELDCONST = 'differential.revision.jira.uris';
|
||||||
|
|
||||||
|
public function getHeraldFieldName() {
|
||||||
|
return pht('JIRA Issue URIs');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function supportsObject($object) {
|
||||||
|
$provider = PhabricatorJIRAAuthProvider::getJIRAProvider();
|
||||||
|
if (!$provider) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::supportsObject($object);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getHeraldFieldValue($object) {
|
||||||
|
$adapter = $this->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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue