- fix rep_specialchars_output() performance, remove old 'charset' option use

release-0.6
alecpl 15 years ago
parent 0061e7b77f
commit 79c45f4b18

@ -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['&'] = '&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['"'] = '\\"';
@ -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;
}

@ -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');

Loading…
Cancel
Save