mirror of
https://we.phorge.it/source/phorge.git
synced 2025-01-11 07:11:04 +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',
|
||||
'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',
|
||||
|
|
|
@ -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…
Reference in a new issue