mirror of
https://we.phorge.it/source/phorge.git
synced 2025-03-28 04:00:17 +01:00
Summary: Ref T5952. This adds support for a "default author" and deploys it on Maniphest. Test Plan: used augmented (by this diff) bin/mail receive-test to test creation via an application email with a default author configured and no author specified. a task was created with the author as the default author i configured. Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin, epriestley Maniphest Tasks: T5952 Differential Revision: https://secure.phabricator.com/D11446
49 lines
1.5 KiB
PHP
49 lines
1.5 KiB
PHP
<?php
|
|
|
|
final class ManiphestCreateMailReceiver extends PhabricatorMailReceiver {
|
|
|
|
public function isEnabled() {
|
|
$app_class = 'PhabricatorManiphestApplication';
|
|
return PhabricatorApplication::isClassInstalled($app_class);
|
|
}
|
|
|
|
public function canAcceptMail(PhabricatorMetaMTAReceivedMail $mail) {
|
|
$maniphest_app = new PhabricatorManiphestApplication();
|
|
$application_emails = id(new PhabricatorMetaMTAApplicationEmailQuery())
|
|
->setViewer($this->getViewer())
|
|
->withApplicationPHIDs(array($maniphest_app->getPHID()))
|
|
->execute();
|
|
|
|
foreach ($mail->getToAddresses() as $to_address) {
|
|
foreach ($application_emails as $application_email) {
|
|
$create_address = $application_email->getAddress();
|
|
if ($this->matchAddresses($create_address, $to_address)) {
|
|
$this->setApplicationEmail($application_email);
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
protected function processReceivedMail(
|
|
PhabricatorMetaMTAReceivedMail $mail,
|
|
PhabricatorUser $sender) {
|
|
|
|
$task = ManiphestTask::initializeNewTask($sender);
|
|
$task->setOriginalEmailSource($mail->getHeader('From'));
|
|
|
|
$handler = PhabricatorEnv::newObjectFromConfig(
|
|
'metamta.maniphest.reply-handler');
|
|
$handler->setMailReceiver($task);
|
|
|
|
$handler->setActor($sender);
|
|
$handler->setExcludeMailRecipientPHIDs(
|
|
$mail->loadExcludeMailRecipientPHIDs());
|
|
$handler->processEmail($mail);
|
|
|
|
$mail->setRelatedPHID($task->getPHID());
|
|
}
|
|
|
|
}
|