alecpl
2009-06-05 79c45f4b187ce83e9224e3e43066cc67e4343a69
- fix rep_specialchars_output() performance, remove old 'charset' option use 


2 files modified
33 ■■■■ changed files
program/include/main.inc 31 ●●●● patch | view | raw | blame | history
program/include/rcmail.php 2 ●●● patch | view | raw | blame | history
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;
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');