From 6c76c91951d259f59b2b7a42b8fe895dcc0ef21b Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Wed, 23 Aug 2006 17:36:37 -0400 Subject: [PATCH] Updated Polish, Portuguese, Latvian, Chinese and Japanese localization --- program/include/main.inc | 163 ++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 114 insertions(+), 49 deletions(-) diff --git a/program/include/main.inc b/program/include/main.inc index ef2ecbf..1a2b8c7 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -170,9 +170,9 @@ { $now = mktime(); $valid = ($_COOKIE['sessauth'] == rcmail_auth_hash(session_id(), $_SESSION['auth_time'])); - - // renew auth cookie every 5 minutes - if (!$valid || ($now-$_SESSION['auth_time'] > 300)) + + // renew auth cookie every 5 minutes (only for GET requests) + if (!$valid || ($_SERVER['REQUEST_METHOD']!='POST' && $now-$_SESSION['auth_time'] > 300)) { $_SESSION['auth_time'] = $now; setcookie('sessauth', rcmail_auth_hash(session_id(), $now)); @@ -205,9 +205,6 @@ if ($CONFIG['enable_caching']===TRUE) $IMAP->set_caching(TRUE); - if (is_array($CONFIG['default_imap_folders'])) - $IMAP->set_default_mailboxes($CONFIG['default_imap_folders']); - // set pagesize from config if (isset($CONFIG['pagesize'])) $IMAP->set_pagesize($CONFIG['pagesize']); @@ -223,6 +220,9 @@ // set root dir from config if (!empty($CONFIG['imap_root'])) $IMAP->set_rootdir($CONFIG['imap_root']); + + if (is_array($CONFIG['default_imap_folders'])) + $IMAP->set_default_mailboxes($CONFIG['default_imap_folders']); if (!empty($_SESSION['mbox'])) $IMAP->set_mailbox($_SESSION['mbox']); @@ -439,12 +439,12 @@ Inspired by Marco <P0L0_notspam_binware.org> */ // Check if we need to add domain - if ($CONFIG['username_domain'] && !strstr($user, '@')) + if (!empty($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']; + else if (is_string($CONFIG['username_domain'])) + $user .= '@'.$CONFIG['username_domain']; } @@ -510,8 +510,10 @@ $_SESSION['user_lang'] = $sess_user_lang; $_SESSION['password'] = encrypt_passwd($pass); - // force reloading complete list of subscribed mailboxes + // force reloading complete list of subscribed mailboxes + rcmail_set_imap_prop(); $IMAP->clear_cache('mailboxes'); + $IMAP->create_default_folders(); return TRUE; } @@ -541,12 +543,14 @@ if ($user_id = $DB->insert_id(get_sequence_name('users'))) { - if (is_array($CONFIG['mail_domain']) && isset($CONFIG['mail_domain'][$host])) - $mail_domain = $CONFIG['mail_domain'][$host]; + $mail_domain = $host; + if (is_array($CONFIG['mail_domain'])) + { + if (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; if ($user_email=='') $user_email = strstr($user, '@') ? $user : sprintf('%s@%s', $user, $mail_domain); @@ -703,31 +707,17 @@ $framed = $GLOBALS['_framed']; $command = sprintf("display_message('%s', '%s');", - addslashes(rep_specialchars_output(rcube_label(array('name' => $message, 'vars' => $vars)))), + rep_specialchars_output(rcube_label(array('name' => $message, 'vars' => $vars)), 'js'), $type); if ($REMOTE_REQUEST) return 'this.'.$command; else - $OUTPUT->add_script(sprintf("%s%s.%s", + $OUTPUT->add_script(sprintf("%s%s.%s\n", $framed ? sprintf('if(parent.%s)parent.', $JS_OBJECT_NAME) : '', $JS_OBJECT_NAME, $command)); - - // console(rcube_label($message)); - } - - -function console($msg, $type=1) - { - if ($GLOBALS['REMOTE_REQUEST']) - print "// $msg\n"; - else - { - print $msg; - print "\n<hr>\n"; - } } @@ -784,6 +774,19 @@ flush(); else // terminate script exit; + } + + +// send correctly formatted response for a request posted to an iframe +function rcube_iframe_response($js_code='') + { + global $OUTPUT, $JS_OBJECT_NAME; + + if (!empty($js_code)) + $OUTPUT->add_script("if(parent.$JS_OBJECT_NAME){\n" . $js_code . "\n}"); + + $OUTPUT->write(); + exit; } @@ -892,7 +895,7 @@ // 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')) + else if (($from=='ISO-8859-1') && function_exists('utf8_encode')) $str = utf8_encode($str); else if ($from!='UTF-8') { @@ -902,7 +905,7 @@ // encode string for output if ($to=='UTF-7') - return UTF7EncodeString($str); + return UTF7EncodeString(rcube_charset_convert($str, 'UTF-8', 'ISO-8859-1')); else if ($to=='ISO-8859-1' && function_exists('utf8_decode')) return utf8_decode($str); else if ($to!='UTF-8') @@ -997,7 +1000,7 @@ 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)); + return addslashes(preg_replace(array("/\r\n/", "/\r/"), array('\n', '\n'), strtr($str, $js_rep_table))); } // encode for RTF @@ -1125,21 +1128,12 @@ } -function rcube_xml_command($command, $str_attrib, $a_attrib=NULL) +function rcube_xml_command($command, $str_attrib, $add_attrib=array()) { global $IMAP, $CONFIG, $OUTPUT; - $attrib = array(); $command = strtolower($command); - - preg_match_all('/\s*([-_a-z]+)=["]([^"]+)["]?/i', stripslashes($str_attrib), $regs, PREG_SET_ORDER); - - // convert attributes to an associative array (name => value) - if ($regs) - foreach ($regs as $attr) - $attrib[strtolower($attr[1])] = $attr[2]; - else if ($a_attrib) - $attrib = $a_attrib; + $attrib = parse_attrib_string($str_attrib) + $add_attrib; // execute command switch ($command) @@ -1223,7 +1217,7 @@ 'identityform' => 'rcube_identity_form', 'foldersubscription' => 'rcube_subscription_form', 'createfolder' => 'rcube_create_folder_form', - 'renamefolder' => 'rcube_rename_folder_form', + 'renamefolder' => 'rcube_rename_folder_form', 'composebody' => 'rcmail_compose_body' ); @@ -1273,6 +1267,9 @@ global $CONFIG, $OUTPUT, $JS_OBJECT_NAME, $BROWSER, $COMM_PATH, $MAIN_TASKS; static $sa_buttons = array(); static $s_button_count = 100; + + // these commands can be called directly via url + $a_static_commands = array('compose', 'list'); $skin_path = $CONFIG['skin_path']; @@ -1352,9 +1349,11 @@ $attrib['imagesel'] ? $skin_path.$attrib['imagesel'] : $attrib['classsel'], $attrib['imageover'] ? $skin_path.$attrib['imageover'] : '')); - // make valid href to task buttons + // make valid href to specific buttons if (in_array($attrib['command'], $MAIN_TASKS)) - $attrib['href'] = ereg_replace('_task=[a-z]+', '_task='.$attrib['command'], $COMM_PATH); + $attrib['href'] = htmlentities(ereg_replace('_task=[a-z]+', '_task='.$attrib['command'], $COMM_PATH)); + else if (in_array($attrib['command'], $a_static_commands)) + $attrib['href'] = htmlentities($COMM_PATH.'&_action='.$attrib['command']); } // overwrite attributes @@ -1518,17 +1517,32 @@ } +// compose a valid attribute string for HTML tags function create_attrib_string($attrib, $allowed_attribs=array('id', 'class', 'style')) { // allow the following attributes to be added to the <iframe> tag $attrib_str = ''; foreach ($allowed_attribs as $a) if (isset($attrib[$a])) - $attrib_str .= sprintf(' %s="%s"', $a, $attrib[$a]); + $attrib_str .= sprintf(' %s="%s"', $a, str_replace('"', '"', $attrib[$a])); return $attrib_str; } + +// convert a HTML attribute string attributes to an associative array (name => value) +function parse_attrib_string($str) + { + $attrib = array(); + preg_match_all('/\s*([-_a-z]+)=["]([^"]+)["]?/i', stripslashes($str), $regs, PREG_SET_ORDER); + + // convert attributes to an associative array (name => value) + if ($regs) + foreach ($regs as $attr) + $attrib[strtolower($attr[1])] = $attr[2]; + + return $attrib; + } function format_date($date, $format=NULL) @@ -1764,7 +1778,58 @@ } -/****** debugging function ********/ +/****** debugging functions ********/ + + +/** + * Print or write debug messages + * + * @param mixed Debug message or data + */ +function console($msg) + { + if (!is_string($msg)) + $msg = var_export($msg, true); + + if (!($GLOBALS['CONFIG']['debug_level'] & 4)) + write_log('console', $msg); + else if ($GLOBALS['REMOTE_REQUEST']) + print "/*\n $msg \n*/\n"; + else + { + print '<div style="background:#eee; border:1px solid #ccc; margin-bottom:3px; padding:6px"><pre>'; + print $msg; + print "</pre></div>\n"; + } + } + + +/** + * Append a line to a logfile in the logs directory. + * Date will be added automatically to the line. + * + * @param $name Name of logfile + * @param $line Line to append + */ +function write_log($name, $line) + { + global $CONFIG; + + $log_entry = sprintf("[%s]: %s\n", + date("d-M-Y H:i:s O", mktime()), + $line); + + if (empty($CONFIG['log_dir'])) + $CONFIG['log_dir'] = $INSTALL_PATH.'logs'; + + // try to open specific log file for writing + if ($fp = @fopen($CONFIG['log_dir'].'/'.$name, 'a')) + { + fwrite($fp, $log_entry); + fclose($fp); + } + } + function rcube_timer() { -- Gitblit v1.9.1