1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-02-12 14:58:33 +01:00
phorge-phorge/src/applications/herald/adapter/HeraldRuleAdapter.php
epriestley cac41d1e48 Support Herald rules for Herald rules
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
2018-04-25 06:47:19 -07:00

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();
}
}