From 3ddca3b945ecf36d799dfa9c772437a7dad62c5d Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Fri, 17 Jun 2011 02:39:39 -0400
Subject: [PATCH] - Don't log errors when charset conversion fails

---
 program/include/main.inc |   64 ++++++++++++--------------------
 1 files changed, 24 insertions(+), 40 deletions(-)

diff --git a/program/include/main.inc b/program/include/main.inc
index ab529d7..7e2875a 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -136,26 +136,24 @@
  * Remove temp files older than two days
  */
 function rcmail_temp_gc()
-  {
+{
   $rcmail = rcmail::get_instance();
 
   $tmp = unslashify($rcmail->config->get('temp_dir'));
   $expire = mktime() - 172800;  // expire in 48 hours
 
-  if ($dir = opendir($tmp))
-    {
-    while (($fname = readdir($dir)) !== false)
-      {
+  if ($dir = opendir($tmp)) {
+    while (($fname = readdir($dir)) !== false) {
       if ($fname{0} == '.')
         continue;
 
       if (filemtime($tmp.'/'.$fname) < $expire)
         @unlink($tmp.'/'.$fname);
-      }
+    }
 
     closedir($dir);
-    }
   }
+}
 
 
 /**
@@ -164,19 +162,19 @@
  * @return void
  */
 function rcmail_cache_gc()
-  {
+{
   $rcmail = rcmail::get_instance();
   $db = $rcmail->get_dbh();
-  
+
   // get target timestamp
   $ts = get_offset_time($rcmail->config->get('message_cache_lifetime', '30d'), -1);
-  
+
   $db->query("DELETE FROM ".get_table_name('messages')."
              WHERE  created < " . $db->fromunixtime($ts));
 
   $db->query("DELETE FROM ".get_table_name('cache')."
               WHERE  created < " . $db->fromunixtime($ts));
-  }
+}
 
 
 /**
@@ -186,9 +184,9 @@
  * @param  string Error message
  */ 
 function rcube_error_handler($errno, $errstr)
-  {
+{
   throw new ErrorException($errstr, 0, $errno);
-  }
+}
 
 
 /**
@@ -201,11 +199,10 @@
  * @return string Converted string
  */
 function rcube_charset_convert($str, $from, $to=NULL)
-  {
+{
   static $iconv_options = null;
   static $mbstring_loaded = null;
   static $mbstring_list = null;
-  static $convert_warning = false;
   static $conv = null;
 
   $error = false;
@@ -243,11 +240,11 @@
 
   if ($mbstring_loaded === null)
     $mbstring_loaded = extension_loaded('mbstring');
-    
+
   // convert charset using mbstring module
   if ($mbstring_loaded) {
     $aliases['WINDOWS-1257'] = 'ISO-8859-13';
-    
+
     if ($mbstring_list === null) {
       $mbstring_list = mb_list_encodings();
       $mbstring_list = array_map('strtoupper', $mbstring_list);
@@ -255,7 +252,7 @@
 
     $mb_from = $aliases[$from] ? $aliases[$from] : $from;
     $mb_to = $aliases[$to] ? $aliases[$to] : $to;
-    
+
     // return if encoding found, string matches encoding and convert succeeded
     if (in_array($mb_from, $mbstring_list) && in_array($mb_to, $mbstring_list)) {
       if (mb_check_encoding($str, $mb_from) && ($out = mb_convert_encoding($str, $mb_to, $mb_from)))
@@ -310,22 +307,9 @@
     $error = true;
   }
 
-  // report error
-  if ($error && !$convert_warning) {
-    raise_error(array(
-      'code' => 500,
-      'type' => 'php',
-      'file' => __FILE__,
-      'line' => __LINE__,
-      'message' => "Could not convert string from $from to $to. Make sure iconv/mbstring is installed or lib/utf8.class is available."
-      ), true, false);
-
-    $convert_warning = true;
-  }
-
   // return UTF-8 or original string
   return $str;
-  }
+}
 
 
 /**
@@ -337,7 +321,7 @@
  * @return string The validated charset name
  */
 function rcube_parse_charset($input)
-  {
+{
   static $charsets = array();
   $charset = strtoupper($input);
 
@@ -404,11 +388,11 @@
     // some clients sends windows-1252 text as latin1,
     // it is safe to use windows-1252 for all latin1
     $result = $iso == 'ISO-8859-1' ? 'WINDOWS-1252' : $iso;
-    }
+  }
   // handle broken charset names e.g. WINDOWS-1250HTTP-EQUIVCONTENT-TYPE
   else if (preg_match('/(WIN|WINDOWS)([0-9]+)/', $str, $m)) {
     $result = 'WINDOWS-' . $m[2];
-    }
+  }
   // LATIN
   else if (preg_match('/LATIN(.*)/', $str, $m)) {
     $aliases = array('2' => 2, '3' => 3, '4' => 4, '5' => 9, '6' => 10,
@@ -419,24 +403,24 @@
     // it is safe to use windows-1252 for all latin1
     if ($m[1] == 1) {
       $result = 'WINDOWS-1252';
-      }
+    }
     // if iconv is not supported we need ISO labels, it's also safe for iconv
     else if (!empty($aliases[$m[1]])) {
       $result = 'ISO-8859-'.$aliases[$m[1]];
-      }
+    }
     // iconv requires convertion of e.g. LATIN-1 to LATIN1
     else {
       $result = $str;
-      }
     }
+  }
   else {
     $result = $charset;
-    }
+  }
 
   $charsets[$input] = $result;
 
   return $result;
-  }
+}
 
 
 /**

--
Gitblit v1.9.1