<?php
/**
* move_messages.php
*
* Enables message moving between folders on the IMAP server.
*
* @copyright 1999-2020 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id: move_messages.php 14840 2020年01月07日 07:42:38Z pdontthink $
* @package squirrelmail
*/
/** This is the move_messages page */
define ('PAGE_NAME', 'move_messages');
/* Path for SquirrelMail required files. */
/* SquirrelMail required files. */
require_once(SM_PATH . 'include/validate.php');
require_once(SM_PATH . 'functions/global.php');
require_once(SM_PATH . 'functions/display_messages.php');
require_once(SM_PATH . 'functions/imap.php');
require_once(SM_PATH . 'functions/html.php');
global $compose_new_win;
$composesession = 0;
}
if (!$composesession) {
$composesession = 1;
} else {
$composesession++;
}
$hashed_attachment_dir =
getHashedDir ($username, $attachment_dir, $composesession);
if ($thread_sort_messages || $allow_server_sort) {
$start_index=0;
} else {
$start_index = ($startMessage-1) * $show_num;
}
$i = 0;
$j = 0;
$hashed_attachment_dir =
getHashedDir ($username, $attachment_dir);
$composeMessage->rfc822_header = $rfc822_header;
$composeMessage->reply_rfc822_header = '';
while ($j <
count ($msg)) {
if (isset($msg[$i])) {
$id = $msg[$i];
$body_a =
sqimap_run_command ($imapConnection, "FETCH $id RFC822",true, $response, $readmessage, $uid_support);
if ($response == 'OK') {
// fetch the subject for the message from the object
//
$subject = $message->rfc822_header->subject;
// use subject for file name
//
if ( empty($subject) )
$filename = "untitled-".$message->entity_id;
else
$filename = $subject;
$filename .= '.eml';
// figure out a subject for new message
//
$subject =
trim ($subject);
$subject = 'Fwd: ' . $subject;
}
$body .= "\r\n";
$full_localfilename = "$hashed_attachment_dir/$localfilename";
$full_localfilename = "$hashed_attachment_dir/$localfilename";
}
$fp =
fopen ( $full_localfilename, 'wb');
$composeMessage->initAttachment('message/rfc822',$filename,
$localfilename);
$composeMessage->rfc822_header->subject = $subject;
}
$j++;
}
$i++;
}
if (!isset($compose_messages)
$compose_messages = array();
}
$compose_messages[$composesession] = $composeMessage;
return $composesession;
}
/* get globals */
$submitted_token = '';
}
/* end of get globals */
// security check
global $imap_stream_options; // in case not defined in config
$imapConnection =
sqimap_login ($username, $key, $imapServerAddress, $imapPort, 0, $imap_stream_options);
$location =
set_url_var ($location,'composenew',0,false);
$location =
set_url_var ($location,'composesession',0,false);
$location =
set_url_var ($location,'preselected',NULL,false,true);
// make sure that cache is not used
$location =
set_url_var ($location,'use_mailbox_cache',0,false);
/* remember changes to mailbox setting */
if (!isset($lastTargetMailbox)) {
$lastTargetMailbox = 'INBOX';
}
if ($targetMailbox != $lastTargetMailbox) {
$lastTargetMailbox = $targetMailbox;
}
$exception = false;
/*
Move msg list sorting up here, as it is used several times,
makes it more efficient to do it in one place for the code
*/
$id = array();
foreach( $msg as $key=>$uid ) {
// using foreach removes the risk of infinite loops that was there //
$id[] = $uid;
}
}
// expunge-on-demand if user isn't using move_to_trash or auto_expunge
if(isset($expungeButton)) {
if (($startMessage+$cnt-1) >= $mbx_response['EXISTS']) {
if ($startMessage > $show_num) {
$location =
set_url_var ($location,'startMessage',$startMessage-
$show_num,false);
} else {
$location =
set_url_var ($location,'startMessage',1,false);
}
}
} elseif(isset($undeleteButton)) {
// undelete messages if user isn't using move_to_trash or auto_expunge
// Removes \Deleted flag from selected messages
} else {
$exception = true;
}
} elseif (!isset($moveButton)) {
if (!isset($attache)) {
if (isset($markRead)) {
} else if (isset($markUnread)) {
} else {
if ($auto_expunge) {
}
if (($startMessage+$cnt-1) >= $mbx_response['EXISTS']) {
if ($startMessage > $show_num) {
$location =
set_url_var ($location,'startMessage',$startMessage-
$show_num, false);
} else {
$location =
set_url_var ($location,'startMessage',1, false);
}
}
}
} else {
$location =
set_url_var ($location, 'session', $composesession, false);
$location =
set_url_var ($location, 'forward_as_attachment_init', 1, false);
if ($compose_new_win) {
$location =
set_url_var ($location, 'composenew', 1, false);
} else {
$location =
str_replace ('search.php','compose.php',$location);
$location =
str_replace ('right_main.php','compose.php',$location);
}
}
} else {
$exception = true;
}
} else { // Move messages
// move messages only when target mailbox is not the same as source mailbox
if ($mailbox!=$targetMailbox) {
if ($auto_expunge) {
} else {
$cnt = 0;
}
if (($startMessage+$cnt-1) >= $mbx_response['EXISTS']) {
if ($startMessage > $show_num) {
$location =
set_url_var ($location,'startMessage',$startMessage-
$show_num, false);
} else {
$location =
set_url_var ($location,'startMessage',1, false);
}
}
}
} else {
$exception = true;
}
}
// Log out this session
if ($exception) {
error_message (_ ("No messages were selected."), $mailbox, $sort, $startMessage, $color);
} else {
header ("Location: $location");
exit;
}
?>
</body></html>