From 79c45f4b187ce83e9224e3e43066cc67e4343a69 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Fri, 05 Jun 2009 02:08:46 -0400
Subject: [PATCH] - fix rep_specialchars_output() performance, remove old 'charset' option use 

---
 program/include/main.inc   |   31 ++++++++-----------------------
 program/include/rcmail.php |    2 +-
 2 files changed, 9 insertions(+), 24 deletions(-)

diff --git a/program/include/main.inc b/program/include/main.inc
index b9408cf..6f1be85 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -445,17 +445,8 @@
   static $js_rep_table = false;
   static $xml_rep_table = false;
 
-  $charset = rcmail::get_instance()->config->get('charset', RCMAIL_CHARSET);
-  $is_iso_8859_1 = false;
-  if ($charset == 'ISO-8859-1') {
-    $is_iso_8859_1 = true;
-  }
   if (!$enctype)
     $enctype = $OUTPUT->type;
-
-  // encode for plaintext
-  if ($enctype=='text')
-    return str_replace("\r\n", "\n", $mode=='remove' ? strip_tags($str) : $str);
 
   // encode for HTML output
   if ($enctype=='html')
@@ -486,6 +477,14 @@
     return $newlines ? nl2br($out) : $out;
     }
 
+  // encode for javascript use
+  if ($enctype=='js')
+    return preg_replace(array("/\r?\n/", "/\r/", '/<\\//'), array('\n', '\n', '<\\/'), strtr($str, $js_rep_table));
+
+  // encode for plaintext
+  if ($enctype=='text')
+    return str_replace("\r\n", "\n", $mode=='remove' ? strip_tags($str) : $str);
+
   if ($enctype=='url')
     return rawurlencode($str);
 
@@ -496,12 +495,7 @@
     $xml_rep_table['&'] = '&amp;';
 
     for ($c=160; $c<256; $c++)  // can be increased to support more charsets
-      {
       $xml_rep_table[Chr($c)] = "&#$c;";
-      
-      if ($is_iso_8859_1)
-        $js_rep_table[Chr($c)] = sprintf("\\u%04x", $c);
-      }
 
     $xml_rep_table['"'] = '&quot;';
     $js_rep_table['"'] = '\\"';
@@ -512,15 +506,6 @@
   // encode for XML
   if ($enctype=='xml')
     return strtr($str, $xml_rep_table);
-
-  // encode for javascript use
-  if ($enctype=='js')
-    {
-    if ($charset!='UTF-8')
-      $str = rcube_charset_convert($str, RCMAIL_CHARSET, $charset);
-      
-    return preg_replace(array("/\r?\n/", "/\r/", '/<\\//'), array('\n', '\n', '<\\/'), strtr($str, $js_rep_table));
-    }
 
   // no encoding given -> return original string
   return $str;
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index ea53d91..afcc33a 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -321,7 +321,7 @@
     $this->output->set_env('task', $this->task);
     $this->output->set_env('action', $this->action);
     $this->output->set_env('comm_path', $this->comm_path);
-    $this->output->set_charset($this->config->get('charset', RCMAIL_CHARSET));
+    $this->output->set_charset(RCMAIL_CHARSET);
 
     // add some basic label to client
     $this->output->add_label('loading', 'servererror');

--
Gitblit v1.9.1