Differential D13131 Diff 31772 src/applications/repository/worker/PhabricatorRepositoryPushMailWorker.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/repository/worker/PhabricatorRepositoryPushMailWorker.php
| Show All 21 Lines | $event = id(new PhabricatorRepositoryPushEventQuery()) | ||||
| ->executeOne(); | ->executeOne(); | ||||
| $repository = $event->getRepository(); | $repository = $event->getRepository(); | ||||
| if (!$repository->shouldPublish()) { | if (!$repository->shouldPublish()) { | ||||
| // If the repository is still importing, don't send email. | // If the repository is still importing, don't send email. | ||||
| return; | return; | ||||
| } | } | ||||
| $targets = id(new PhabricatorRepositoryPushReplyHandler()) | |||||
| ->setMailReceiver($repository) | |||||
| ->getMailTargets($email_phids, array()); | |||||
| foreach ($targets as $target) { | |||||
| $this->sendMail($target, $repository, $event); | |||||
| } | |||||
| } | |||||
| private function sendMail( | |||||
| PhabricatorMailTarget $target, | |||||
| PhabricatorRepository $repository, | |||||
| PhabricatorRepositoryPushEvent $event) { | |||||
| $task_data = $this->getTaskData(); | |||||
| $viewer = $target->getViewer(); | |||||
| // TODO: Swap locale to viewer locale. | |||||
| $logs = $event->getLogs(); | $logs = $event->getLogs(); | ||||
| list($ref_lines, $ref_list) = $this->renderRefs($logs); | list($ref_lines, $ref_list) = $this->renderRefs($logs); | ||||
| list($commit_lines, $subject_line) = $this->renderCommits( | list($commit_lines, $subject_line) = $this->renderCommits( | ||||
| $repository, | $repository, | ||||
| $logs, | $logs, | ||||
| idx($task_data, 'info', array())); | idx($task_data, 'info', array())); | ||||
| ▲ Show 20 Lines • Show All 60 Lines • ▼ Show 20 Lines | $mail = id(new PhabricatorMetaMTAMail()) | ||||
| ->setVarySubjectPrefix(pht('[Push]')) | ->setVarySubjectPrefix(pht('[Push]')) | ||||
| ->setSubject($subject) | ->setSubject($subject) | ||||
| ->setFrom($event->getPusherPHID()) | ->setFrom($event->getPusherPHID()) | ||||
| ->setBody($body->render()) | ->setBody($body->render()) | ||||
| ->setThreadID($event->getPHID(), $is_new = true) | ->setThreadID($event->getPHID(), $is_new = true) | ||||
| ->addHeader('Thread-Topic', $subject) | ->addHeader('Thread-Topic', $subject) | ||||
| ->setIsBulk(true); | ->setIsBulk(true); | ||||
| $to_handles = id(new PhabricatorHandleQuery()) | $target->sendMail($mail); | ||||
| ->setViewer($viewer) | |||||
| ->withPHIDs($email_phids) | |||||
| ->execute(); | |||||
| $reply_handler = new PhabricatorRepositoryPushReplyHandler(); | |||||
| $mails = $reply_handler->multiplexMail( | |||||
| $mail, | |||||
| $to_handles, | |||||
| array()); | |||||
| foreach ($mails as $mail) { | |||||
| $mail->saveAndSend(); | |||||
| } | |||||
| } | } | ||||
| public function renderForDisplay(PhabricatorUser $viewer) { | public function renderForDisplay(PhabricatorUser $viewer) { | ||||
| // This data has some sensitive stuff, so don't show it. | // This data has some sensitive stuff, so don't show it. | ||||
| return null; | return null; | ||||
| } | } | ||||
| private function renderRefs(array $logs) { | private function renderRefs(array $logs) { | ||||
| ▲ Show 20 Lines • Show All 93 Lines • Show Last 20 Lines | |||||