/** * @task mail */ protected function addHeadersAndCommentsToMailBody(PhabricatorMetaMTAMailBody $body, array $xactions, $object_label = null, $object_href = null) { $headers = array(); $headers_html = array(); $comments = array(); $details = array(); foreach ($xactions as $xaction) { if ($xaction->shouldHideForMail($xactions)) { continue; } $header = $xaction->getTitleForMail(); if ($header !== null) { $headers[] = $header; } $header_html = $xaction->getTitleForHTMLMail(); if ($header_html !== null) { $headers_html[] = $header_html; } $comment = $xaction->getBodyForMail(); if ($comment !== null) { $comments[] = $comment; } if ($xaction->hasChangeDetailsForMail()) { $details[] = $xaction; } } $headers_text = implode("\n", $headers); $body->addRawPlaintextSection($headers_text); $headers_html = phutil_implode_html(phutil_tag('br'), $headers_html); $header_button = null; if ($object_label !== null) { $button_style = array('text-decoration: none;', 'padding: 4px 8px;', 'margin: 0 8px 8px;', 'float: right;', 'color: #464C5C;', 'font-weight: bold;', 'border-radius: 3px;', 'background-color: #F7F7F9;', 'background-image: linear-gradient(to bottom,#fff,#f1f0f1);', 'display: inline-block;', 'border: 1px solid rgba(71,87,120,.2);'); $header_button = phutil_tag('a', array('style' => implode(' ', $button_style), 'href' => $object_href), $object_label); } $xactions_style = array(); $header_action = phutil_tag('td', array(), $header_button); $header_action = phutil_tag('td', array('style' => implode(' ', $xactions_style)), array($headers_html, "\n")); $headers_html = phutil_tag('table', array(), phutil_tag('tr', array(), array($header_action, $header_button))); $body->addRawHTMLSection($headers_html); foreach ($comments as $comment) { $body->addRemarkupSection(null, $comment); } foreach ($details as $xaction) { $details = $xaction->renderChangeDetailsForMail($body->getViewer()); if ($details !== null) { $label = $this->getMailDiffSectionHeader($xaction); $body->addHTMLSection($label, $details); } } }