return $body;
}
-/*
+/**
+ * Decodes headers
+ *
* This functions decode strings that is encoded according to
* RFC1522 (MIME Part Two: Message Header Extensions for Non-ASCII Text).
* Patched by Christian Schmidt <christian@ostenfeld.dk> 23/03/2002
+ *
+ * @param string $string header string that has to be made readable
+ * @param boolean $utfencode change message in order to be readable on user's charset. defaults to true
+ * @param boolean $htmlsave preserve spaces and sanitize html special characters. defaults to true
+ * @param boolean $decide decide if string can be utfencoded. defaults to false
+ * @return string decoded header string
*/
-function decodeHeader ($string, $utfencode=true,$htmlsave=true) {
+function decodeHeader ($string, $utfencode=true,$htmlsave=true,$decide=false) {
global $languages, $squirrelmail_language;
if (is_array($string)) {
$string = implode("\n", $string);
/* if the last chunk isn't an encoded string then put back the space, otherwise don't */
if ($iLastMatch !== $j) {
if ($htmlsave) {
- $ret .= ' ';
+ $ret .= ' ';
} else {
$ret .= ' ';
}
$replace = str_replace('_', ' ', $res[4]);
$replace = preg_replace('/=([0-9a-f]{2})/ie', 'chr(hexdec("\1"))',
$replace);
+ /* decide about valid decoding */
+ if ($decide && is_conversion_safe($res[2])) {
+ $utfencode=true;
+ $can_be_decoded=true;
+ } else {
+ $can_be_decoded=false;
+ }
/* Only encode into entities by default. Some places
* don't need the encoding, like the compose form.
*/
}
if (!$encoded) {
if ($htmlsave) {
- $ret .= ' ';
+ $ret .= ' ';
} else {
$ret .= ' ';
}
/* remove the first added space */
if ($ret) {
if ($htmlsave) {
- $ret = substr($ret,6);
+ $ret = substr($ret,5);
} else {
$ret = substr($ret,1);
}
return $ret;
}
-/*
+/**
+ * Encodes header as quoted-printable
+ *
* Encode a string according to RFC 1522 for use in headers if it
* contains 8-bit characters or anything that looks like it should
* be encoded.
+ *
+ * @param string $string header string, that has to be encoded
+ * @return string quoted-printable encoded string
*/
function encodeHeader ($string) {
global $default_charset, $languages, $squirrelmail_language;
function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) {
return $languages[$squirrelmail_language]['XTRA_CODE']('encodeheader', $string);
}
- if (strtolower($default_charset) == 'iso-8859-1') {
- $string = str_replace("\240",' ',$string);
- }
+ // instead of removing nbsp here, we don't add it in decodeHeader
+ // if (strtolower($default_charset) == 'iso-8859-1') {
+ // $string = str_replace("\240",' ',$string);
+ //}
// Encode only if the string contains 8-bit characters or =?
$j = strlen($string);