From e019f2d0f2dc2fbfa345ab5d7ae85e67bfdd76b8 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Sat, 25 Sep 2010 09:03:53 -0400 Subject: [PATCH] - s/RoundCube/Roundcube/ --- program/include/main.inc | 81 ++++++++++++++++++++++++++++------------ 1 files changed, 57 insertions(+), 24 deletions(-) diff --git a/program/include/main.inc b/program/include/main.inc index f9ce547..efcb60e 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -4,8 +4,8 @@ +-----------------------------------------------------------------------+ | program/include/main.inc | | | - | This file is part of the RoundCube Webmail client | - | Copyright (C) 2005-2009, RoundCube Dev, - Switzerland | + | This file is part of the Roundcube Webmail client | + | Copyright (C) 2005-2009, Roundcube Dev, - Switzerland | | Licensed under the GNU GPL | | | | PURPOSE: | @@ -20,7 +20,7 @@ */ /** - * RoundCube Webmail common functions + * Roundcube Webmail common functions * * @package Core * @author Thomas Bruederli <roundcube@gmail.com> @@ -205,8 +205,8 @@ if ($from == $to || empty($str) || empty($from)) return $str; - // convert charset using iconv module - if (function_exists('iconv') && $from != 'UTF-7' && $to != 'UTF-7') { + // convert charset using iconv module + if (function_exists('iconv') && $from != 'UTF7-IMAP' && $to != 'UTF7-IMAP') { if ($iconv_options === null) { // ignore characters not available in output charset $iconv_options = '//IGNORE'; @@ -334,9 +334,10 @@ return $charsets[$input]; $charset = preg_replace(array( - '/^[^0-9A-Z]+/', // e.g. _ISO-8859-JP$SIO - '/\$.*$/', // e.g. _ISO-8859-JP$SIO - '/UNICODE-1-1-*/', // RFC1641/1642 + '/^[^0-9A-Z]+/', // e.g. _ISO-8859-JP$SIO + '/\$.*$/', // e.g. _ISO-8859-JP$SIO + '/UNICODE-1-1-*/', // RFC1641/1642 + '/^X-/', // X- prefix (e.g. X-ROMAN8 => ROMAN8) ), '', $charset); # Aliases: some of them from HTML5 spec. @@ -356,19 +357,25 @@ 'ISO88599' => 'WINDOWS-1254', 'ISO885911' => 'WINDOWS-874', 'MACROMAN' => 'MACINTOSH', - '238' => 'WINDOWS-1250', - '178' => 'WINDOWS-1256', - '177' => 'WINDOWS-1255', - '204' => 'WINDOWS-1251', - '161' => 'WINDOWS-1253', - '222' => 'WINDOWS-874', + '77' => 'MAC', + '128' => 'SHIFT-JIS', + '129' => 'CP949', + '130' => 'CP1361', '134' => 'GBK', + '136' => 'BIG5', + '161' => 'WINDOWS-1253', + '162' => 'WINDOWS-1254', + '163' => 'WINDOWS-1258', + '177' => 'WINDOWS-1255', + '178' => 'WINDOWS-1256', + '186' => 'WINDOWS-1257', + '204' => 'WINDOWS-1251', + '222' => 'WINDOWS-874', '238' => 'WINDOWS-1250', - '128' => 'SHIFT-JIS' ); - // allow a-z and 0-9 only and remove X- prefix (e.g. X-ROMAN8 => ROMAN8) - $str = preg_replace(array('/[^A-Z0-9]/', '/^X+/'), '', $charset); + // allow A-Z and 0-9 only + $str = preg_replace('/[^A-Z0-9]/', '', $charset); if (isset($aliases[$str])) $result = $aliases[$str]; @@ -385,6 +392,26 @@ // handle broken charset names e.g. WINDOWS-1250HTTP-EQUIVCONTENT-TYPE else if (preg_match('/(WIN|WINDOWS)([0-9]+)/', $str, $m)) { $result = 'WINDOWS-' . $m[2]; + } + // LATIN + else if (preg_match('/LATIN(.*)/', $str, $m)) { + $aliases = array('2' => 2, '3' => 3, '4' => 4, '5' => 9, '6' => 10, + '7' => 13, '8' => 14, '9' => 15, '10' => 16, + 'ARABIC' => 6, 'CYRILLIC' => 5, 'GREEK' => 7, 'GREEK1' => 7, 'HEBREW' => 8); + + // some clients sends windows-1252 text as latin1, + // it is safe to use windows-1252 for all latin1 + if ($m[1] == 1) { + $result = 'WINDOWS-1252'; + } + // if iconv is not supported we need ISO labels, it's also safe for iconv + else if (!empty($aliases[$m[1]])) { + $result = 'ISO-8859-'.$aliases[$m[1]]; + } + // iconv requires convertion of e.g. LATIN-1 to LATIN1 + else { + $result = $str; + } } else { $result = $charset; @@ -700,7 +727,7 @@ */ function strip_quotes($str) { - return preg_replace('/[\'"]/', '', $str); + return str_replace(array("'", '"'), '', $str); } @@ -824,7 +851,7 @@ { $last_pos = 0; $replacements = new rcube_string_replacer; - + // ignore the whole block if evil styles are detected $stripped = preg_replace('/[^a-z\(:]/', '', rcmail_xss_entity_decode($source)); if (preg_match('/expression|behavior|url\(|import/', $stripped)) @@ -847,15 +874,15 @@ array( '/(^\s*<!--)|(-->\s*$)/', '/(^\s*|,\s*|\}\s*)([a-z0-9\._#\*][a-z0-9\.\-_]*)/im', - "/$container_id\s+body/i", + '/'.preg_quote($container_id, '/').'\s+body/i', ), array( '', "\\1#$container_id \\2", - "$container_id div.rcmBody", + $container_id, ), $source); - + // put block contents back in $styles = $replacements->resolve($styles); @@ -1505,7 +1532,11 @@ if ($hook['abort']) return; - $lang = strtolower(substr($_SESSION['language'], 0, 2)); + $lang = strtolower($_SESSION['language']); + + // TinyMCE uses 'tw' for zh_TW (which is wrong, because tw is a code of Twi language) + $lang = ($lang == 'zh_tw') ? 'tw' : substr($lang, 0, 2); + if (!file_exists(INSTALL_PATH . 'program/js/tiny_mce/langs/'.$lang.'.js')) $lang = 'en'; @@ -1557,8 +1588,10 @@ $d = preg_replace('/^[^\.]+\./', '', $n); // %h - IMAP host $h = $_SESSION['imap_host']; + // %z - IMAP domain without first part, e.g. %h=imap.domain.tld, %z=domain.tld + $z = preg_replace('/^[^\.]+\./', '', $h); - $name = str_replace(array('%n', '%d', '%h'), array($n, $d, $h), $name); + $name = str_replace(array('%n', '%d', '%h', '%z'), array($n, $d, $h, $z), $name); return $name; } -- Gitblit v1.9.1