From ed5d29f4b3c57235594931d33dde7cccaf7cd58b Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Thu, 25 May 2006 14:25:04 -0400 Subject: [PATCH] Finalized GoogieSpell integration --- program/include/main.inc | 131 ++++++++++++++++++++++++++++++++----------- 1 files changed, 98 insertions(+), 33 deletions(-) diff --git a/program/include/main.inc b/program/include/main.inc index d3ee5e9..b68a0c2 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -76,17 +76,15 @@ $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' && !$DB->is_error()) + if (!$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']) { @@ -113,7 +111,6 @@ // set current task to session $_SESSION['task'] = $task; - // create IMAP object if ($task=='mail') @@ -189,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']); } @@ -219,10 +215,19 @@ // 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(); } @@ -308,12 +313,19 @@ $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); @@ -386,6 +398,20 @@ } 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 @@ -603,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) { @@ -613,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) @@ -671,7 +720,7 @@ { $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"; } @@ -928,10 +977,10 @@ $value = $_POST[$fname]; else if ($source==RCUBE_INPUT_GPC) { - if (isset($_GET[$fname])) - $value = $_GET[$fname]; - else if (isset($_POST[$fname])) + if (isset($_POST[$fname])) $value = $_POST[$fname]; + else if (isset($_GET[$fname])) + $value = $_GET[$fname]; else if (isset($_COOKIE[$fname])) $value = $_COOKIE[$fname]; } @@ -945,7 +994,10 @@ $value = strip_tags($value); // convert to internal charset - return rcube_charset_convert($value, $OUTPUT->get_charset(), $charset); + if (is_object($OUTPUT)) + return rcube_charset_convert($value, $OUTPUT->get_charset(), $charset); + else + return $value; } @@ -1099,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', @@ -1129,19 +1183,25 @@ $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 .= rcube_charset_convert($mbox_name, 'UTF-7', 'UTF-8'); else - $title .= $task; + $title .= ucfirst($task); return rep_specialchars_output($title, 'html', 'all'); } @@ -1169,7 +1229,7 @@ if ($attrib['type']) $attrib['type'] = strtolower($attrib['type']); else - $attrib['type'] = ($attrib['image'] || $attrib['imagepas'] || $arg['imagect']) ? 'image' : 'link'; + $attrib['type'] = ($attrib['image'] || $attrib['imagepas'] || $arg['imageact']) ? 'image' : 'link'; $command = $attrib['command']; @@ -1179,7 +1239,7 @@ $attrib = $sa_buttons[$attrib['name']]; // add button to button stack - else if($attrib['image'] || $arg['imagect'] || $attrib['imagepas'] || $attrib['class']) + else if($attrib['image'] || $arg['imageact'] || $attrib['imagepas'] || $attrib['class']) { if(!$attrib['name']) $attrib['name'] = $command; @@ -1416,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']); -- Gitblit v1.9.1