diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -3943,7 +3943,7 @@ 'FileInfoConduitAPIMethod' => 'FileConduitAPIMethod', 'FileMailReceiver' => 'PhabricatorObjectMailReceiver', 'FileQueryChunksConduitAPIMethod' => 'FileConduitAPIMethod', - 'FileReplyHandler' => 'PhabricatorMailReplyHandler', + 'FileReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler', 'FileUploadChunkConduitAPIMethod' => 'FileConduitAPIMethod', 'FileUploadConduitAPIMethod' => 'FileConduitAPIMethod', 'FileUploadHashConduitAPIMethod' => 'FileConduitAPIMethod', @@ -3990,7 +3990,7 @@ 'FundInitiativePHIDType' => 'PhabricatorPHIDType', 'FundInitiativeQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 'FundInitiativeRemarkupRule' => 'PhabricatorObjectRemarkupRule', - 'FundInitiativeReplyHandler' => 'PhabricatorMailReplyHandler', + 'FundInitiativeReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler', 'FundInitiativeSearchEngine' => 'PhabricatorApplicationSearchEngine', 'FundInitiativeTransaction' => 'PhabricatorApplicationTransaction', 'FundInitiativeTransactionQuery' => 'PhabricatorApplicationTransactionQuery', @@ -4217,7 +4217,7 @@ 'LegalpadDocumentSignatureViewController' => 'LegalpadController', 'LegalpadMockMailReceiver' => 'PhabricatorObjectMailReceiver', 'LegalpadObjectNeedsSignatureEdgeType' => 'PhabricatorEdgeType', - 'LegalpadReplyHandler' => 'PhabricatorMailReplyHandler', + 'LegalpadReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler', 'LegalpadSchemaSpec' => 'PhabricatorConfigSchemaSpec', 'LegalpadSignatureNeededByObjectEdgeType' => 'PhabricatorEdgeType', 'LegalpadTransaction' => 'PhabricatorApplicationTransaction', @@ -4613,7 +4613,7 @@ 'PhabricatorAuditManagementDeleteWorkflow' => 'PhabricatorAuditManagementWorkflow', 'PhabricatorAuditManagementWorkflow' => 'PhabricatorManagementWorkflow', 'PhabricatorAuditPreviewController' => 'PhabricatorAuditController', - 'PhabricatorAuditReplyHandler' => 'PhabricatorMailReplyHandler', + 'PhabricatorAuditReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler', 'PhabricatorAuditTransaction' => 'PhabricatorApplicationTransaction', 'PhabricatorAuditTransactionComment' => 'PhabricatorApplicationTransactionComment', 'PhabricatorAuditTransactionQuery' => 'PhabricatorApplicationTransactionQuery', @@ -5278,7 +5278,7 @@ 'PhabricatorMacroMemeController' => 'PhabricatorMacroController', 'PhabricatorMacroMemeDialogController' => 'PhabricatorMacroController', 'PhabricatorMacroQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'PhabricatorMacroReplyHandler' => 'PhabricatorMailReplyHandler', + 'PhabricatorMacroReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler', 'PhabricatorMacroSearchEngine' => 'PhabricatorApplicationSearchEngine', 'PhabricatorMacroTransaction' => 'PhabricatorApplicationTransaction', 'PhabricatorMacroTransactionComment' => 'PhabricatorApplicationTransactionComment', @@ -6193,7 +6193,7 @@ 'PholioMockThumbGridView' => 'AphrontView', 'PholioMockViewController' => 'PholioController', 'PholioRemarkupRule' => 'PhabricatorObjectRemarkupRule', - 'PholioReplyHandler' => 'PhabricatorMailReplyHandler', + 'PholioReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler', 'PholioSchemaSpec' => 'PhabricatorConfigSchemaSpec', 'PholioSearchIndexer' => 'PhabricatorSearchDocumentIndexer', 'PholioTransaction' => 'PhabricatorApplicationTransaction', @@ -6229,7 +6229,7 @@ 'PhortuneCartListController' => 'PhortuneController', 'PhortuneCartPHIDType' => 'PhabricatorPHIDType', 'PhortuneCartQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'PhortuneCartReplyHandler' => 'PhabricatorMailReplyHandler', + 'PhortuneCartReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler', 'PhortuneCartSearchEngine' => 'PhabricatorApplicationSearchEngine', 'PhortuneCartTransaction' => 'PhabricatorApplicationTransaction', 'PhortuneCartTransactionQuery' => 'PhabricatorApplicationTransactionQuery', @@ -6425,7 +6425,7 @@ 'PhrictionMoveController' => 'PhrictionController', 'PhrictionNewController' => 'PhrictionController', 'PhrictionRemarkupRule' => 'PhutilRemarkupRule', - 'PhrictionReplyHandler' => 'PhabricatorMailReplyHandler', + 'PhrictionReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler', 'PhrictionSchemaSpec' => 'PhabricatorConfigSchemaSpec', 'PhrictionSearchEngine' => 'PhabricatorApplicationSearchEngine', 'PhrictionSearchIndexer' => 'PhabricatorSearchDocumentIndexer', @@ -6481,7 +6481,7 @@ 'PonderQuestionMailReceiver' => 'PhabricatorObjectMailReceiver', 'PonderQuestionPHIDType' => 'PhabricatorPHIDType', 'PonderQuestionQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'PonderQuestionReplyHandler' => 'PhabricatorMailReplyHandler', + 'PonderQuestionReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler', 'PonderQuestionSearchEngine' => 'PhabricatorApplicationSearchEngine', 'PonderQuestionStatus' => 'PonderConstants', 'PonderQuestionStatusController' => 'PonderController', @@ -6594,7 +6594,7 @@ 'ReleephRequestMailReceiver' => 'PhabricatorObjectMailReceiver', 'ReleephRequestPHIDType' => 'PhabricatorPHIDType', 'ReleephRequestQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'ReleephRequestReplyHandler' => 'PhabricatorMailReplyHandler', + 'ReleephRequestReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler', 'ReleephRequestSearchEngine' => 'PhabricatorApplicationSearchEngine', 'ReleephRequestTransaction' => 'PhabricatorApplicationTransaction', 'ReleephRequestTransactionComment' => 'PhabricatorApplicationTransactionComment', diff --git a/src/applications/audit/mail/PhabricatorAuditReplyHandler.php b/src/applications/audit/mail/PhabricatorAuditReplyHandler.php --- a/src/applications/audit/mail/PhabricatorAuditReplyHandler.php +++ b/src/applications/audit/mail/PhabricatorAuditReplyHandler.php @@ -1,6 +1,7 @@ getDefaultPrivateReplyHandlerEmailAddress($handle, 'C'); - } - - public function getPublicReplyHandlerEmailAddress() { - return $this->getDefaultPublicReplyHandlerEmailAddress('C'); - } - - 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); + public function getObjectPrefix() { + // TODO: This conflicts with Countdown and will probably need to be + // changed eventually. + return 'C'; } } diff --git a/src/applications/files/mail/FileReplyHandler.php b/src/applications/files/mail/FileReplyHandler.php --- a/src/applications/files/mail/FileReplyHandler.php +++ b/src/applications/files/mail/FileReplyHandler.php @@ -1,6 +1,7 @@ getDefaultPrivateReplyHandlerEmailAddress($handle, 'F'); + public function getObjectPrefix() { + return 'F'; } - public function getPublicReplyHandlerEmailAddress() { - return $this->getDefaultPublicReplyHandlerEmailAddress('F'); - } - - protected function receiveEmail(PhabricatorMetaMTAReceivedMail $mail) { - $actor = $this->getActor(); - $file = $this->getMailReceiver(); - - $body_data = $mail->parseBody(); - $body = $body_data['body']; - $body = $this->enhanceBodyWithAttachments($body, $mail->getAttachments()); - - $content_source = PhabricatorContentSource::newForSource( - PhabricatorContentSource::SOURCE_EMAIL, - array( - 'id' => $mail->getID(), - )); + protected function processMailCommands(array $commands) { + $actor = $this->getActor(); $xactions = array(); - $commands = $body_data['commands']; foreach ($commands as $command) { switch (head($command)) { case 'unsubscribe': @@ -44,19 +28,7 @@ } } - $xactions[] = id(new PhabricatorFileTransaction()) - ->setTransactionType(PhabricatorTransactions::TYPE_COMMENT) - ->attachComment( - id(new PhabricatorFileTransactionComment()) - ->setContent($body)); - - $editor = id(new PhabricatorFileEditor()) - ->setActor($actor) - ->setContentSource($content_source) - ->setContinueOnNoEffect(true) - ->setIsPreview(false); - - $editor->applyTransactions($file, $xactions); + return $xactions; } } diff --git a/src/applications/fund/mail/FundInitiativeReplyHandler.php b/src/applications/fund/mail/FundInitiativeReplyHandler.php --- a/src/applications/fund/mail/FundInitiativeReplyHandler.php +++ b/src/applications/fund/mail/FundInitiativeReplyHandler.php @@ -1,6 +1,7 @@ getDefaultPrivateReplyHandlerEmailAddress($handle, 'I'); - } - - public function getPublicReplyHandlerEmailAddress() { - return $this->getDefaultPublicReplyHandlerEmailAddress('I'); - } - - protected function receiveEmail(PhabricatorMetaMTAReceivedMail $mail) { - // TODO: Implement. - return null; + public function getObjectPrefix() { + return 'I'; } } diff --git a/src/applications/legalpad/mail/LegalpadReplyHandler.php b/src/applications/legalpad/mail/LegalpadReplyHandler.php --- a/src/applications/legalpad/mail/LegalpadReplyHandler.php +++ b/src/applications/legalpad/mail/LegalpadReplyHandler.php @@ -1,6 +1,7 @@ getDefaultPrivateReplyHandlerEmailAddress($handle, 'L'); - } - - public function getPublicReplyHandlerEmailAddress() { - return $this->getDefaultPublicReplyHandlerEmailAddress('L'); - } - - protected function receiveEmail(PhabricatorMetaMTAReceivedMail $mail) { - $actor = $this->getActor(); - $document = $this->getMailReceiver(); - - $body_data = $mail->parseBody(); - $body = $body_data['body']; - $body = $this->enhanceBodyWithAttachments($body, $mail->getAttachments()); - - $content_source = PhabricatorContentSource::newForSource( - PhabricatorContentSource::SOURCE_EMAIL, - array( - 'id' => $mail->getID(), - )); - - $xactions = array(); - - $commands = $body_data['commands']; - foreach ($commands as $command) { - switch (head($command)) { - case 'unsubscribe': - $xaction = id(new LegalpadTransaction()) - ->setTransactionType(PhabricatorTransactions::TYPE_SUBSCRIBERS) - ->setNewValue(array('-' => array($actor->getPHID()))); - $xactions[] = $xaction; - break; - } - } - - $xactions[] = id(new LegalpadTransaction()) - ->setTransactionType(PhabricatorTransactions::TYPE_COMMENT) - ->attachComment( - id(new LegalpadTransactionComment()) - ->setDocumentID($document->getID()) - ->setLineNumber(0) - ->setLineLength(0) - ->setContent($body)); - - $editor = id(new LegalpadDocumentEditor()) - ->setActor($actor) - ->setContentSource($content_source) - ->setContinueOnNoEffect(true) - ->setIsPreview(false); - - $editor->applyTransactions($document, $xactions); + public function getObjectPrefix() { + return 'L'; } } diff --git a/src/applications/legalpad/storage/LegalpadTransactionComment.php b/src/applications/legalpad/storage/LegalpadTransactionComment.php --- a/src/applications/legalpad/storage/LegalpadTransactionComment.php +++ b/src/applications/legalpad/storage/LegalpadTransactionComment.php @@ -4,8 +4,8 @@ extends PhabricatorApplicationTransactionComment { protected $documentID; - protected $lineNumber; - protected $lineLength; + protected $lineNumber = 0; + protected $lineLength = 0; protected $fixedState; protected $hasReplies = 0; protected $replyToCommentPHID; diff --git a/src/applications/macro/mail/PhabricatorMacroReplyHandler.php b/src/applications/macro/mail/PhabricatorMacroReplyHandler.php --- a/src/applications/macro/mail/PhabricatorMacroReplyHandler.php +++ b/src/applications/macro/mail/PhabricatorMacroReplyHandler.php @@ -1,6 +1,7 @@ getDefaultPrivateReplyHandlerEmailAddress($handle, 'MCRO'); - } - - public function getPublicReplyHandlerEmailAddress() { - return $this->getDefaultPublicReplyHandlerEmailAddress('MCRO'); - } - - protected function receiveEmail(PhabricatorMetaMTAReceivedMail $mail) { - // TODO: Implement this. - return null; + public function getObjectPrefix() { + return 'MCRO'; } } diff --git a/src/applications/pholio/mail/PholioReplyHandler.php b/src/applications/pholio/mail/PholioReplyHandler.php --- a/src/applications/pholio/mail/PholioReplyHandler.php +++ b/src/applications/pholio/mail/PholioReplyHandler.php @@ -1,6 +1,7 @@ getDefaultPrivateReplyHandlerEmailAddress($handle, 'M'); - } - - public function getPublicReplyHandlerEmailAddress() { - return $this->getDefaultPublicReplyHandlerEmailAddress('M'); - } - - protected function receiveEmail(PhabricatorMetaMTAReceivedMail $mail) { - // TODO: Implement this. - return null; + public function getObjectPrefix() { + return 'M'; } } diff --git a/src/applications/phortune/mail/PhortuneCartReplyHandler.php b/src/applications/phortune/mail/PhortuneCartReplyHandler.php --- a/src/applications/phortune/mail/PhortuneCartReplyHandler.php +++ b/src/applications/phortune/mail/PhortuneCartReplyHandler.php @@ -1,6 +1,7 @@ getDefaultPrivateReplyHandlerEmailAddress($handle, 'CART'); - } - - public function getPublicReplyHandlerEmailAddress() { - return $this->getDefaultPublicReplyHandlerEmailAddress('CART'); - } - - protected function receiveEmail(PhabricatorMetaMTAReceivedMail $mail) { - // TODO: Implement. - return null; + public function getObjectPrefix() { + return 'CART'; } } diff --git a/src/applications/phriction/mail/PhrictionReplyHandler.php b/src/applications/phriction/mail/PhrictionReplyHandler.php --- a/src/applications/phriction/mail/PhrictionReplyHandler.php +++ b/src/applications/phriction/mail/PhrictionReplyHandler.php @@ -1,6 +1,7 @@ getDefaultPrivateReplyHandlerEmailAddress( - $handle, - PhrictionDocumentPHIDType::TYPECONST); - } - - public function getPublicReplyHandlerEmailAddress() { - return $this->getDefaultPublicReplyHandlerEmailAddress( - PhrictionDocumentPHIDType::TYPECONST); - } - - protected function receiveEmail(PhabricatorMetaMTAReceivedMail $mail) { - // TODO: Implement. - return null; + public function getObjectPrefix() { + return PhrictionDocumentPHIDType::TYPECONST; } } diff --git a/src/applications/ponder/mail/PonderQuestionReplyHandler.php b/src/applications/ponder/mail/PonderQuestionReplyHandler.php --- a/src/applications/ponder/mail/PonderQuestionReplyHandler.php +++ b/src/applications/ponder/mail/PonderQuestionReplyHandler.php @@ -1,6 +1,7 @@ getDefaultPrivateReplyHandlerEmailAddress($handle, 'Q'); + public function getObjectPrefix() { + return 'Q'; } - public function getPublicReplyHandlerEmailAddress() { - return $this->getDefaultPublicReplyHandlerEmailAddress('Q'); - } - - protected function receiveEmail(PhabricatorMetaMTAReceivedMail $mail) { - // ignore this entirely for now - } } diff --git a/src/applications/releeph/mail/ReleephRequestReplyHandler.php b/src/applications/releeph/mail/ReleephRequestReplyHandler.php --- a/src/applications/releeph/mail/ReleephRequestReplyHandler.php +++ b/src/applications/releeph/mail/ReleephRequestReplyHandler.php @@ -1,6 +1,7 @@ getDefaultPrivateReplyHandlerEmailAddress($handle, 'Y'); - } - - public function getPublicReplyHandlerEmailAddress() { - return $this->getDefaultPublicReplyHandlerEmailAddress('Y'); - } - - protected function receiveEmail(PhabricatorMetaMTAReceivedMail $mail) { - $rq = $this->getMailReceiver(); - $user = $this->getActor(); - - $content_source = PhabricatorContentSource::newForSource( - PhabricatorContentSource::SOURCE_EMAIL, - array( - 'id' => $mail->getID(), - )); - - $body = $mail->getCleanTextBody(); - - $xactions = array(); - $xactions[] = id(new ReleephRequestTransaction()) - ->setTransactionType(PhabricatorTransactions::TYPE_COMMENT) - ->attachComment($body); - - $editor = id(new ReleephRequestTransactionalEditor()) - ->setActor($user) - ->setContentSource($content_source) - ->setContinueOnNoEffect(true) - ->setParentMessageID($mail->getMessageID()); - - $editor->applyTransactions($rq, $xactions); + public function getObjectPrefix() { + return 'Y'; } }