1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-01-19 03:01:11 +01:00

Use TransactionEditor in Differential mail handling

Summary: Ref T2222. Moves this instance of CommentEditor to TransactionEditor.

Test Plan: Used `bin/mail receive-test` to test receiving comment mail and action mail.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T2222

Differential Revision: https://secure.phabricator.com/D8427
This commit is contained in:
epriestley 2014-03-07 08:10:18 -08:00
parent 4dfd4944c4
commit 49eaa9f8fe
2 changed files with 42 additions and 21 deletions

View file

@ -129,28 +129,48 @@ class DifferentialReplyHandler extends PhabricatorMailReplyHandler {
$body = $this->enhanceBodyWithAttachments($body, $attachments); $body = $this->enhanceBodyWithAttachments($body, $attachments);
try { $xactions = array();
$editor = new DifferentialCommentEditor(
$this->getMailReceiver(),
$command);
$editor->setActor($actor);
$editor->setExcludeMailRecipientPHIDs(
$this->getExcludeMailRecipientPHIDs());
// NOTE: We have to be careful about this because Facebook's if ($command && ($command != DifferentialAction::ACTION_COMMENT)) {
// implementation jumps straight into handleAction() and will not have $xactions[] = id(new DifferentialTransaction())
// a PhabricatorMetaMTAReceivedMail object. ->setTransactionType(DifferentialTransaction::TYPE_ACTION)
if ($this->receivedMail) { ->setNewValue($command);
$content_source = PhabricatorContentSource::newForSource( }
PhabricatorContentSource::SOURCE_EMAIL,
array( if (strlen($body)) {
'id' => $this->receivedMail->getID(), $xactions[] = id(new DifferentialTransaction())
)); ->setTransactionType(PhabricatorTransactions::TYPE_COMMENT)
$editor->setContentSource($content_source); ->attachComment(
$editor->setParentMessageID($this->receivedMail->getMessageID()); id(new DifferentialTransactionComment())
} ->setContent($body));
$editor->setMessage($body); }
$editor->save();
$editor = id(new DifferentialTransactionEditor())
->setActor($actor)
->setExcludeMailRecipientPHIDs($this->getExcludeMailRecipientPHIDs())
->setContinueOnMissingFields(true)
->setContinueOnNoEffect(true);
// NOTE: We have to be careful about this because Facebook's
// implementation jumps straight into handleAction() and will not have
// a PhabricatorMetaMTAReceivedMail object.
if ($this->receivedMail) {
$content_source = PhabricatorContentSource::newForSource(
PhabricatorContentSource::SOURCE_EMAIL,
array(
'id' => $this->receivedMail->getID(),
));
$editor->setContentSource($content_source);
$editor->setParentMessageID($this->receivedMail->getMessageID());
} else {
$content_source = PhabricatorContentSource::newForSource(
PhabricatorContentSource::SOURCE_LEGACY,
array());
$editor->setContentSource($content_source);
}
try {
$editor->applyTransactions($this->getMailReceiver(), $xactions);
} catch (Exception $ex) { } catch (Exception $ex) {
if ($this->receivedMail) { if ($this->receivedMail) {
$error_body = $this->receivedMail->getRawTextBody(); $error_body = $this->receivedMail->getRawTextBody();

View file

@ -18,6 +18,7 @@ final class DifferentialRevisionMailReceiver
$results = id(new DifferentialRevisionQuery()) $results = id(new DifferentialRevisionQuery())
->setViewer($viewer) ->setViewer($viewer)
->withIDs(array($id)) ->withIDs(array($id))
->needReviewerStatus(true)
->execute(); ->execute();
return head($results); return head($results);