Path: blob/master/src/applications/metamta/replyhandler/PhabricatorMailTarget.php
12256 views
<?php12final class PhabricatorMailTarget extends Phobject {34private $viewer;5private $replyTo;6private $toMap = array();7private $ccMap = array();8private $rawToPHIDs;9private $rawCCPHIDs;1011public function setRawToPHIDs(array $to_phids) {12$this->rawToPHIDs = $to_phids;13return $this;14}1516public function setRawCCPHIDs(array $cc_phids) {17$this->rawCCPHIDs = $cc_phids;18return $this;19}2021public function setCCMap(array $cc_map) {22$this->ccMap = $cc_map;23return $this;24}2526public function getCCMap() {27return $this->ccMap;28}2930public function setToMap(array $to_map) {31$this->toMap = $to_map;32return $this;33}3435public function getToMap() {36return $this->toMap;37}3839public function setReplyTo($reply_to) {40$this->replyTo = $reply_to;41return $this;42}4344public function getReplyTo() {45return $this->replyTo;46}4748public function setViewer($viewer) {49$this->viewer = $viewer;50return $this;51}5253public function getViewer() {54return $this->viewer;55}5657public function willSendMail(PhabricatorMetaMTAMail $mail) {58$viewer = $this->getViewer();5960$show_stamps = $mail->shouldRenderMailStampsInBody($viewer);6162$body = $mail->getBody();63$html_body = $mail->getHTMLBody();64$has_html = (strlen($html_body) > 0);6566if ($show_stamps) {67$stamps = $mail->getMailStamps();68if ($stamps) {69$body .= "\n";70$body .= pht('STAMPS');71$body .= "\n";72$body .= implode(' ', $stamps);73$body .= "\n";7475if ($has_html) {76$html = array();77$html[] = phutil_tag('strong', array(), pht('STAMPS'));78$html[] = phutil_tag('br');79$html[] = phutil_tag(80'span',81array(82'style' => 'font-size: smaller; color: #92969D',83),84phutil_implode_html(' ', $stamps));85$html[] = phutil_tag('br');86$html[] = phutil_tag('br');87$html = phutil_tag('div', array(), $html);88$html_body .= hsprintf('%s', $html);89}90}91}9293$mail->addPHIDHeaders('X-Phabricator-To', $this->rawToPHIDs);94$mail->addPHIDHeaders('X-Phabricator-Cc', $this->rawCCPHIDs);9596$to_handles = $viewer->loadHandles($this->rawToPHIDs);97$cc_handles = $viewer->loadHandles($this->rawCCPHIDs);9899$body .= "\n";100$body .= $this->getRecipientsSummary($to_handles, $cc_handles);101102if ($has_html) {103$html_body .= hsprintf(104'%s',105$this->getRecipientsSummaryHTML($to_handles, $cc_handles));106}107108$mail->setBody($body);109$mail->setHTMLBody($html_body);110111$reply_to = $this->getReplyTo();112if ($reply_to) {113$mail->setReplyTo($reply_to);114}115116$to = array_keys($this->getToMap());117if ($to) {118$mail->addTos($to);119}120121$cc = array_keys($this->getCCMap());122if ($cc) {123$mail->addCCs($cc);124}125126return $mail;127}128129private function getRecipientsSummary(130PhabricatorHandleList $to_handles,131PhabricatorHandleList $cc_handles) {132133if (!PhabricatorEnv::getEnvConfig('metamta.recipients.show-hints')) {134return '';135}136137$to_handles = iterator_to_array($to_handles);138$cc_handles = iterator_to_array($cc_handles);139140$body = '';141142if ($to_handles) {143$to_names = mpull($to_handles, 'getCommandLineObjectName');144$body .= "To: ".implode(', ', $to_names)."\n";145}146147if ($cc_handles) {148$cc_names = mpull($cc_handles, 'getCommandLineObjectName');149$body .= "Cc: ".implode(', ', $cc_names)."\n";150}151152return $body;153}154155private function getRecipientsSummaryHTML(156PhabricatorHandleList $to_handles,157PhabricatorHandleList $cc_handles) {158159if (!PhabricatorEnv::getEnvConfig('metamta.recipients.show-hints')) {160return '';161}162163$to_handles = iterator_to_array($to_handles);164$cc_handles = iterator_to_array($cc_handles);165166$body = array();167if ($to_handles) {168$body[] = phutil_tag('strong', array(), 'To: ');169$body[] = phutil_implode_html(', ', mpull($to_handles, 'getName'));170$body[] = phutil_tag('br');171}172if ($cc_handles) {173$body[] = phutil_tag('strong', array(), 'Cc: ');174$body[] = phutil_implode_html(', ', mpull($cc_handles, 'getName'));175$body[] = phutil_tag('br');176}177return phutil_tag('div', array(), $body);178}179180181}182183184