* This is where the mailboxes are listed. This controls most of what
* goes on in SquirrelMail.
*
- * @copyright © 1999-2007 The SquirrelMail Project Team
+ * @copyright 1999-2020 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
//xdebug_start_profiling("/var/spool/xdebug/right_main.txt");
-
/**
* Include the SquirrelMail initialization file.
*/
$checkall = false;
}
+if (!sqgetGlobalVar('preselected', $preselected, SQ_GET) || !is_array($preselected)) {
+ $preselected = array();
+} else {
+ $preselected = array_keys($preselected);
+}
+
/* future work */
if ( sqgetGlobalVar('account', $account, SQ_GET) ) {
$account = (int) $account;
/* Open an imap connection */
-$imapConnection = sqimap_login($username, false, $imapServerAddress, $imapPort, 0);
+global $imap_stream_options; // in case not defined in config
+$imapConnection = sqimap_login($username, false, $imapServerAddress, $imapPort, 0, $imap_stream_options);
$mailbox = (isset($mailbox) && $mailbox) ? $mailbox : 'INBOX';
/**
* Replace From => To in case it concerns a draft or sent folder
*/
-if (($mailbox == $sent_folder || $mailbox == $draft_folder) &&
- !in_array(SQM_COL_TO,$aMailboxPref[MBX_PREF_COLUMNS])) {
+if (handleAsSent($mailbox)
+ && !in_array(SQM_COL_TO,$aMailboxPref[MBX_PREF_COLUMNS])) {
$aNewOrder = array(); // nice var name ;)
foreach($aMailboxPref[MBX_PREF_COLUMNS] as $iCol) {
if ($iCol == SQM_COL_FROM) {
$sError = handleMessageListForm($imapConnection,$aMailbox);
if ($sError) {
$note = $sError;
+} else if (sqgetGlobalVar('REQUEST_METHOD', $req_method, SQ_SERVER) && $req_method == 'POST') {
+ $preselected = array(); // clear pre-checked checkboxes when action succeeded
}
* If we try to forward messages as attachment we have to open a new window
* in case of compose in new window or redirect to compose.php
*/
+$onload = '';
if (isset($aMailbox['FORWARD_SESSION'])) {
if ($compose_new_win) {
/* add the mailbox to the cache */
$compose_height = '550';
}
// do not use &, it will break the query string and $session will not be detected!!!
- $comp_uri = SM_PATH . 'src/compose.php?mailbox='. urlencode($mailbox).
- '&session='.urlencode($aMailbox['FORWARD_SESSION']);
- displayPageHeader($color, $mailbox, "comp_in_new('$comp_uri', $compose_width, $compose_height);", '');
+ $comp_uri = $base_uri . 'src/compose.php?mailbox='. urlencode($mailbox)
+ . '&session='.urlencode($aMailbox['FORWARD_SESSION']['SESSION_NUMBER'])
+ . '&smaction=forward_as_attachment'
+ . '&fwduid=' . implode('_', $aMailbox['FORWARD_SESSION']['UIDS']);
+ $onload = "comp_in_new('$comp_uri', $compose_width, $compose_height);";
} else {
$mailbox_cache[$account.'_'.$aMailbox['NAME']] = $aMailbox;
sqsession_register($mailbox_cache,'mailbox_cache');
sqsession_register($aMailbox,'aLastSelectedMailbox');
session_write_close();
// we have to redirect to the compose page
- $location = SM_PATH . 'src/compose.php?mailbox='. urlencode($mailbox).
- '&session='.$aMailbox['FORWARD_SESSION'];
+ $location = $base_uri . 'src/compose.php?mailbox='. urlencode($mailbox)
+ . '&session='.$aMailbox['FORWARD_SESSION']['SESSION_NUMBER']
+ . '&smaction=forward_as_attachment'
+ . '&fwduid=' . implode('_', $aMailbox['FORWARD_SESSION']['UIDS']);
header("Location: $location");
exit;
}
-} else {
- displayPageHeader($color, $mailbox);
}
// plugins can operate normally here (don't output anything, of course!),
//
$show_motd = boolean_hook_function('right_main_after_header', $null, 1);
+
+// get "just_logged_in" from PHP session, save it in a temp variable
+// for use below, and reset its value in PHP session
+//
+if (!sqgetGlobalVar('just_logged_in', $just_logged_in, SQ_SESSION))
+ $just_logged_in = false;
+$temp_just_logged_in = $just_logged_in;
+$just_logged_in = false;
+sqsession_register($just_logged_in, 'just_logged_in');
+
+
+// now we're done with the PHP session, can send output to browser
+//
+displayPageHeader($color, $mailbox, $onload);
+
+
/* display a message to the user that their mail has been sent */
if (isset($mail_sent) && $mail_sent == 'yes') {
$note = _("Your mail has been sent.");
}
if (isset($note)) {
- $oTemplate->assign('note', htmlspecialchars($note));
+ $oTemplate->assign('note', sm_encode_html_special_chars($note));
$oTemplate->display('note.tpl');
}
-if (sqgetGlobalVar('just_logged_in', $just_logged_in, SQ_SESSION) || $show_motd) {
- if ($show_motd || $just_logged_in == true) {
- $motd = trim($motd);
- if ($show_motd || strlen($motd) > 0) {
- $oTemplate->assign('motd', $motd);
- $oTemplate->display('motd.tpl');
- }
-
- $just_logged_in = false;
-// FIXME: not likely to happen as SM is designed now, but the $oTemplate->display() above would send headers, therefore the following line would be broken. If $note is enabled by a plugin or any other core changes, this will break, so let's be safe and fix this up (can it be fixed by changing the order of the MOTD and the $note?)
- sqsession_register($just_logged_in, 'just_logged_in');
+if ($temp_just_logged_in || $show_motd) {
+ $motd = trim($motd);
+ if ($show_motd || strlen($motd) > 0) {
+ $oTemplate->assign('motd', $motd);
+ $oTemplate->display('motd.tpl');
}
}
$oTemplate->assign('color', $color);
$oTemplate->assign('align', $align);
$oTemplate->assign('checkall', $checkall);
+ $oTemplate->assign('preselected', $preselected);
+
+ global $show_personal_names;
+ $oTemplate->assign('show_personal_names', $show_personal_names);
+
+ global $accesskey_mailbox_toggle_selected, $accesskey_mailbox_thread;
+ $oTemplate->assign('accesskey_mailbox_toggle_selected', $accesskey_mailbox_toggle_selected);
+ $oTemplate->assign('accesskey_mailbox_thread', $accesskey_mailbox_thread);
$oTemplate->display('message_list.tpl');