mirror of
https://we.phorge.it/source/phorge.git
synced 2025-02-12 14:58:33 +01:00
Summary: Depends on D19399. Ref T13130. This adds basic support for writing Herald rules against Herald rules. See T13130 for a lot more detail. This needs a bit more work to be useful: for example, there's no way to specify the rule type or subject, so you can't say "notify me when global rules are edited" or "notify me when Maniphest rules are edited". I'll add some fields for that in followup changes to actually solve the original use case. Test Plan: - Wrote Herald rules against Herald rules. - Ran them by editing rules and in the test console. - Verified they sent some mail with `bin/mail list-outbound`. Reviewers: amckinley Reviewed By: amckinley Maniphest Tasks: T13130 Differential Revision: https://secure.phabricator.com/D19400
74 lines
1.5 KiB
PHP
74 lines
1.5 KiB
PHP
<?php
|
|
|
|
final class HeraldRuleAdapter extends HeraldAdapter {
|
|
|
|
private $rule;
|
|
|
|
protected function newObject() {
|
|
return new HeraldRule();
|
|
}
|
|
|
|
public function getAdapterApplicationClass() {
|
|
return 'PhabricatorHeraldApplication';
|
|
}
|
|
|
|
public function getAdapterContentDescription() {
|
|
return pht('React to Herald rules being created or updated.');
|
|
}
|
|
|
|
public function isTestAdapterForObject($object) {
|
|
return ($object instanceof HeraldRule);
|
|
}
|
|
|
|
public function getAdapterTestDescription() {
|
|
return pht(
|
|
'Test rules which run when another Herald rule is created or '.
|
|
'updated.');
|
|
}
|
|
|
|
protected function initializeNewAdapter() {
|
|
$this->rule = $this->newObject();
|
|
}
|
|
|
|
public function supportsApplicationEmail() {
|
|
return true;
|
|
}
|
|
|
|
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 setRule(HeraldRule $rule) {
|
|
$this->rule = $rule;
|
|
return $this;
|
|
}
|
|
|
|
public function getRule() {
|
|
return $this->rule;
|
|
}
|
|
|
|
public function setObject($object) {
|
|
$this->rule = $object;
|
|
return $this;
|
|
}
|
|
|
|
public function getObject() {
|
|
return $this->rule;
|
|
}
|
|
|
|
public function getAdapterContentName() {
|
|
return pht('Herald Rules');
|
|
}
|
|
|
|
public function getHeraldName() {
|
|
return $this->getRule()->getMonogram();
|
|
}
|
|
|
|
}
|