diff options
author | alecpl <alec@alec.pl> | 2009-06-05 06:08:46 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2009-06-05 06:08:46 +0000 |
commit | 79c45f4b187ce83e9224e3e43066cc67e4343a69 (patch) | |
tree | 00d17354eaf5eaedf5aa05c2e4acc84acb0c3527 /program | |
parent | 0061e7b77fee24b216433256b636505a2d5cb9d4 (diff) |
- fix rep_specialchars_output() performance, remove old 'charset' option use
Diffstat (limited to 'program')
-rw-r--r-- | program/include/main.inc | 31 | ||||
-rw-r--r-- | 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 b9408cfa3..6f1be8526 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -445,18 +445,9 @@ function rep_specialchars_output($str, $enctype='', $mode='', $newlines=TRUE) 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 @@ function rep_specialchars_output($str, $enctype='', $mode='', $newlines=TRUE) 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 @@ function rep_specialchars_output($str, $enctype='', $mode='', $newlines=TRUE) $xml_rep_table['&'] = '&'; 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['"'] = '"'; $js_rep_table['"'] = '\\"'; @@ -513,15 +507,6 @@ function rep_specialchars_output($str, $enctype='', $mode='', $newlines=TRUE) 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 ea53d914d..afcc33af8 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -321,7 +321,7 @@ class rcmail $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'); |