mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-22 21:40:55 +01:00
Index and show Owners packages affected by Herald rules
Summary: Depends on D20412. See PHI1147. - Index the targets of "Add Reviewer", "Add Blocking Reviewer", "Add Auditor", "Add Subscriber", and "Remove Subscriber" Herald rules. My major goal is to get Owners packages. This will also hit projects/users, but we just don't read those edges (for now, at least). - Add a "Related Herald Rules" panel to Owners Package pages. - Add a migration to reindex Herald rules for the recent build plan stuff and this, now that such a migration is easy to write. Test Plan: Ran migration, verified all rules reindexed. {F6372695} Reviewers: amckinley Reviewed By: amckinley Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam Differential Revision: https://secure.phabricator.com/D20413
This commit is contained in:
parent
4eab3c4c8d
commit
4b8a67ccde
7 changed files with 77 additions and 0 deletions
3
resources/sql/autopatches/20190412.herald.01.rebuild.php
Normal file
3
resources/sql/autopatches/20190412.herald.01.rebuild.php
Normal file
|
@ -0,0 +1,3 @@
|
|||
<?php
|
||||
|
||||
PhabricatorRebuildIndexesWorker::rebuildObjectsWithQuery('HeraldRuleQuery');
|
|
@ -29,4 +29,8 @@ final class DifferentialReviewersAddBlockingReviewersHeraldAction
|
|||
return pht('Add blocking reviewers: %s.', $this->renderHandleList($value));
|
||||
}
|
||||
|
||||
public function getPHIDsAffectedByAction(HeraldActionRecord $record) {
|
||||
return $record->getTarget();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -29,4 +29,8 @@ final class DifferentialReviewersAddReviewersHeraldAction
|
|||
return pht('Add reviewers: %s.', $this->renderHandleList($value));
|
||||
}
|
||||
|
||||
public function getPHIDsAffectedByAction(HeraldActionRecord $record) {
|
||||
return $record->getTarget();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -30,4 +30,8 @@ final class DiffusionAuditorsAddAuditorsHeraldAction
|
|||
return pht('Add auditors: %s.', $this->renderHandleList($value));
|
||||
}
|
||||
|
||||
public function getPHIDsAffectedByAction(HeraldActionRecord $record) {
|
||||
return $record->getTarget();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -144,6 +144,8 @@ final class PhabricatorOwnersDetailController
|
|||
$crumbs->addTextCrumb($package->getMonogram());
|
||||
$crumbs->setBorder(true);
|
||||
|
||||
$rules_view = $this->newRulesView($package);
|
||||
|
||||
$timeline = $this->buildTransactionTimeline(
|
||||
$package,
|
||||
new PhabricatorOwnersPackageTransactionQuery());
|
||||
|
@ -154,6 +156,7 @@ final class PhabricatorOwnersDetailController
|
|||
->setCurtain($curtain)
|
||||
->setMainColumn(array(
|
||||
$this->renderPathsTable($paths, $repositories),
|
||||
$rules_view,
|
||||
$commit_panels,
|
||||
$timeline,
|
||||
))
|
||||
|
@ -345,4 +348,55 @@ final class PhabricatorOwnersDetailController
|
|||
return $box;
|
||||
}
|
||||
|
||||
private function newRulesView(PhabricatorOwnersPackage $package) {
|
||||
$viewer = $this->getViewer();
|
||||
|
||||
$limit = 10;
|
||||
$rules = id(new HeraldRuleQuery())
|
||||
->setViewer($viewer)
|
||||
->withDisabled(false)
|
||||
->withAffectedObjectPHIDs(array($package->getPHID()))
|
||||
->needValidateAuthors(true)
|
||||
->setLimit($limit + 1)
|
||||
->execute();
|
||||
|
||||
$more_results = (count($rules) > $limit);
|
||||
$rules = array_slice($rules, 0, $limit);
|
||||
|
||||
$list = id(new HeraldRuleListView())
|
||||
->setViewer($viewer)
|
||||
->setRules($rules)
|
||||
->newObjectList();
|
||||
|
||||
$list->setNoDataString(
|
||||
pht(
|
||||
'No active Herald rules add this package as an auditor, reviewer, '.
|
||||
'or subscriber.'));
|
||||
|
||||
$more_href = new PhutilURI(
|
||||
'/herald/',
|
||||
array('affectedPHID' => $package->getPHID()));
|
||||
|
||||
if ($more_results) {
|
||||
$list->newTailButton()
|
||||
->setHref($more_href);
|
||||
}
|
||||
|
||||
$more_link = id(new PHUIButtonView())
|
||||
->setTag('a')
|
||||
->setIcon('fa-list-ul')
|
||||
->setText(pht('View All Rules'))
|
||||
->setHref($more_href);
|
||||
|
||||
$header = id(new PHUIHeaderView())
|
||||
->setHeader(pht('Affected By Herald Rules'))
|
||||
->setHeaderIcon(id(new PhabricatorHeraldApplication())->getIcon())
|
||||
->addActionLink($more_link);
|
||||
|
||||
return id(new PHUIObjectBoxView())
|
||||
->setHeader($header)
|
||||
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
|
||||
->appendChild($list);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -29,4 +29,8 @@ final class PhabricatorSubscriptionsAddSubscribersHeraldAction
|
|||
return pht('Add subscribers: %s.', $this->renderHandleList($value));
|
||||
}
|
||||
|
||||
public function getPHIDsAffectedByAction(HeraldActionRecord $record) {
|
||||
return $record->getTarget();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -29,4 +29,8 @@ final class PhabricatorSubscriptionsRemoveSubscribersHeraldAction
|
|||
return pht('Remove subscribers: %s.', $this->renderHandleList($value));
|
||||
}
|
||||
|
||||
public function getPHIDsAffectedByAction(HeraldActionRecord $record) {
|
||||
return $record->getTarget();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue