From 7830fdeaf5871d55be95e21a8f4771471c3b2454 Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Mon, 17 Jan 2011 23:44:21 -0700 Subject: [PATCH] When printing, convert header data to charset of output text --- imp/view.php | 55 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/imp/view.php b/imp/view.php index 6016f7ee2..1fc717e88 100644 --- a/imp/view.php +++ b/imp/view.php @@ -221,6 +221,12 @@ case 'print_attach': exit; } + if (!($render = $contents->renderMIMEPart($vars->id, IMP_Contents::RENDER_FULL))) { + break; + } + reset($render); + $render_key = key($render); + switch ($vars->pmode) { case 'headers': $imp_ui = new IMP_Ui_Message(); @@ -228,6 +234,8 @@ case 'print_attach': unset($basic_headers['bcc'], $basic_headers['reply-to']); $headerob = $contents->getHeaderOb(); + $d_param = Horde_Mime::decodeParam('content-type', $render[$render_key]['type']); + $headers = array(); foreach ($basic_headers as $key => $val) { if ($hdr_val = $headerob->getValue($key)) { @@ -239,7 +247,7 @@ case 'print_attach': $headers[] = array( 'header' => htmlspecialchars($val), - 'value' => htmlspecialchars($hdr_val) + 'value' => htmlspecialchars(Horde_String::convertCharset($hdr_val, null, $d_param['params']['charset'])) ); } } @@ -290,33 +298,28 @@ case 'print_attach': // Fall-through case 'content': - $render = $contents->renderMIMEPart($vars->id, IMP_Contents::RENDER_FULL); - if (!empty($render)) { - reset($render); - $key = key($render); - $browser->downloadHeaders($render[$key]['name'], $render[$key]['type'], true, strlen($render[$key]['data'])); - if ($browser->isBrowser('mozilla')) { - $pstring = Horde_Mime::decodeParam('content-type', $render[$key]['type']); - - $doc = new Horde_Domhtml($render[$key]['data'], $pstring['params']['charset']); - - $bodyelt = $doc->dom->getElementsByTagName('body')->item(0); - $bodyelt->insertBefore($doc->dom->importNode($div, true), $bodyelt->firstChild); - - /* Make the title the e-mail subject. */ - $headers = $contents->getHeaderOb(); - $imp_ui_mbox = new IMP_Ui_Mailbox(); - - $headelt = $doc->getHead(); - foreach ($headelt->getElementsByTagName('title') as $node) { - $headelt->removeChild($node); - } - $headelt->appendChild($doc->dom->createElement('title', htmlspecialchars($imp_ui_mbox->getSubject($headers->getValue('subject'))))); + $browser->downloadHeaders($render[$render_key]['name'], $render[$render_key]['type'], true, strlen($render[$render_key]['data'])); + if ($browser->isBrowser('mozilla')) { + $pstring = Horde_Mime::decodeParam('content-type', $render[$render_key]['type']); + + $doc = new Horde_Domhtml($render[$render_key]['data'], $pstring['params']['charset']); + + $bodyelt = $doc->dom->getElementsByTagName('body')->item(0); + $bodyelt->insertBefore($doc->dom->importNode($div, true), $bodyelt->firstChild); - echo $doc->returnHtml(); - } else { - echo $render[$key]['data']; + /* Make the title the e-mail subject. */ + $headers = $contents->getHeaderOb(); + $imp_ui_mbox = new IMP_Ui_Mailbox(); + + $headelt = $doc->getHead(); + foreach ($headelt->getElementsByTagName('title') as $node) { + $headelt->removeChild($node); } + $headelt->appendChild($doc->dom->createElement('title', htmlspecialchars($imp_ui_mbox->getSubject($headers->getValue('subject'))))); + + echo $doc->returnHtml(); + } else { + echo $render[$render_key]['data']; } break; } -- 2.11.0