summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
bfa54da)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@9978
7612ce4b-ef26-0410-bec9-
ea0150e637f0
function caused E_NOTICE warnings in php 4.4.0. Reported by Cor Bosman.
- Test to ensure folder exists before attempting to delete it, otherwise
IMAP server will return an error.
function caused E_NOTICE warnings in php 4.4.0. Reported by Cor Bosman.
- Test to ensure folder exists before attempting to delete it, otherwise
IMAP server will return an error.
+ - Added $save_html argument to charset_decode() function in order to be
+ able to convert html formated mails to different character set. Initial
+ patch by Peter Draganov (#1195232). Fixed display of html formated emails
+ in formatBody() function (#1258925).
Version 1.5.0 - 2 February 2004
-------------------------------
Version 1.5.0 - 2 February 2004
-------------------------------
* @param string $string Text to be decoded
* @param boolean $force_decode converts string to html without $charset!=$default_charset check.
* Argument is available since 1.5.1 and 1.4.5.
* @param string $string Text to be decoded
* @param boolean $force_decode converts string to html without $charset!=$default_charset check.
* Argument is available since 1.5.1 and 1.4.5.
+ * @param boolean $save_html disables htmlspecialchars() in order to preserve
+ * html formating. Use with care. Available since 1.5.1
* @return string decoded string
*/
* @return string decoded string
*/
-function charset_decode ($charset, $string, $force_decode=false) {
+function charset_decode ($charset, $string, $force_decode=false, $save_html=false) {
global $languages, $squirrelmail_language, $default_charset;
global $use_php_recode, $use_php_iconv, $aggressive_decoding;
global $languages, $squirrelmail_language, $default_charset;
global $use_php_recode, $use_php_iconv, $aggressive_decoding;
// Don't do conversion if charset is the same.
if ( ! $force_decode && $charset == strtolower($default_charset) )
// Don't do conversion if charset is the same.
if ( ! $force_decode && $charset == strtolower($default_charset) )
- return htmlspecialchars($string);
+ return ($save_html ? $strings : htmlspecialchars($string));
// catch iso-8859-8-i thing
if ( $charset == "iso-8859-8-i" )
// catch iso-8859-8-i thing
if ( $charset == "iso-8859-8-i" )
// other charsets can be converted to utf-8 without loss.
// and output string is smaller
$string = recode_string($charset . "..utf-8",$string);
// other charsets can be converted to utf-8 without loss.
// and output string is smaller
$string = recode_string($charset . "..utf-8",$string);
- return htmlspecialchars($string);
+ return ($save_html ? $strings : htmlspecialchars($string));
} else {
$string = recode_string($charset . "..html",$string);
// recode does not convert single quote, htmlspecialchars does.
$string = str_replace("'", ''', $string);
} else {
$string = recode_string($charset . "..html",$string);
// recode does not convert single quote, htmlspecialchars does.
$string = str_replace("'", ''', $string);
+ // undo html specialchars
+ if ($save_html)
+ $string=str_replace(array('&','"','<','>'),
+ array('&','"','<','>'),$string);
// iconv functions does not have html target and can be used only with utf-8
if ( $use_php_iconv && $default_charset=='utf-8') {
$string = iconv($charset,$default_charset,$string);
// iconv functions does not have html target and can be used only with utf-8
if ( $use_php_iconv && $default_charset=='utf-8') {
$string = iconv($charset,$default_charset,$string);
- return htmlspecialchars($string);
+ return ($save_html ? $strings : htmlspecialchars($string));
}
// If we don't use recode and iconv, we'll do it old way.
/* All HTML special characters are 7 bit and can be replaced first */
}
// If we don't use recode and iconv, we'll do it old way.
/* All HTML special characters are 7 bit and can be replaced first */
-
- $string = htmlspecialchars ($string);
+ if (! $save_html) $string = htmlspecialchars ($string);
/* controls cpu and memory intensive decoding cycles */
if (! isset($aggressive_decoding) || $aggressive_decoding=="" ) {
/* controls cpu and memory intensive decoding cycles */
if (! isset($aggressive_decoding) || $aggressive_decoding=="" ) {
$decodefile=SM_PATH . 'functions/decode/' . $decode . '.php';
if (file_exists($decodefile)) {
include_once($decodefile);
$decodefile=SM_PATH . 'functions/decode/' . $decode . '.php';
if (file_exists($decodefile)) {
include_once($decodefile);
- $ret = call_user_func('charset_decode_'.$decode, $string);
+ // send $save_html argument to decoding function. needed for iso-2022-xx decoding.
+ $ret = call_user_func('charset_decode_'.$decode, $string, $save_html);
} else {
$ret = $string;
}
} else {
$ret = $string;
}
* If we don't add html message between iframe tags,
* we must detect unsafe images and modify $has_unsafe_images.
*/
* If we don't add html message between iframe tags,
* we must detect unsafe images and modify $has_unsafe_images.
*/
- $html_body = magicHTML($body, $id, $message, $mailbox);
+ $html_body = magicHTML($body, $id, $message, $mailbox);
+ // Convert character set in order to display html mails in different character set
+ $html_body = charset_decode($body_message->header->getParameter('charset'),$html_body,false,true);
// creating iframe url
$iframeurl=sqm_baseuri().'src/view_html.php?'
// creating iframe url
$iframeurl=sqm_baseuri().'src/view_html.php?'
} else {
// old way of html rendering
$body = magicHTML($body, $id, $message, $mailbox);
} else {
// old way of html rendering
$body = magicHTML($body, $id, $message, $mailbox);
+ /**
+ * convert character set. charset_decode does not remove html special chars
+ * applied by magicHTML functions and does not sanitize them second time if
+ * fourth argument is true.
+ */
+ $body = charset_decode($body_message->header->getParameter('charset'),$body,false,true);
}
} else {
translateText($body, $wrap_at,
}
} else {
translateText($body, $wrap_at,