From 88f66ec89cf87328536757ac33e508a9614bdc09 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Mon, 13 Aug 2007 16:15:27 -0400
Subject: [PATCH] Fix bugs introduced with latest changes

---
 CHANGELOG                        |    6 ++++++
 index.php                        |    3 +--
 program/include/rcube_shared.inc |   21 +++++++++++++++++++++
 program/include/main.inc         |   24 +++++++++---------------
 4 files changed, 37 insertions(+), 17 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 75466dd..48d73ae 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,12 @@
 CHANGELOG RoundCube Webmail
 ---------------------------
 
+2007/08/13 (thomasb)
+----------
+- Add alternative for getallheaders() (fix #1484508)
+- Revert changes for mbstring usage (fix #1484509)
+
+
 2007/08/10 (thomasb)
 ----------
 - Identify mailboxes case-sensitive
diff --git a/index.php b/index.php
index 6e8b7ff..34b5f8b 100644
--- a/index.php
+++ b/index.php
@@ -221,8 +221,7 @@
 // check client X-header to verify request origin
 if ($OUTPUT->ajax_call)
 {
-  $hdrs = getallheaders();
-  if (empty($hdrs['X-RoundCube-Referer']) && empty($CONFIG['devel_mode']))
+  if (empty($CONFIG['devel_mode']) && !rc_request_header('X-RoundCube-Referer'))
   {
     header('HTTP/1.1 404 Not Found');
     die("Invalid Request");
diff --git a/program/include/main.inc b/program/include/main.inc
index 9aa274f..f938174 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -472,19 +472,11 @@
   static $s_mbstring_loaded = NULL;
   
   // settings for mbstring module (by Tadashi Jokagi)
-  if (is_null($s_mbstring_loaded) && ($s_mbstring_loaded = extension_loaded("mbstring")))
-  {
-    $MBSTRING = array();
-    foreach (mb_list_encodings() as $charset)
-      $MBSTRING[strtoupper($charset)] = strtoupper($charset);
-    
-    // add some alias charsets
-    $MBSTRING['UTF-7'] = "UTF7-IMAP";
-    $MBSTRING['WINDOWS-1257'] = "ISO-8859-13";
-  }
-  else if (is_null($s_mbstring_loaded))
+  if (is_null($s_mbstring_loaded)) 
+    $MBSTRING = $s_mbstring_loaded = extension_loaded("mbstring"); 
+  else
     $MBSTRING = $s_mbstring_loaded = FALSE;
-    
+  
   if ($MBSTRING)
     mb_internal_encoding(RCMAIL_CHARSET);
 
@@ -1057,7 +1049,6 @@
 function rcube_charset_convert($str, $from, $to=NULL)
   {
   global $MBSTRING;
-  static $mb_encodings;
 
   $from = strtoupper($from);
   $to = $to==NULL ? strtoupper(RCMAIL_CHARSET) : strtoupper($to);
@@ -1070,10 +1061,13 @@
     return iconv($from, $to . "//IGNORE", $str);
 
   // convert charset using mbstring module  
-  if ($MBSTRING && ($mbfrom = $MBSTRING[$from]) && ($mbto = $MBSTRING[$to]))
+  if ($MBSTRING)
     {
+    $to = $to=="UTF-7" ? "UTF7-IMAP" : $to; 
+    $from = $from=="UTF-7" ? "UTF7-IMAP": $from;
+    
     // return if convert succeeded
-    if (($out = mb_convert_encoding($str, $mbto, $mbfrom)) != '')
+    if (($out = mb_convert_encoding($str, $to, $from)) != '')
       return $out;
     }
 
diff --git a/program/include/rcube_shared.inc b/program/include/rcube_shared.inc
index acf98c9..eeca2b5 100644
--- a/program/include/rcube_shared.inc
+++ b/program/include/rcube_shared.inc
@@ -523,6 +523,27 @@
 
 
 /**
+ * Read a specific HTTP request header
+ *
+ * @param string Header name
+ * @return string Header value or null if not available
+ */
+function rc_request_header($name)
+{
+  if (function_exists('getallheaders'))
+  {
+    $hdrs = getallheaders();
+    return $hdrs[$name];
+  }
+  else
+  {
+    $key = "HTTP_" . strtoupper(strtr($name, "-", "_"));
+    return $_SERVER[$key];
+  }
+}
+
+
+/**
  * Replace the middle part of a string with ...
  * if it is longer than the allowed length
  *

--
Gitblit v1.9.1