mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-19 13:22:42 +01:00
Add an X-Phabricator-Projects header to outbound mail
Summary: Fixes T4973. For `PhabricatorProjectInterface` objects, add a header to let clients do mail filtering. Test Plan: Saw `X-Phabricator-Projects: <#goat_farm>` in outbound mail. Reviewers: btrahan Reviewed By: btrahan Subscribers: rush898, epriestley Maniphest Tasks: T4973 Differential Revision: https://secure.phabricator.com/D10256
This commit is contained in:
parent
a37dc68b0a
commit
df28d751f5
1 changed files with 45 additions and 3 deletions
|
@ -1886,6 +1886,10 @@ abstract class PhabricatorApplicationTransactionEditor
|
||||||
$template->addHeader('X-Herald-Rules', $herald_header);
|
$template->addHeader('X-Herald-Rules', $herald_header);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($object instanceof PhabricatorProjectInterface) {
|
||||||
|
$this->addMailProjectMetadata($object, $template);
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->getParentMessageID()) {
|
if ($this->getParentMessageID()) {
|
||||||
$template->setParentMessageID($this->getParentMessageID());
|
$template->setParentMessageID($this->getParentMessageID());
|
||||||
}
|
}
|
||||||
|
@ -1905,6 +1909,44 @@ abstract class PhabricatorApplicationTransactionEditor
|
||||||
return $template;
|
return $template;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function addMailProjectMetadata(
|
||||||
|
PhabricatorLiskDAO $object,
|
||||||
|
PhabricatorMetaMTAMail $template) {
|
||||||
|
|
||||||
|
$project_phids = PhabricatorEdgeQuery::loadDestinationPHIDs(
|
||||||
|
$object->getPHID(),
|
||||||
|
PhabricatorProjectObjectHasProjectEdgeType::EDGECONST);
|
||||||
|
|
||||||
|
if (!$project_phids) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: This viewer isn't quite right. It would be slightly better to use
|
||||||
|
// the mail recipient, but that's not very easy given the way rendering
|
||||||
|
// works today.
|
||||||
|
|
||||||
|
$handles = id(new PhabricatorHandleQuery())
|
||||||
|
->setViewer($this->requireActor())
|
||||||
|
->withPHIDs($project_phids)
|
||||||
|
->execute();
|
||||||
|
|
||||||
|
$project_tags = array();
|
||||||
|
foreach ($handles as $handle) {
|
||||||
|
if (!$handle->isComplete()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$project_tags[] = '<'.$handle->getObjectName().'>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$project_tags) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$project_tags = implode(', ', $project_tags);
|
||||||
|
$template->addHeader('X-Phabricator-Projects', $project_tags);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected function getMailThreadID(PhabricatorLiskDAO $object) {
|
protected function getMailThreadID(PhabricatorLiskDAO $object) {
|
||||||
return $object->getPHID();
|
return $object->getPHID();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue