Aleksander Machniak
2012-06-06 0f5dee00df59dd2f97c36aa0fc3aca062f9d223a
Decode header value in rcube_mime::get() by default (#1488511)
3 files modified
34 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/include/rcube_message_header.php 9 ●●●●● patch | view | raw | blame | history
program/include/rcube_mime.php 24 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Decode header value in rcube_mime::get() by default (#1488511)
- Fix errors with enabled PHP magic_quotes_sybase option (#1488506)
- Fix SQL query for contacts listing on MS SQL Server (#1488505)
- Update to TinyMCE 3.5.2
program/include/rcube_message_header.php
@@ -205,15 +205,18 @@
    /**
     * Returns header value
     */
    public function get($name)
    public function get($name, $decode = true)
    {
        $name = strtolower($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;
    }
    /**
program/include/rcube_mime.php
@@ -42,9 +42,25 @@
        if ($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 @@
        if ($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
        if (($filename = $part->d_parameters['filename']) || ($filename = $part->ctype_parameters['name'])) {
@@ -183,7 +199,7 @@
     */
    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
        // in the Base64 Alphabet must be ignored by decoding software