From c72a96144de1e5674159f4010ec0e44c9d946a5b Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Mon, 19 Nov 2012 05:02:13 -0500
Subject: [PATCH] Improve line wrapping behavior where message charset is changed by plugins (including html2plaintext conversion)
---
program/lib/html2text.php | 17 +++++++++++++----
1 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/program/lib/html2text.php b/program/lib/html2text.php
index dd413e0..34c7193 100644
--- a/program/lib/html2text.php
+++ b/program/lib/html2text.php
@@ -135,6 +135,14 @@
var $width = 70;
/**
+ * Target character encoding for output text
+ *
+ * @var string $charset
+ * @access public
+ */
+ var $charset = 'UTF-8';
+
+ /**
* List of preg* regular expression patterns to search for,
* used in conjunction with $replace.
*
@@ -347,7 +355,7 @@
* @access public
* @return void
*/
- function html2text( $source = '', $from_file = false, $do_links = true, $width = 75 )
+ function html2text( $source = '', $from_file = false, $do_links = true, $width = 75, $charset = 'UTF-8' )
{
if ( !empty($source) ) {
$this->set_html($source, $from_file);
@@ -356,6 +364,7 @@
$this->set_base_url();
$this->_do_links = $do_links;
$this->width = $width;
+ $this->charset = $charset;
}
/**
@@ -517,7 +526,7 @@
$text = preg_replace($this->ent_search, $this->ent_replace, $text);
// Replace known html entities
- $text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');
+ $text = html_entity_decode($text, ENT_QUOTES, $this->charset);
// Remove unknown/unhandled entities (this cannot be done in search-and-replace block)
$text = preg_replace('/&([a-zA-Z0-9]{2,6}|#[0-9]{2,4});/', '', $text);
@@ -732,14 +741,14 @@
*/
private function _strtoupper($str)
{
- $str = html_entity_decode($str, ENT_COMPAT, RCMAIL_CHARSET);
+ $str = html_entity_decode($str, ENT_COMPAT, $this->charset);
if (function_exists('mb_strtoupper'))
$str = mb_strtoupper($str);
else
$str = strtoupper($str);
- $str = htmlspecialchars($str, ENT_COMPAT, RCMAIL_CHARSET);
+ $str = htmlspecialchars($str, ENT_COMPAT, $this->charset);
return $str;
}
--
Gitblit v1.9.1