Summary: Ref T4896. This converts the last "CommentEditor" to a transaction editor and removes a large part of the old code. Test Plan: - Added comments. - Accepted / added auditors. - Added inline comments. Reviewers: joshuaspence, btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T4896 Differential Revision: https://secure.phabricator.com/D10128
64 lines
1.8 KiB
PHP
64 lines
1.8 KiB
PHP
<?php
|
|
|
|
final class PhabricatorAuditReplyHandler extends PhabricatorMailReplyHandler {
|
|
|
|
public function validateMailReceiver($mail_receiver) {
|
|
if (!($mail_receiver instanceof PhabricatorRepositoryCommit)) {
|
|
throw new Exception('Mail receiver is not a commit!');
|
|
}
|
|
}
|
|
|
|
public function getPrivateReplyHandlerEmailAddress(
|
|
PhabricatorObjectHandle $handle) {
|
|
return $this->getDefaultPrivateReplyHandlerEmailAddress($handle, 'C');
|
|
}
|
|
|
|
public function getPublicReplyHandlerEmailAddress() {
|
|
return $this->getDefaultPublicReplyHandlerEmailAddress('C');
|
|
}
|
|
|
|
public function getReplyHandlerDomain() {
|
|
return PhabricatorEnv::getEnvConfig(
|
|
'metamta.diffusion.reply-handler-domain');
|
|
}
|
|
|
|
public function getReplyHandlerInstructions() {
|
|
if ($this->supportsReplies()) {
|
|
return pht('Reply to comment.');
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
protected function receiveEmail(PhabricatorMetaMTAReceivedMail $mail) {
|
|
$commit = $this->getMailReceiver();
|
|
$actor = $this->getActor();
|
|
$message = $mail->getCleanTextBody();
|
|
|
|
$content_source = PhabricatorContentSource::newForSource(
|
|
PhabricatorContentSource::SOURCE_EMAIL,
|
|
array(
|
|
'id' => $mail->getID(),
|
|
));
|
|
|
|
// TODO: Support !raise, !accept, etc.
|
|
|
|
$xactions = array();
|
|
|
|
$xactions[] = id(new PhabricatorAuditTransaction())
|
|
->setTransactionType(PhabricatorTransactions::TYPE_COMMENT)
|
|
->attachComment(
|
|
id(new PhabricatorAuditTransactionComment())
|
|
->setCommitPHID($commit->getPHID())
|
|
->setContent($message));
|
|
|
|
$editor = id(new PhabricatorAuditEditor())
|
|
->setActor($actor)
|
|
->setContentSource($content_source)
|
|
->setExcludeMailRecipientPHIDs($this->getExcludeMailRecipientPHIDs())
|
|
->setContinueOnMissingFields(true)
|
|
->applyTransactions($commit, $xactions);
|
|
}
|
|
|
|
}
|