alecpl
2009-06-05 74eb6c3ceb214d816a679fb6c99495bd8c192f80
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,9 +477,6 @@
    return $newlines ? nl2br($out) : $out;
    }
  if ($enctype=='url')
    return rawurlencode($str);
  // if the replace tables for XML and JS are not yet defined
  if ($js_rep_table===false)
    {
@@ -496,12 +484,7 @@
    $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['"'] = '&quot;';
    $js_rep_table['"'] = '\\"';
@@ -509,18 +492,20 @@
    $js_rep_table["\\"] = "\\\\";
    }
  // 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);
  // 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;