Persist excluded recipients when saving mail
Summary:
Fixes T5185. The fundamental issue is that this `excludePHIDs` property was not saved, so the logic went like this:
- Generate `excludePHIDs` correctly.
- Pass `excludePHIDs` through the stack.
- Perform some other computations correctly.
- Queue the mail for the daemons, throwing it away. {icon bomb}
- Daemons process mail with empty `excludePHIDs` list.
Store it in the persistent properties array instead.
Also remove the "override self mail" thing, since it's only used by `bin/mail send-test` and suffers from the same issue. I think it's too useless to fix, since even if you get caught by it, `bin/mail` makes it clear why the message was dropped.
Test Plan:
Notable:
- `exclude` present in properties
- Exclusion reason under RECIPIENTS header
{P1229}
Reviewers: btrahan
Reviewed By: btrahan
Subscribers: epriestley
Maniphest Tasks: T5185
Differential Revision: https://secure.phabricator.com/D10234
This commit is contained in:
@@ -117,7 +117,6 @@ final class PhabricatorMailManagementSendTestWorkflow
|
||||
->addCCs($ccs)
|
||||
->setSubject($subject)
|
||||
->setBody($body)
|
||||
->setOverrideNoSelfMailPreference(true)
|
||||
->setIsHTML($is_html)
|
||||
->setIsBulk($is_bulk)
|
||||
->setMailTags($tags);
|
||||
|
||||
@@ -17,8 +17,6 @@ final class PhabricatorMetaMTAMail extends PhabricatorMetaMTADAO {
|
||||
protected $message;
|
||||
protected $relatedPHID;
|
||||
|
||||
private $excludePHIDs = array();
|
||||
private $overrideNoSelfMail = false;
|
||||
private $recipientExpansionMap;
|
||||
|
||||
public function __construct() {
|
||||
@@ -115,21 +113,13 @@ final class PhabricatorMetaMTAMail extends PhabricatorMetaMTADAO {
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setExcludeMailRecipientPHIDs($exclude) {
|
||||
$this->excludePHIDs = $exclude;
|
||||
public function setExcludeMailRecipientPHIDs(array $exclude) {
|
||||
$this->setParam('exclude', $exclude);
|
||||
return $this;
|
||||
}
|
||||
|
||||
private function getExcludeMailRecipientPHIDs() {
|
||||
return $this->excludePHIDs;
|
||||
}
|
||||
|
||||
public function getOverrideNoSelfMailPreference() {
|
||||
return $this->overrideNoSelfMail;
|
||||
}
|
||||
|
||||
public function setOverrideNoSelfMailPreference($override) {
|
||||
$this->overrideNoSelfMail = $override;
|
||||
return $this;
|
||||
return $this->getParam('exclude', array());
|
||||
}
|
||||
|
||||
public function getTranslation(array $objects) {
|
||||
@@ -828,7 +818,7 @@ final class PhabricatorMetaMTAMail extends PhabricatorMetaMTADAO {
|
||||
->withPHIDs(array($from_phid))
|
||||
->execute();
|
||||
$from_user = head($from_user);
|
||||
if ($from_user && !$this->getOverrideNoSelfMailPreference()) {
|
||||
if ($from_user) {
|
||||
$pref_key = PhabricatorUserPreferences::PREFERENCE_NO_SELF_MAIL;
|
||||
$exclude_self = $from_user
|
||||
->loadPreferences()
|
||||
|
||||
Reference in New Issue
Block a user