Browse Source

Added optional mbstring functions to deal with i18n folder names

tokul 22 years ago
parent
commit
f2b9b5f5d5
1 changed files with 36 additions and 0 deletions
  1. 36 0
      functions/imap_utf7_local.php

+ 36 - 0
functions/imap_utf7_local.php

@@ -18,6 +18,24 @@ function imap_utf7_encode_local($s) {
         function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) {
         return $languages[$squirrelmail_language]['XTRA_CODE']('utf7-imap_encode', $s);
     }
+
+    global $default_charset;
+    set_my_charset();
+
+    if ( ! $default_charset == "iso-8859-1" ) {
+      // Allows mbstring functions only with iso-8859-*, utf-8 and 
+      // iso-2022-jp (Japanese)
+      // koi8-r and gb2312 can be added only in php 4.3+
+      if ( preg_match("/iso-8859-/i",$default_charset) ||
+	   preg_match("/utf-8/i",$default_charset) || 
+	   preg_match("/iso-2022-jp/i",$default_charset) ) {
+	if(function_exists("mb_convert_encoding")) {
+	  return mb_convert_encoding($s, "UTF7-IMAP", $default_charset);
+	}
+      }
+    }
+
+    // Later code works only for ISO-8859-1 
     
 	$b64_s = '';	// buffer for substring to be base64-encoded
 	$utf7_s = '';	// imap-utf7-encoded string
@@ -58,6 +76,24 @@ function imap_utf7_decode_local($s) {
         function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) {
         return $languages[$squirrelmail_language]['XTRA_CODE']('utf7-imap_decode', $s);
     }
+
+    global $default_charset;
+    set_my_charset();
+
+    if ( ! $default_charset == "iso-8859-1" ) {
+      // Allows mbstring functions only with iso-8859-*, utf-8 and 
+      // iso-2022-jp (Japanese)
+      // koi8-r and gb2312 can be added only in php 4.3+
+      if ( preg_match("/iso-8859-/i",$default_charset) ||
+	   preg_match("/utf-8/i",$default_charset) || 
+	   preg_match("/iso-2022-jp/i",$default_charset) ) {
+	if(function_exists("mb_convert_encoding")) {
+	  return mb_convert_encoding($s, $default_charset, "UTF7-IMAP");
+	}
+      }
+    }
+
+    // Later code works only for ISO-8859-1
     
 	$b64_s = '';
 	$iso_8859_1_s = '';