From b79cc545ec020f7dd4bd83dcd06af3cf2b1fcaff Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Tue, 28 Aug 2012 05:20:20 -0400
Subject: [PATCH] Improvements/fixes for Larry skin

---
 program/include/rcube_mime.php |   32 +++++++++++++++++++++++---------
 1 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/program/include/rcube_mime.php b/program/include/rcube_mime.php
index 9a594f3..d8e04a9 100644
--- a/program/include/rcube_mime.php
+++ b/program/include/rcube_mime.php
@@ -31,7 +31,7 @@
  */
 class rcube_mime
 {
-    private static $default_charset = RCMAIL_CHARSET;
+    private static $default_charset;
 
 
     /**
@@ -39,12 +39,26 @@
      */
     function __construct($default_charset = null)
     {
-        if ($default_charset) {
-            self::$default_charset = $default_charset;
+        self::$default_charset = $default_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;
         }
-        else {
-            self::$default_charset = rcube::get_instance()->config->get('default_charset', RCMAIL_CHARSET);
+
+        if ($charset = rcube::get_instance()->config->get('default_charset')) {
+            return $charset;
         }
+
+        return RCMAIL_CHARSET;
     }
 
 
@@ -89,7 +103,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 +197,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
@@ -527,10 +541,10 @@
                     $prefix = $regs[0];
                     $level = strlen($prefix);
                     $line  = rtrim(substr($line, $level));
-                    $line  = $prefix . rc_wordwrap($line, $length - $level - 2, " \r\n$prefix ");
+                    $line  = $prefix . self::wordwrap($line, $length - $level - 2, " \r\n$prefix ");
                 }
                 else if ($line) {
-                    $line = rc_wordwrap(rtrim($line), $length - 2, " \r\n");
+                    $line = self::wordwrap(rtrim($line), $length - 2, " \r\n");
                     // space-stuffing
                     $line = preg_replace('/(^|\r\n)(From| |>)/', '\\1 \\2', $line);
                 }

--
Gitblit v1.9.1