From 8498dce502f9265278f7eb2b01ae4e65187a1a84 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Wed, 29 Oct 2008 08:39:12 -0400 Subject: [PATCH] - Fix problem with numeric folder names (#1485527) --- program/include/rcube_shared.inc | 53 +++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 41 insertions(+), 12 deletions(-) diff --git a/program/include/rcube_shared.inc b/program/include/rcube_shared.inc index 5008251..9f8bc4f 100644 --- a/program/include/rcube_shared.inc +++ b/program/include/rcube_shared.inc @@ -109,6 +109,31 @@ /** + * Returns whether an $str is a reserved word for any of the version of Javascript or ECMAScript + * @param str String to check + * @return boolean True if $str is a reserver word, False if not + */ +function is_js_reserved_word($str) +{ + return in_array($str, array( + // ECMASript ver 4 reserved words + 'as','break','case','catch','class','const','continue', + 'default','delete','do','else','export','extends','false','finally','for','function', + 'if','import','in','instanceof','is','namespace','new','null','package','private', + 'public','return','super','switch','this','throw','true','try','typeof','use','var', + 'void','while','with', + // ECMAScript ver 4 future reserved words + 'abstract','debugger','enum','goto','implements','interface','native','protected', + 'synchronized','throws','transient','volatile', + // special meaning in some contexts + 'get','set', + // were reserved in ECMAScript ver 3 + 'boolean','byte','char','double','final','float','int','long','short','static' + )); +} + + +/** * Convert a variable into a javascript object notation * * @param mixed Input value @@ -145,7 +170,7 @@ foreach ($var as $key => $value) { // enclose key with quotes if it is not variable-name conform - if (!ereg("^[_a-zA-Z]{1}[_a-zA-Z0-9]*$", $key) /* || is_js_reserved_word($key) */) + if (!ereg("^[_a-zA-Z]{1}[_a-zA-Z0-9]*$", $key) || is_js_reserved_word($key)) $key = "'$key'"; $pairs[] = sprintf("%s%s", $is_assoc ? "$key:" : '', json_serialize($value)); @@ -154,7 +179,7 @@ return $brackets{0} . implode(',', $pairs) . $brackets{1}; } } - else if (is_numeric($var) && strval(intval($var)) === strval($var)) + else if (!is_string($var) && strval(intval($var)) === strval($var)) return $var; else if (is_bool($var)) return $var ? '1' : '0'; @@ -162,6 +187,7 @@ return "'".JQ($var)."'"; } + /** * Function to convert an array to a javascript array @@ -183,8 +209,9 @@ */ function in_array_nocase($needle, $haystack) { + $needle = rc_strtolower($needle); foreach ($haystack as $value) - if (strtolower($needle)===strtolower($value)) + if ($needle===rc_strtolower($value)) return true; return false; @@ -249,17 +276,17 @@ if ($bytes > 1073741824) { $gb = $bytes/1073741824; - $str = sprintf($gb>=10 ? "%d GB" : "%.1f GB", $gb); + $str = sprintf($gb>=10 ? "%d " : "%.1f ", $gb) . rcube_label('GB'); } else if ($bytes > 1048576) { $mb = $bytes/1048576; - $str = sprintf($mb>=10 ? "%d MB" : "%.1f MB", $mb); + $str = sprintf($mb>=10 ? "%d " : "%.1f ", $mb) . rcube_label('MB'); } else if ($bytes > 1024) - $str = sprintf("%d KB", round($bytes/1024)); + $str = sprintf("%d ", round($bytes/1024)) . rcube_label('KB'); else - $str = sprintf('%d B', $bytes); + $str = sprintf('%d ', $bytes) . rcube_label('B'); return $str; } @@ -504,7 +531,7 @@ * @see http://de2.php.net/manual/en/ref.fileinfo.php * @see http://de2.php.net/mime_content_type */ -function rc_mime_content_type($path, $failover = 'unknown/unknown') +function rc_mime_content_type($path, $failover = 'application/octet-stream') { $mime_type = null; $mime_magic = rcmail::get_instance()->config->get('mime_magic'); @@ -548,10 +575,12 @@ // FIXME: the order is important, because sometimes // iso string is detected as euc-jp and etc. $enc = array( - 'UTF-8', 'ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4', - 'ISO-8859-5', 'ISO-8859-6', 'ISO-8859-7', 'ISO-8859-8', 'ISO-8859-9', - 'ISO-8859-10', 'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'ISO-8859-16', - 'WINDOWS-1252', 'WINDOWS-1251', 'EUC-JP', 'EUC-TW', 'KOI8-R' + 'UTF-8', 'SJIS', 'BIG5', 'GB2312', + 'ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4', + 'ISO-8859-5', 'ISO-8859-6', 'ISO-8859-7', 'ISO-8859-8', 'ISO-8859-9', + 'ISO-8859-10', 'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'ISO-8859-16', + 'WINDOWS-1252', 'WINDOWS-1251', 'EUC-JP', 'EUC-TW', 'KOI8-R', + 'ISO-2022-KR', 'ISO-2022-JP' ); $result = mb_detect_encoding($string, join(',', $enc)); -- Gitblit v1.9.1