From ded2b7e166d4b0acab09c00f22f379fbabba709a Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Fri, 05 May 2006 12:53:21 -0400 Subject: [PATCH] Changed login page title regarding product name (Bug #1476413) --- program/include/main.inc | 432 +++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 347 insertions(+), 85 deletions(-) diff --git a/program/include/main.inc b/program/include/main.inc index c64ac7d..019056a 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -20,6 +20,14 @@ */ require_once('lib/des.inc'); +require_once('lib/utf7.inc'); +require_once('lib/utf8.class.php'); + + +// define constannts for input reading +define('RCUBE_INPUT_GET', 0x0101); +define('RCUBE_INPUT_POST', 0x0102); +define('RCUBE_INPUT_GPC', 0x0103); // register session and connect to server @@ -64,24 +72,24 @@ // prepare DB connection require_once('include/rcube_'.(empty($CONFIG['db_backend']) ? 'db' : $CONFIG['db_backend']).'.inc'); - $DB = new rcube_db($CONFIG['db_dsnw'], $CONFIG['db_dsnr']); + $DB = new rcube_db($CONFIG['db_dsnw'], $CONFIG['db_dsnr'], $CONFIG['db_persistent']); $DB->sqlite_initials = $INSTALL_PATH.'SQL/sqlite.initial.sql'; - + $DB->db_connect('w'); + // we can use the database for storing session data // session queries do not work with MDB2 - if ($CONFIG['db_backend']!='mdb2' && is_object($DB) /* && $DB->db_provider!='sqlite' */) + if ($CONFIG['db_backend']!='mdb2' && !$DB->is_error()) include_once('include/session.inc'); - // init session session_start(); $sess_id = session_id(); - + // create session and set session vars if (!$_SESSION['client_id']) { $_SESSION['client_id'] = $sess_id; - $_SESSION['user_lang'] = substr($CONFIG['locale_string'], 0, 2); + $_SESSION['user_lang'] = rcube_language_prop($CONFIG['locale_string']); $_SESSION['auth_time'] = mktime(); $_SESSION['auth'] = rcmail_auth_hash($sess_id, $_SESSION['auth_time']); unset($GLOBALS['_auth']); @@ -89,7 +97,7 @@ // set session vars global $sess_auth = $_SESSION['auth']; - $sess_user_lang = $_SESSION['user_lang']; + $sess_user_lang = rcube_language_prop($_SESSION['user_lang']); // overwrite config with user preferences @@ -103,7 +111,6 @@ // set current task to session $_SESSION['task'] = $task; - // create IMAP object if ($task=='mail') @@ -179,12 +186,11 @@ global $CONFIG, $IMAP; // set root dir from config - if (strlen($CONFIG['imap_root'])) + if (!empty($CONFIG['imap_root'])) $IMAP->set_rootdir($CONFIG['imap_root']); - if (strlen($_SESSION['mbox'])) + if (!empty($_SESSION['mbox'])) $IMAP->set_mailbox($_SESSION['mbox']); - if (isset($_SESSION['page'])) $IMAP->set_page($_SESSION['page']); } @@ -200,16 +206,28 @@ $IMAP->close(); $IMAP->write_cache(); } + + // before closing the database connection, write session data + session_write_close(); } // destroy session data and remove cookie function rcmail_kill_session() { -/* $sess_name = session_name(); - if (isset($_COOKIE[$sess_name])) - setcookie($sess_name, '', time()-42000, '/'); -*/ + // save user preferences + $a_user_prefs = $_SESSION['user_prefs']; + if (!is_array($a_user_prefs)) + $a_user_prefs = array(); + + if ((isset($_SESSION['sort_col']) && $_SESSION['sort_col']!=$a_user_prefs['message_sort_col']) || + (isset($_SESSION['sort_order']) && $_SESSION['sort_order']!=$a_user_prefs['message_sort_order'])) + { + $a_user_prefs['message_sort_col'] = $_SESSION['sort_col']; + $a_user_prefs['message_sort_order'] = $_SESSION['sort_order']; + rcmail_save_user_prefs($a_user_prefs); + } + $_SESSION = array(); session_destroy(); } @@ -244,13 +262,49 @@ return $table; } - + + +// check the given string and returns language properties +function rcube_language_prop($lang, $prop='lang') + { + global $INSTLL_PATH; + static $rcube_languages, $rcube_language_aliases, $rcube_charsets; + + if (empty($rcube_languages)) + @include($INSTLL_PATH.'program/localization/index.inc'); + + // check if we have an alias for that language + if (!isset($rcube_languages[$lang]) && isset($rcube_language_aliases[$lang])) + $lang = $rcube_language_aliases[$lang]; + + // try the first two chars + if (!isset($rcube_languages[$lang]) && strlen($lang)>2) + { + $lang = substr($lang, 0, 2); + $lang = rcube_language_prop($lang); + } + + if (!isset($rcube_languages[$lang])) + $lang = 'en_US'; + + // language has special charset configured + if (isset($rcube_charsets[$lang])) + $charset = $rcube_charsets[$lang]; + else + $charset = 'UTF-8'; + + + if ($prop=='charset') + return $charset; + else + return $lang; + } // init output object for GUI and add common scripts function load_gui() { - global $CONFIG, $OUTPUT, $COMM_PATH, $JS_OBJECT_NAME, $CHARSET, $sess_user_lang; + global $CONFIG, $OUTPUT, $COMM_PATH, $JS_OBJECT_NAME, $sess_user_lang; // init output page $OUTPUT = new rcube_html_page(); @@ -259,46 +313,69 @@ $javascript = "var $JS_OBJECT_NAME = new rcube_webmail();\n"; $javascript .= "$JS_OBJECT_NAME.set_env('comm_path', '$COMM_PATH');\n"; + if (isset($CONFIG['javascript_config'] )){ + foreach ($CONFIG['javascript_config'] as $js_config_var){ + $javascript .= "$JS_OBJECT_NAME.set_env('$js_config_var', '" . $CONFIG[$js_config_var] . "');\n"; + } + } + if (!empty($GLOBALS['_framed'])) $javascript .= "$JS_OBJECT_NAME.set_env('framed', true);\n"; $OUTPUT->add_script($javascript); - $OUTPUT->include_script('program/js/common.js'); - $OUTPUT->include_script('program/js/app.js'); + $OUTPUT->include_script('common.js'); + $OUTPUT->include_script('app.js'); + $OUTPUT->scripts_path = 'program/js/'; + + // set locale setting + rcmail_set_locale($sess_user_lang); // set user-selected charset if (!empty($CONFIG['charset'])) - { $OUTPUT->set_charset($CONFIG['charset']); - $CHARSET = $CONFIG['charset']; - } - else - rcmail_set_locale($sess_user_lang); - + // add some basic label to client rcube_add_label('loading'); - } + } // set localization charset based on the given language function rcmail_set_locale($lang) { - global $OUTPUT, $INSTLL_PATH, $CHARSET; - static $rcube_charsets; - - if (!$rcube_charsets) - @include($INSTLL_PATH.'program/localization/index.inc'); - - if (isset($rcube_charsets[$lang])) + global $OUTPUT, $MBSTRING, $MBSTRING_ENCODING; + static $s_mbstring_loaded = NULL; + + // settings for mbstring module (by Tadashi Jokagi) + if ($s_mbstring_loaded===NULL) { - $OUTPUT->set_charset($rcube_charsets[$lang]); - $CHARSET = $rcube_charsets[$lang]; + if ($s_mbstring_loaded = extension_loaded("mbstring")) + { + $MBSTRING = TRUE; + if (function_exists("mb_mbstring_encodings")) + $MBSTRING_ENCODING = mb_mbstring_encodings(); + else + $MBSTRING_ENCODING = array("ISO-8859-1", "UTF-7", "UTF7-IMAP", "UTF-8", + "ISO-2022-JP", "EUC-JP", "EUCJP-WIN", + "SJIS", "SJIS-WIN"); + + $MBSTRING_ENCODING = array_map("strtoupper", $MBSTRING_ENCODING); + if (in_array("SJIS", $MBSTRING_ENCODING)) + $MBSTRING_ENCODING[] = "SHIFT_JIS"; + } + else + { + $MBSTRING = FALSE; + $MBSTRING_ENCODING = array(); + } } - else + + if ($MBSTRING && function_exists("mb_language")) { - $OUTPUT->set_charset('ISO-8859-1'); - $CHARSET = 'ISO-8859-1'; + if (!@mb_language(strtok($lang, "_"))) + $MBSTRING = FALSE; // unsupport language } + + $OUTPUT->set_charset(rcube_language_prop($lang, 'charset')); } @@ -319,6 +396,22 @@ $imap_ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? TRUE : FALSE; $imap_port = isset($a_host['port']) ? $a_host['port'] : ($imap_ssl ? 993 : $CONFIG['default_port']); } + else + $imap_port = $CONFIG['default_port']; + + + /* Modify username with domain if required + Inspired by Marco <P0L0_notspam_binware.org> + */ + // Check if we need to add domain + if ($CONFIG['username_domain'] && !strstr($user, '@')) + { + if (is_array($CONFIG['username_domain']) && isset($CONFIG['username_domain'][$host])) + $user .= '@'.$CONFIG['username_domain'][$host]; + else if (!empty($CONFIG['username_domain'])) + $user .= '@'.$CONFIG['username_domain']; + } + // query if user already registered $sql_result = $DB->query("SELECT user_id, username, language, preferences @@ -413,10 +506,10 @@ if ($user_id = $DB->insert_id(get_sequence_name('users'))) { - if (is_string($CONFIG['mail_domain'])) - $mail_domain = $CONFIG['mail_domain']; - else if (is_array($CONFIG['mail_domain']) && isset($CONFIG['mail_domain'][$host])) + if (is_array($CONFIG['mail_domain']) && isset($CONFIG['mail_domain'][$host])) $mail_domain = $CONFIG['mail_domain'][$host]; + else if (!empty($CONFIG['mail_domain'])) + $mail_domain = $CONFIG['mail_domain']; else $mail_domain = $host; @@ -425,24 +518,25 @@ $user_name = $user!=$user_email ? $user : ''; - // also create a new identity record + // try to resolve the e-mail address from the virtuser table + if (!empty($CONFIG['virtuser_query'])) + { + $sql_result = $DB->query(preg_replace('/%u/', $user, $CONFIG['virtuser_query'])); + if ($sql_arr = $DB->fetch_array($sql_result)) + $user_email = $sql_arr[0]; + } + + // also create new identity records $DB->query("INSERT INTO ".get_table_name('identities')." (user_id, del, standard, name, email) VALUES (?, 0, 1, ?, ?)", $user_id, $user_name, $user_email); + // get existing mailboxes $a_mailboxes = $IMAP->list_mailboxes(); - - // check if the configured mailbox for sent messages exists - if ($CONFIG['sent_mbox'] && !in_array_nocase($CONFIG['sent_mbox'], $a_mailboxes)) - $IMAP->create_mailbox($CONFIG['sent_mbox'], TRUE); - - // check if the configured mailbox for sent messages exists - if ($CONFIG['trash_mbox'] && !in_array_nocase($CONFIG['trash_mbox'], $a_mailboxes)) - $IMAP->create_mailbox($CONFIG['trash_mbox'], TRUE); } else { @@ -535,6 +629,29 @@ } +function rcmail_save_user_prefs($a_user_prefs) + { + global $DB, $CONFIG, $sess_user_lang; + + $DB->query("UPDATE ".get_table_name('users')." + SET preferences=?, + language=? + WHERE user_id=?", + serialize($a_user_prefs), + $sess_user_lang, + $_SESSION['user_id']); + + if ($DB->affected_rows()) + { + $_SESSION['user_prefs'] = $a_user_prefs; + $CONFIG = array_merge($CONFIG, $a_user_prefs); + return TRUE; + } + + return FALSE; + } + + // overwrite action variable function rcmail_overwrite_action($action) { @@ -545,13 +662,13 @@ } -function show_message($message, $type='notice') +function show_message($message, $type='notice', $vars=NULL) { global $OUTPUT, $JS_OBJECT_NAME, $REMOTE_REQUEST; - + $framed = $GLOBALS['_framed']; $command = sprintf("display_message('%s', '%s');", - addslashes(rep_specialchars_output(rcube_label($message))), + addslashes(rep_specialchars_output(rcube_label(array('name' => $message, 'vars' => $vars)))), $type); if ($REMOTE_REQUEST) @@ -596,18 +713,19 @@ // send correct response on a remote request function rcube_remote_response($js_code, $flush=FALSE) { + global $OUTPUT, $CHARSET; static $s_header_sent = FALSE; if (!$s_header_sent) { $s_header_sent = TRUE; send_nocacheing_headers(); - header('Content-Type: application/x-javascript'); + header('Content-Type: application/x-javascript; charset='.$CHARSET); print '/** remote response ['.date('d/M/Y h:i:s O')."] **/\n"; } // send response code - print $js_code; + print rcube_charset_convert($js_code, $CHARSET, $OUTPUT->get_charset()); if ($flush) // flush the output buffer flush(); @@ -639,7 +757,6 @@ closedir($dh); } } - return $sa_languages; } @@ -674,11 +791,83 @@ } +// remove all expired message cache records +function rcmail_message_cache_gc() + { + global $DB, $CONFIG; + + // no cache lifetime configured + if (empty($CONFIG['message_cache_lifetime'])) + return; + + // get target timestamp + $ts = get_offset_time($CONFIG['message_cache_lifetime'], -1); + + $DB->query("DELETE FROM ".get_table_name('messages')." + WHERE created < ".$DB->fromunixtime($ts)); + } + + +// convert a string from one charset to another +// this function is not complete and not tested well +function rcube_charset_convert($str, $from, $to=NULL) + { + global $MBSTRING, $MBSTRING_ENCODING; + + $from = strtoupper($from); + $to = $to==NULL ? strtoupper($GLOBALS['CHARSET']) : strtoupper($to); + + if ($from==$to) + return $str; + + // convert charset using mbstring module + if ($MBSTRING) + { + $to = $to=="UTF-7" ? "UTF7-IMAP" : $to; + $from = $from=="UTF-7" ? "UTF7-IMAP": $from; + + if (in_array($to, $MBSTRING_ENCODING) && in_array($from, $MBSTRING_ENCODING)) + return mb_convert_encoding($str, $to, $from); + } + + // convert charset using iconv module + if (function_exists('iconv') && $from!='UTF-7' && $to!='UTF-7') + return iconv($from, $to, $str); + + $conv = new utf8(); + + // convert string to UTF-8 + if ($from=='UTF-7') + $str = rcube_charset_convert(UTF7DecodeString($str), 'ISO-8859-1'); + else if ($from=='ISO-8859-1' && function_exists('utf8_encode')) + $str = utf8_encode($str); + else if ($from!='UTF-8') + { + $conv->loadCharset($from); + $str = $conv->strToUtf8($str); + } + + // encode string for output + if ($to=='UTF-7') + return UTF7EncodeString($str); + else if ($to=='ISO-8859-1' && function_exists('utf8_decode')) + return utf8_decode($str); + else if ($to!='UTF-8') + { + $conv->loadCharset($to); + return $conv->utf8ToStr($str); + } + + // return UTF-8 string + return $str; + } + + // replace specials characters to a specific encoding type function rep_specialchars_output($str, $enctype='', $mode='', $newlines=TRUE) { - global $OUTPUT_TYPE, $CHARSET; + global $OUTPUT_TYPE, $OUTPUT; static $html_encode_arr, $js_rep_table, $rtf_rep_table, $xml_rep_table; if (!$enctype) @@ -687,7 +876,6 @@ // convert nbsps back to normal spaces if not html if ($enctype!='html') $str = str_replace(chr(160), ' ', $str); - // encode for plaintext if ($enctype=='text') @@ -698,14 +886,7 @@ { if (!$html_encode_arr) { - if ($CHARSET=='ISO-8859-1') - { - $html_encode_arr = get_html_translation_table(HTML_ENTITIES); - $html_encode_arr[chr(128)] = '€'; - } - else - $html_encode_arr = get_html_translation_table(HTML_SPECIALCHARS); - + $html_encode_arr = get_html_translation_table(HTML_SPECIALCHARS); unset($html_encode_arr['?']); unset($html_encode_arr['&']); } @@ -724,7 +905,7 @@ $str = strip_tags($str); $out = strtr($str, $encode_arr); - + return $newlines ? nl2br($out) : $out; } @@ -737,6 +918,7 @@ if (!$js_rep_table) { $js_rep_table = $rtf_rep_table = $xml_rep_table = array(); + $xml_rep_table['&'] = '&'; for ($c=160; $c<256; $c++) // can be increased to support more charsets { @@ -744,7 +926,7 @@ $rtf_rep_table[Chr($c)] = "\\'$hex"; $xml_rep_table[Chr($c)] = "&#$c;"; - if ($CHARSET=='ISO-8859-1') + if ($OUTPUT->get_charset()=='ISO-8859-1') $js_rep_table[Chr($c)] = sprintf("\u%s%s", str_repeat('0', 4-strlen($hex)), $hex); } @@ -758,7 +940,12 @@ // encode for javascript use if ($enctype=='js') + { + if ($OUTPUT->get_charset()!='UTF-8') + $str = rcube_charset_convert($str, $GLOBALS['CHARSET'], $OUTPUT->get_charset()); + return preg_replace(array("/\r\n/", '/"/', "/([^\\\])'/"), array('\n', '\"', "$1\'"), strtr($str, $js_rep_table)); + } // encode for RTF if ($enctype=='rtf') @@ -767,6 +954,52 @@ // no encoding given -> return original string return $str; } + + +/** + * Read input value and convert it for internal use + * Performs stripslashes() and charset conversion if necessary + * + * @param string Field name to read + * @param int Source to get value from (GPC) + * @param boolean Allow HTML tags in field value + * @param string Charset to convert into + * @return string Field value or NULL if not available + */ +function get_input_value($fname, $source, $allow_html=FALSE, $charset=NULL) + { + global $OUTPUT; + $value = NULL; + + if ($source==RCUBE_INPUT_GET && isset($_GET[$fname])) + $value = $_GET[$fname]; + else if ($source==RCUBE_INPUT_POST && isset($_POST[$fname])) + $value = $_POST[$fname]; + else if ($source==RCUBE_INPUT_GPC) + { + if (isset($_POST[$fname])) + $value = $_POST[$fname]; + else if (isset($_GET[$fname])) + $value = $_GET[$fname]; + else if (isset($_COOKIE[$fname])) + $value = $_COOKIE[$fname]; + } + + // strip slashes if magic_quotes enabled + if ((bool)get_magic_quotes_gpc()) + $value = stripslashes($value); + + // remove HTML tags if not allowed + if (!$allow_html) + $value = strip_tags($value); + + // convert to internal charset + if (is_object($OUTPUT)) + return rcube_charset_convert($value, $OUTPUT->get_charset(), $charset); + else + return $value; + } + @@ -841,7 +1074,7 @@ function rcube_xml_command($command, $str_attrib, $a_attrib=NULL) { - global $IMAP, $CONFIG; + global $IMAP, $CONFIG, $OUTPUT; $attrib = array(); $command = strtolower($command); @@ -902,6 +1135,7 @@ 'message' => 'rcmail_message_container', 'messages' => 'rcmail_message_list', 'messagecountdisplay' => 'rcmail_messagecount_display', + 'quotadisplay' => 'rcmail_quota_display', 'messageheaders' => 'rcmail_message_headers', 'messagebody' => 'rcmail_message_body', 'messageattachments' => 'rcmail_message_attachments', @@ -917,6 +1151,8 @@ 'composeattachment' => 'rcmail_compose_attachment_field', 'priorityselector' => 'rcmail_priority_selector', 'charsetselector' => 'rcmail_charset_selector', + 'searchform' => 'rcmail_search_form', + 'receiptcheckbox' => 'rcmail_receipt_checkbox', // ADDRESS BOOK 'addresslist' => 'rcmail_contacts_list', @@ -941,20 +1177,31 @@ // execute object handler function if ($object_handlers[$object] && function_exists($object_handlers[$object])) return call_user_func($object_handlers[$object], $attrib); - + + else if ($object=='productname') + { + $name = !empty($CONFIG['product_name']) ? $CONFIG['product_name'] : 'RoundCube Webmail'; + return rep_specialchars_output($name, 'html', 'all'); + } + else if ($object=='version') + { + return (string)RCMAIL_VERSION; + } else if ($object=='pagetitle') { $task = $GLOBALS['_task']; $title = !empty($CONFIG['product_name']) ? $CONFIG['product_name'].' :: ' : ''; - if ($task=='mail' && isset($GLOBALS['MESSAGE']['subject'])) + if ($task=='login') + $title = rcube_label(array('name' => 'welcome', 'vars' => array('product' => $CONFIG['product_name']))); + else if ($task=='mail' && isset($GLOBALS['MESSAGE']['subject'])) $title .= $GLOBALS['MESSAGE']['subject']; else if (isset($GLOBALS['PAGE_TITLE'])) $title .= $GLOBALS['PAGE_TITLE']; else if ($task=='mail' && ($mbox_name = $IMAP->get_mailbox_name())) - $title .= UTF7DecodeString($mbox_name); + $title .= rcube_charset_convert($mbox_name, 'UTF-7', 'UTF-8'); else - $title .= $task; + $title .= ucfirst($task); return rep_specialchars_output($title, 'html', 'all'); } @@ -969,7 +1216,7 @@ // create and register a button function rcube_button($attrib) { - global $CONFIG, $OUTPUT, $JS_OBJECT_NAME, $BROWSER; + global $CONFIG, $OUTPUT, $JS_OBJECT_NAME, $BROWSER, $COMM_PATH, $MAIN_TASKS; static $sa_buttons = array(); static $s_button_count = 100; @@ -1041,6 +1288,7 @@ // register button in the system if ($attrib['command']) + { $OUTPUT->add_script(sprintf("%s.register_button('%s', '%s', '%s', '%s', '%s', '%s');", $JS_OBJECT_NAME, $command, @@ -1049,6 +1297,11 @@ $attrib['imageact'] ? $skin_path.$attrib['imageact'] : $attrib['classact'], $attirb['imagesel'] ? $skin_path.$attirb['imagesel'] : $attrib['classsel'], $attrib['imageover'] ? $skin_path.$attrib['imageover'] : '')); + + // make valid href to task buttons + if (in_array($attrib['command'], $MAIN_TASKS)) + $attrib['href'] = ereg_replace('_task=[a-z]+', '_task='.$attrib['command'], $COMM_PATH); + } // overwrite attributes if (!$attrib['href']) @@ -1223,25 +1476,30 @@ { global $CONFIG, $sess_user_lang; + $ts = NULL; + if (is_numeric($date)) $ts = $date; else if (!empty($date)) - $ts = strtotime($date); - else + $ts = @strtotime($date); + + if (empty($ts)) return ''; + + // get user's timezone + $tz = $CONFIG['timezone']; + if ($CONFIG['dst_active']) + $tz++; // convert time to user's timezone - $timestamp = $ts - date('Z', $ts) + ($CONFIG['timezone'] * 3600); + $timestamp = $ts - date('Z', $ts) + ($tz * 3600); // get current timestamp in user's timezone $now = time(); // local time $now -= (int)date('Z'); // make GMT time - $now += ($CONFIG['timezone'] * 3600); // user's time + $now += ($tz * 3600); // user's time $now_date = getdate(); - //$day_secs = 60*((int)date('H', $now)*60 + (int)date('i', $now)); - //$week_secs = 60 * 60 * 24 * 7; - //$diff = $now - $timestamp; $today_limit = mktime(0, 0, 0, $now_date['mon'], $now_date['mday'], $now_date['year']); $week_limit = mktime(0, 0, 0, $now_date['mon'], $now_date['mday']-6, $now_date['year']); @@ -1353,7 +1611,7 @@ $input_action = new hiddenfield(array('name' => '_action', 'value' => 'login')); $fields = array(); - $fields['user'] = $input_user->show($_POST['_user']); + $fields['user'] = $input_user->show(get_input_value('_user', RCUBE_INPUT_POST)); $fields['pass'] = $input_pass->show(); $fields['action'] = $input_action->show(); @@ -1410,9 +1668,10 @@ } - function rcmail_charset_selector($attrib) { + global $OUTPUT; + // pass the following attributes to the form class $field_attrib = array('name' => '_charset'); foreach ($attrib as $attr => $value) @@ -1421,10 +1680,11 @@ $charsets = array( 'US-ASCII' => 'ASCII (English)', - 'X-EUC-JP' => 'EUC-JP (Japanese)', + 'EUC-JP' => 'EUC-JP (Japanese)', 'EUC-KR' => 'EUC-KR (Korean)', 'BIG5' => 'BIG5 (Chinese)', 'GB2312' => 'GB2312 (Chinese)', + 'ISO-2022-JP' => 'ISO-2022-JP (Japanese)', 'ISO-8859-1' => 'ISO-8859-1 (Latin-1)', 'ISO-8859-2' => 'ISO-8895-2 (Central European)', 'ISO-8859-7' => 'ISO-8859-7 (Greek)', @@ -1440,11 +1700,13 @@ $select = new select($field_attrib); $select->add(array_values($charsets), array_keys($charsets)); - $set = $_POST['_charset'] ? $_POST['_charset'] : $GLOBALS['CHARSET']; + $set = $_POST['_charset'] ? $_POST['_charset'] : $OUTPUT->get_charset(); return $select->show($set); } +/****** debugging function ********/ + function rcube_timer() { list($usec, $sec) = explode(" ", microtime()); -- Gitblit v1.9.1