mirror of
https://we.phorge.it/source/phorge.git
synced 2025-02-11 06:18:33 +01:00
Summary: Fixes T9719. Currently, the Herald "Test Console" has a big `instanceof` thing, so new adapters (like a Calendar adapter, or third-party adapters) aren't available automatically. Instead, do a standard modular thing: load the available adapters, ask which ones can test the object the user selected, then let the user pick which one they want to move forward with. Additionally, it isn't very clear that you can't test "commit hook" rules because they rely on push state which we don't really have a good way to simulate. When the user picks a commit, we now show them the "Hook" events, but the options are disabled and explain why they can not be selected. Test Plan: - Ran test rules for revisions, commits, mocks, tasks, wiki documents, questions, and outbound mail. - Plugged in a commit, got a more-helpful choice screen explaining why you do a test run of hook rules. Reviewers: chad Reviewed By: chad Maniphest Tasks: T9719 Differential Revision: https://secure.phabricator.com/D16360
73 lines
1.5 KiB
PHP
73 lines
1.5 KiB
PHP
<?php
|
|
|
|
final class PhabricatorMailOutboundMailHeraldAdapter
|
|
extends HeraldAdapter {
|
|
|
|
private $mail;
|
|
|
|
public function getAdapterApplicationClass() {
|
|
return 'PhabricatorMetaMTAApplication';
|
|
}
|
|
|
|
public function getAdapterContentDescription() {
|
|
return pht('Route outbound email.');
|
|
}
|
|
|
|
protected function initializeNewAdapter() {
|
|
$this->mail = $this->newObject();
|
|
}
|
|
|
|
protected function newObject() {
|
|
return new PhabricatorMetaMTAMail();
|
|
}
|
|
|
|
public function isTestAdapterForObject($object) {
|
|
return ($object instanceof PhabricatorMetaMTAMail);
|
|
}
|
|
|
|
public function getAdapterTestDescription() {
|
|
return pht(
|
|
'Test rules which run when outbound mail is being prepared for '.
|
|
'delivery.');
|
|
}
|
|
|
|
|
|
public function getObject() {
|
|
return $this->mail;
|
|
}
|
|
|
|
public function setObject(PhabricatorMetaMTAMail $mail) {
|
|
$this->mail = $mail;
|
|
return $this;
|
|
}
|
|
|
|
public function getAdapterContentName() {
|
|
return pht('Outbound Mail');
|
|
}
|
|
|
|
public function isSingleEventAdapter() {
|
|
return true;
|
|
}
|
|
|
|
public function getRepetitionOptions() {
|
|
return array(
|
|
HeraldRepetitionPolicyConfig::FIRST,
|
|
);
|
|
}
|
|
|
|
public function supportsRuleType($rule_type) {
|
|
switch ($rule_type) {
|
|
case HeraldRuleTypeConfig::RULE_TYPE_GLOBAL:
|
|
case HeraldRuleTypeConfig::RULE_TYPE_PERSONAL:
|
|
return true;
|
|
case HeraldRuleTypeConfig::RULE_TYPE_OBJECT:
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public function getHeraldName() {
|
|
return pht('Mail %d', $this->getObject()->getID());
|
|
}
|
|
|
|
}
|