| | |
| | | $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()) |
| | | include_once('include/session.inc'); |
| | | |
| | | |
| | | // init session |
| | | session_start(); |
| | | $sess_id = session_id(); |
| | | |
| | | |
| | | // create session and set session vars |
| | | if (!$_SESSION['client_id']) |
| | | { |
| | |
| | | |
| | | // set current task to session |
| | | $_SESSION['task'] = $task; |
| | | |
| | | |
| | | // create IMAP object |
| | | if ($task=='mail') |
| | |
| | | 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']); |
| | | } |
| | |
| | | // 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(); |
| | | } |
| | |
| | | $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); |
| | |
| | | } |
| | | 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 |
| | |
| | | } |
| | | |
| | | |
| | | 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) |
| | | { |
| | |
| | | } |
| | | |
| | | |
| | | 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) |
| | |
| | | { |
| | | $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"; |
| | | } |
| | | |
| | |
| | | $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]; |
| | | } |
| | |
| | | $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; |
| | | } |
| | | |
| | | |
| | |
| | | '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', |
| | |
| | | $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'); |
| | | } |
| | |
| | | { |
| | | 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']); |
| | | |