X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fcompose.php;h=27a8ccf091690247eda290d1f3292b09e1320f6a;hb=6c766fd5dccb5a7f87a97b7a0c2e0f5598ee1c8d;hp=082af4d616cdfaa0b8c7ff1190d35987b602a391;hpb=5628fdde05c1b41eb32e1d6bb4274108c4284c5d;p=squirrelmail.git diff --git a/src/compose.php b/src/compose.php index 082af4d6..27a8ccf0 100644 --- a/src/compose.php +++ b/src/compose.php @@ -25,12 +25,83 @@ require_once(SM_PATH . 'include/validate.php'); require_once(SM_PATH . 'functions/imap.php'); require_once(SM_PATH . 'functions/date.php'); require_once(SM_PATH . 'functions/mime.php'); -//require_once(SM_PATH . 'functions/smtp.php'); require_once(SM_PATH . 'functions/plugin.php'); require_once(SM_PATH . 'functions/display_messages.php'); require_once(SM_PATH . 'class/deliver/Deliver.class.php'); +/* --------------------- Get globals ------------------------------------- */ +$username = $_SESSION['username']; +$onetimepad = $_SESSION['onetimepad']; +$base_uri = $_SESSION['base_uri']; +$delimiter = $_SESSION['delimiter']; + +if (isset($_POST['return'])) { + $html_addr_search_done = 'Use Addresses'; +} +if ( isset($_SESSION['composesession']) ) { + $composesession = $_SESSION['composesession']; +} +sqextractGlobalVar('action'); +sqextractGlobalVar('session'); +sqextractGlobalVar('mailbox'); +sqextractGlobalVar('identity'); +sqextractGlobalVar('send_to'); +sqextractGlobalVar('send_to_cc'); +sqextractGlobalVar('send_to_bcc'); +sqextractGlobalVar('subject'); +sqextractGlobalVar('body'); +sqextractGlobalVar('mailprio'); +sqextractGlobalVar('request_mdn'); +sqextractGlobalVar('request_dr'); +sqextractGlobalVar('html_addr_search'); +sqextractGlobalVar('mail_sent'); +sqextractGlobalVar('passed_id'); +sqextractGlobalVar('passed_ent_id'); +sqextractGlobalVar('send'); + +if ( isset($_POST['sigappend']) ) { + $sigappend = $_POST['sigappend']; +} +/* From addressbook search */ +if ( isset($_POST['from_htmladdr_search']) ) { + $from_htmladdr_search = $_POST['from_htmladdr_search']; +} +if ( isset($_POST['addr_search_done']) ) { + $html_addr_search_done = $_POST['addr_search_done']; +} +if ( isset($_POST['send_to_search']) ) { + $send_to_search = &$_POST['send_to_search']; +} + +/* Attachments */ +sqextractGlobalVar('attach'); +if ( isset($_POST['do_delete']) ) { + $do_delete = $_POST['do_delete']; +} +if ( isset($_POST['delete']) ) { + $delete = &$_POST['delete']; +} +if ( isset($_SESSION['compose_messages']) ) { + $compose_messages = &$_SESSION['compose_messages']; +} + + +/* Forward message as attachment */ +if ( isset($_GET['attachedmessages']) ) { + $attachedmessages = $_GET['attachedmessages']; +} + +/* Drafts */ +sqextractGlobalVar('draft'); +sqextractGlobalVar('draft_id'); +sqextractGlobalVar('ent_num'); +sqextractGlobalVar('saved_draft'); +sqextractGlobalVar('delete_draft'); + +$key = $_COOKIE['key']; + /* --------------------- Specific Functions ------------------------------ */ + function replyAllString($header) { global $include_self_reply_all, $username, $data_dir; $excl_arr = array(); @@ -118,15 +189,16 @@ function getforwardHeader($orig_header) { * vars. */ //$session_expired = false; -if (session_is_registered('session_expired_post')) { +sqsession_unregister('session_expired_post'); +if (false && sqsession_is_registered('session_expired_post')) { global $session_expired_post, $session_expired; /* * extra check for username so we don't display previous post data from * another user during this session. */ if ($session_expired_post['username'] != $username) { - session_unregister('session_expired_post'); - session_unregister('session_expired'); + sqsession_unregister('session_expired_post'); + sqsession_unregister('session_expired'); } else { foreach ($session_expired_post as $postvar => $val) { if (isset($val)) { @@ -140,11 +212,12 @@ if (session_is_registered('session_expired_post')) { } $session_expired = true; } - session_unregister('session_expired_post'); - session_unregister('session_expired'); + sqsession_unregister('session_expired_post'); + sqsession_unregister('session_expired'); if (!isset($mailbox)) { $mailbox = ''; } + if ($compose_new_win == '1') { compose_Header($color, $mailbox); } else { @@ -153,13 +226,13 @@ if (session_is_registered('session_expired_post')) { showInputForm($session, false); exit(); } - if (!isset($composesession)) { $composesession = 0; sqsession_register(0,'composesession'); } if (!isset($session) || (isset($newmessage) && $newmessage)) { + sqsession_unregister('composesession'); $session = "$composesession" +1; $composesession = $session; sqsession_register($composesession,'composesession'); @@ -184,15 +257,13 @@ if (!isset($mailbox) || $mailbox == '' || ($mailbox == 'None')) { $mailbox = 'INBOX'; } -if (isset($draft)) { - /* - * Set $default_charset to correspond with the user's selection - * of language interface. - */ - set_my_charset(); - $composeMessage=$compose_messages[$session]; - $Result = sendMessage($composeMessage, true); - +if ($draft) { + /* + * Set $default_charset to correspond with the user's selection + * of language interface. + */ + set_my_charset(); + $composeMessage=$compose_messages[$session]; if (! sendMessage($composeMessage, true)) { showInputForm($session); exit(); @@ -218,10 +289,10 @@ if (isset($draft)) { } } -if (isset($send)) { - if (isset($HTTP_POST_FILES['attachfile']) && - $HTTP_POST_FILES['attachfile']['tmp_name'] && - $HTTP_POST_FILES['attachfile']['tmp_name'] != 'none') { +if ($send) { + if (isset($_FILES['attachfile']) && + $_FILES['attachfile']['tmp_name'] && + $_FILES['attachfile']['tmp_name'] != 'none') { $AttachFailure = saveAttachedFiles($session); } if (checkInput(false) && !isset($AttachFailure)) { @@ -262,6 +333,7 @@ if (isset($send)) { $body = $newBody; do_hook('compose_send'); $composeMessage=$compose_messages[$session]; + $Result = sendMessage($composeMessage); if (! $Result) { showInputForm($session); @@ -280,10 +352,6 @@ if (isset($send)) { "&startMessage=1"); } } else { - /* - *$imapConnection = sqimap_login($username, $key, $imapServerAddress, - * $imapPort, 0); - */ if ($compose_new_win == '1') { compose_Header($color, $mailbox); } @@ -330,10 +398,10 @@ if (isset($send)) { } showInputForm($session); } elseif (isset($html_addr_search)) { - if (isset($HTTP_POST_FILES['attachfile']) && - $HTTP_POST_FILES['attachfile']['tmp_name'] && - $HTTP_POST_FILES['attachfile']['tmp_name'] != 'none') { - if (saveAttachedFiles($session)) { + if (isset($_FILES['attachfile']) && + $_FILES['attachfile']['tmp_name'] && + $_FILES['attachfile']['tmp_name'] != 'none') { + if(saveAttachedFiles($session)) { plain_error_message(_("Could not move/copy file. File not attached"), $color); } } @@ -575,6 +643,7 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se $body = getforwardHeader($orig_header) . $body; sqUnWordWrap($body); $composeMessage = getAttachments($message, $composeMessage, $passed_id, $entities, $imapConnection); + $body = "\n" . $body; break; case ('forward_as_attachment'): $composeMessage = getMessage_RFC822_Attachment($message, $composeMessage, $passed_id, $passed_ent_id, $imapConnection); @@ -597,16 +666,18 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se } /* this corrects some wrapping/quoting problems on replies */ $rewrap_body = explode("\n", $body); - - $body = getReplyCitation($orig_header->from->personal); + $from = (is_array($orig_header->from)) ? + $orig_header->from[0] : $orig_header->from; + $body = getReplyCitation($from->getAddress(false)); + sqUnWordWrap($body); $cnt = count($rewrap_body); for ($i=0;$i<$cnt;$i++) { - // sqWordWrap($rewrap_body[$i], ($editor_size - 2)); + sqWordWrap($rewrap_body[$i], ($editor_size)); if (preg_match("/^(>+)/", $rewrap_body[$i], $matches)) { $gt = $matches[1]; - $body .= '>' . str_replace("\n", "\n$gt ", $rewrap_body[$i]) ."\n"; + $body .= '>' . str_replace("\n", "\n>$gt ", rtrim($rewrap_body[$i])) ."\n"; } else { - $body .= '> ' . $rewrap_body[$i] . "\n"; + $body .= '> ' . str_replace("\n", "\n> ", rtrim($rewrap_body[$i])) . "\n"; } unset($rewrap_body[$i]); } @@ -756,7 +827,6 @@ function showInputForm ($session, $values=false) { echo "\n" . '
\n"; @@ -854,6 +924,7 @@ function showInputForm ($session, $values=false) { if ($location_of_buttons == 'between') { showComposeButtonRow(); } + if ($compose_new_win == '1') { echo ' ' . "\n" . ' ' . "\n" . @@ -919,7 +990,8 @@ function showInputForm ($session, $values=false) { $s_a = array(); - foreach ($composeMessage->entities as $key => $attachment) { + if ($composeMessage->entities) { + foreach ($composeMessage->entities as $key => $attachment) { $attached_file = $attachment->att_local_name; if ($attachment->att_local_name || $attachment->body_part) { $attached_filename = decodeHeader($attachment->mime_header->getParameter('name')); @@ -930,6 +1002,7 @@ function showInputForm ($session, $values=false) { ' ('.show_readable_size( filesize( $attached_file ) ) . ')
'."\n"; } + } } if (count($s_a)) { foreach ($s_a as $s) { @@ -951,8 +1024,8 @@ function showInputForm ($session, $values=false) { '\n" . '\n" . - '
'; + "\">\n"; + echo ''; do_hook('compose_bottom'); echo '' . "\n"; } @@ -1005,7 +1078,7 @@ function showComposeButtonRow() { echo '\n"; } - echo "\n \n"; + echo '\n"; do_hook('compose_button_row'); echo " \n\n"; @@ -1032,9 +1105,14 @@ function checkInput ($show) { /* True if FAILURE */ function saveAttachedFiles($session) { - global $HTTP_POST_FILES, $attachment_dir, $attachments, $username, + global $_FILES, $attachment_dir, $attachments, $username, $data_dir, $compose_messages; + /* get out of here if no file was attached at all */ + if (! is_uploaded_file($_FILES['attachfile']['tmp_name']) ) { + return true; + } + $hashed_attachment_dir = getHashedDir($username, $attachment_dir); $localfilename = GenerateRandomString(32, '', 7); $full_localfilename = "$hashed_attachment_dir/$localfilename"; @@ -1043,20 +1121,20 @@ function saveAttachedFiles($session) { $full_localfilename = "$hashed_attachment_dir/$localfilename"; } - if (!@rename($HTTP_POST_FILES['attachfile']['tmp_name'], $full_localfilename)) { + if (!@rename($_FILES['attachfile']['tmp_name'], $full_localfilename)) { if (function_exists("move_uploaded_file")) { - if (!@move_uploaded_file($HTTP_POST_FILES['attachfile']['tmp_name'], $full_localfilename)) { + if (!@move_uploaded_file($_FILES['attachfile']['tmp_name'],$full_localfilename)) { return true; } } else { - if (!@copy($HTTP_POST_FILES['attachfile']['tmp_name'], $full_localfilename)) { + if (!@copy($_FILES['attachfile']['tmp_name'], $full_localfilename)) { return true; } } } $message = $compose_messages[$session]; - $type = strtolower($HTTP_POST_FILES['attachfile']['type']); - $name = $HTTP_POST_FILES['attachfile']['name']; + $type = strtolower($_FILES['attachfile']['type']); + $name = $_FILES['attachfile']['name']; $message->initAttachment($type, $name, $full_localfilename); $compose_messages[$session] = $message; } @@ -1235,17 +1313,20 @@ function sendMessage($composeMessage, $draft=false) { $imap_stream = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0); if (sqimap_mailbox_exists ($imap_stream, $draft_folder)) { - require_once(SM_PATH . 'class/deliver/Deliver_IMAP.class.php'); - $imap_deliver = new Deliver_IMAP(); - $length = $imap_deliver->mail($composeMessage); - sqimap_append ($imap_stream, $draft_folder, $length); - $imap_deliver->mail($composeMessage, $imap_stream); - sqimap_append_done ($imap_stream); - sqimap_logout($imap_stream); - unset ($imap_deliver); - + require_once(SM_PATH . 'class/deliver/Deliver_IMAP.class.php'); + $imap_deliver = new Deliver_IMAP(); + $length = $imap_deliver->mail($composeMessage); + sqimap_append ($imap_stream, $draft_folder, $length); + $imap_deliver->mail($composeMessage, $imap_stream); + sqimap_append_done ($imap_stream); + sqimap_logout($imap_stream); + unset ($imap_deliver); + return $length; + } else { + $msg = '
Error: '._("Draft folder")." $draft_folder" . ' does not exist.'; + plain_error_message($msg, $color); + return false; } - return $length; } $succes = false; if ($stream) {