Decode header value in rcube_mime::get() by default (#1488511)

pull/13/head
Aleksander Machniak 13 years ago
parent 0b6d022e6f
commit 0f5dee00df

@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail CHANGELOG Roundcube Webmail
=========================== ===========================
- Decode header value in rcube_mime::get() by default (#1488511)
- Fix errors with enabled PHP magic_quotes_sybase option (#1488506) - Fix errors with enabled PHP magic_quotes_sybase option (#1488506)
- Fix SQL query for contacts listing on MS SQL Server (#1488505) - Fix SQL query for contacts listing on MS SQL Server (#1488505)
- Update to TinyMCE 3.5.2 - Update to TinyMCE 3.5.2

@ -205,15 +205,18 @@ class rcube_message_header
/** /**
* Returns header value * Returns header value
*/ */
public function get($name) public function get($name, $decode = true)
{ {
$name = strtolower($name); $name = strtolower($name);
if (isset($this->obj_headers[$name])) { if (isset($this->obj_headers[$name])) {
return $this->{$this->obj_headers[$name]}; $value = $this->{$this->obj_headers[$name]};
}
else {
$value = $this->others[$name];
} }
return $this->others[$name]; return $decode ? rcube_mime::decode_header($value, $this->charset) : $value;
} }
/** /**

@ -42,9 +42,25 @@ class rcube_mime
if ($default_charset) { if ($default_charset) {
self::$default_charset = $default_charset; self::$default_charset = $default_charset;
} }
else { }
self::$default_charset = rcube::get_instance()->config->get('default_charset', RCMAIL_CHARSET);
/**
* Returns message/object character set name
*
* @return string Characted set name
*/
public static function get_charset()
{
if (self::$default_charset) {
return self::$default_charset;
} }
if ($charset = rcube::get_instance()->config->get('default_charset')) {
return $charset;
}
return RCMAIL_CHARSET;
} }
@ -89,7 +105,7 @@ class rcube_mime
if ($part->ctype_parameters['charset']) if ($part->ctype_parameters['charset'])
$struct->charset = $part->ctype_parameters['charset']; $struct->charset = $part->ctype_parameters['charset'];
$part_charset = $struct->charset ? $struct->charset : self::$default_charset; $part_charset = $struct->charset ? $struct->charset : self::get_charset();
// determine filename // determine filename
if (($filename = $part->d_parameters['filename']) || ($filename = $part->ctype_parameters['name'])) { if (($filename = $part->d_parameters['filename']) || ($filename = $part->ctype_parameters['name'])) {
@ -183,7 +199,7 @@ class rcube_mime
*/ */
public static function decode_mime_string($input, $fallback = null) public static function decode_mime_string($input, $fallback = null)
{ {
$default_charset = !empty($fallback) ? $fallback : self::$default_charset; $default_charset = !empty($fallback) ? $fallback : self::get_charset();
// rfc: all line breaks or other characters not found // rfc: all line breaks or other characters not found
// in the Base64 Alphabet must be ignored by decoding software // in the Base64 Alphabet must be ignored by decoding software

Loading…
Cancel
Save