From a403cdacf07656c0bbeb2c6bf00557070ef826ba Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Tue, 04 Apr 2006 17:40:13 -0400 Subject: [PATCH] Added Lithuanian localization --- program/include/main.inc | 134 ++++++++++++++++++++++++++++++++++---------- 1 files changed, 102 insertions(+), 32 deletions(-) diff --git a/program/include/main.inc b/program/include/main.inc index 06d4d7b..0d1b27e 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -24,6 +24,12 @@ 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 function rcmail_startup($task='mail') { @@ -66,12 +72,14 @@ // 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)) + if ($CONFIG['db_backend']!='mdb2' && !$DB->is_error()) include_once('include/session.inc'); @@ -79,7 +87,6 @@ session_start(); $sess_id = session_id(); - $_SESSION['user_lang'] = rcube_language_prop($CONFIG['locale_string']); // create session and set session vars if (!$_SESSION['client_id']) { @@ -308,11 +315,12 @@ $OUTPUT->include_script('program/js/common.js'); $OUTPUT->include_script('program/js/app.js'); + // set locale setting + rcmail_set_locale($sess_user_lang); + // set user-selected charset if (!empty($CONFIG['charset'])) $OUTPUT->set_charset($CONFIG['charset']); - else - rcmail_set_locale($sess_user_lang); // add some basic label to client rcube_add_label('loading'); @@ -351,7 +359,7 @@ if ($MBSTRING && function_exists("mb_language")) { - if (!mb_language(strtok($lang, "_"))) + if (!@mb_language(strtok($lang, "_"))) $MBSTRING = FALSE; // unsupport language } @@ -376,6 +384,8 @@ $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']; // query if user already registered $sql_result = $DB->query("SELECT user_id, username, language, preferences @@ -470,10 +480,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; @@ -501,14 +511,6 @@ // 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 { @@ -611,13 +613,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) @@ -662,6 +664,7 @@ // 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) @@ -673,7 +676,7 @@ } // send response code - print rcube_charset_convert($js_code, 'UTF-8', $GLOBALS['CHARSET']); + print rcube_charset_convert($js_code, $CHARSET, $OUTPUT->get_charset()); if ($flush) // flush the output buffer flush(); @@ -888,7 +891,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') @@ -897,6 +905,49 @@ // 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($_GET[$fname])) + $value = $_GET[$fname]; + else if (isset($_POST[$fname])) + $value = $_POST[$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 + return rcube_charset_convert($value, $OUTPUT->get_charset(), $charset); + } + @@ -1048,6 +1099,7 @@ 'composeattachment' => 'rcmail_compose_attachment_field', 'priorityselector' => 'rcmail_priority_selector', 'charsetselector' => 'rcmail_charset_selector', + 'searchform' => 'rcmail_search_form', // ADDRESS BOOK 'addresslist' => 'rcmail_contacts_list', @@ -1072,7 +1124,12 @@ // 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=='pagetitle') { $task = $GLOBALS['_task']; @@ -1100,7 +1157,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; @@ -1172,6 +1229,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, @@ -1180,6 +1238,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']) @@ -1354,25 +1417,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']); @@ -1484,7 +1552,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(); @@ -1543,6 +1611,8 @@ 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) @@ -1571,7 +1641,7 @@ $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); } -- Gitblit v1.9.1