From 257782150db70dbe852d1c71fe6fd8abda0229f0 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Tue, 29 Apr 2008 02:44:57 -0400
Subject: [PATCH] - improved messages list performance - patch from Justin Heesemann

---
 program/include/main.inc |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/program/include/main.inc b/program/include/main.inc
index d611595..853ca68 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -1060,8 +1060,15 @@
 function rep_specialchars_output($str, $enctype='', $mode='', $newlines=TRUE)
   {
   global $OUTPUT_TYPE, $OUTPUT;
-  static $html_encode_arr, $js_rep_table, $xml_rep_table;
+  static $html_encode_arr = false;
+  static $js_rep_table = false;
+  static $xml_rep_table = false;
 
+  $charset = $OUTPUT->get_charset();
+  $is_iso_8859_1 = false;
+  if ($charset == 'ISO-8859-1') {
+    $is_iso_8859_1 = true;
+  }
   if (!$enctype)
     $enctype = $GLOBALS['OUTPUT_TYPE'];
 
@@ -1102,7 +1109,7 @@
     return rawurlencode($str);
 
   // if the replace tables for XML and JS are not yet defined
-  if (!$js_rep_table)
+  if ($js_rep_table===false)
     {
     $js_rep_table = $xml_rep_table = array();
     $xml_rep_table['&'] = '&amp;';
@@ -1111,7 +1118,7 @@
       {
       $xml_rep_table[Chr($c)] = "&#$c;";
       
-      if ($OUTPUT->get_charset()=='ISO-8859-1')
+      if ($is_iso_8859_1)
         $js_rep_table[Chr($c)] = sprintf("\\u%04x", $c);
       }
 
@@ -1125,8 +1132,8 @@
   // encode for javascript use
   if ($enctype=='js')
     {
-    if ($OUTPUT->get_charset()!='UTF-8')
-      $str = rcube_charset_convert($str, RCMAIL_CHARSET, $OUTPUT->get_charset());
+    if ($charset!='UTF-8')
+      $str = rcube_charset_convert($str, RCMAIL_CHARSET,$charset);
       
     return preg_replace(array("/\r?\n/", "/\r/", '/<\\//'), array('\n', '\n', '<\\/'), addslashes(strtr($str, $js_rep_table)));
     }

--
Gitblit v1.9.1