* This file is used for reading the msgs array and displaying
* the resulting emails in the right frame.
*
- * @copyright © 1999-2006 The SquirrelMail Project Team
+ * @copyright © 1999-2007 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
*/
+/** This is the read_body page */
+define('PAGE_NAME', 'read_body');
+
/**
* Include the SquirrelMail initialization file.
*/
require_once(SM_PATH . 'functions/mailbox_display.php');
require_once(SM_PATH . 'functions/forms.php');
require_once(SM_PATH . 'functions/attachment_common.php');
+require_once(SM_PATH . 'functions/compose.php');
/**
* Given an IMAP message id number, this will look it up in the cached
in_array('\\*',$aFlags,true) ) ;
}
-function SendMDN ( $mailbox, $passed_id, $sender, $message, $imapConnection) {
- global $username, $attachment_dir, $popuser, $username, $color,
- $version, $squirrelmail_language, $default_charset,
+function SendMDN ( $mailbox, $passed_id, $message, $imapConnection) {
+ global $squirrelmail_language, $default_charset,
$languages, $useSendmail, $domain, $sent_folder;
sqgetGlobalVar('SERVER_NAME', $SERVER_NAME, SQ_SERVER);
}
$rfc822_header->content_type = $content_type;
$rfc822_header->to[] = $header->dnt;
- $rfc822_header->subject = _("Read:") . ' ' . encodeHeader($header->subject);
-
- // Patch #793504 Return Receipt Failing with <@> from Tim Craig (burny_md)
- // This merely comes from compose.php and only happens when there is no
- // email_addr specified in user's identity (which is the startup config)
- if (ereg("^([^@%/]+)[@%/](.+)$", $username, $usernamedata)) {
- $popuser = $usernamedata[1];
- $domain = $usernamedata[2];
- unset($usernamedata);
- } else {
- $popuser = $username;
- }
+ $rfc822_header->subject = _("Read:") . ' ' . decodeHeader($header->subject,true,false);
- $reply_to = '';
- $ident = get_identities();
- if(!isset($identity)) $identity = 0;
- $full_name = $ident[$identity]['full_name'];
- $from_mail = $ident[$identity]['email_address'];
- $from_addr = '"'.$full_name.'" <'.$from_mail.'>';
- $reply_to = $ident[$identity]['reply_to'];
-
- if (!$from_mail) {
- $from_mail = "$popuser@$domain";
- $from_addr = $from_mail;
+ $idents = get_identities();
+ $needles = array();
+ if ($header->to) {
+ foreach ($header->to as $message_to) {
+ $needles[] = $message_to->mailbox.'@'.$message_to->host;
+ }
}
+ $identity = find_identity($needles);
+ $from_addr = build_from_header($identity);
+ $reply_to = isset($idents[$identity]['reply_to']) ? $idents[$identity]['reply_to'] : '';
+ // FIXME: this must actually be the envelope address of the orginal message,
+ // but do we have that information? For now the first identity is our best guess.
+ $final_recipient = $idents[0]['email_address'];
+
$rfc822_header->from = $rfc822_header->parseAddress($from_addr,true);
if ($reply_to) {
$rfc822_header->reply_to = $rfc822_header->parseAddress($reply_to,true);
}
// part 1 (RFC2298)
- $senton = getLongDateString( $header->date );
+ $senton = getLongDateString( $header->date, $header->date_unparsed );
$to_array = $header->to;
$to = '';
foreach ($to_array as $line) {
$original_recipient = $to;
$original_message_id = $header->message_id;
- $report = "Reporting-UA : $SERVER_NAME ; SquirrelMail (version $version) \r\n";
+ $report = "Reporting-UA : $SERVER_NAME ; SquirrelMail (version " . SM_VERSION . ") \r\n";
if ($original_recipient != '') {
$report .= "Original-Recipient : $original_recipient\r\n";
}
- $final_recipient = $sender;
$report .= "Final-Recipient: rfc822; $final_recipient\r\n" .
"Original-Message-ID : $original_message_id\r\n" .
"Disposition: manual-action/MDN-sent-manually; displayed\r\n";
$success = $deliver->finalizeStream($stream);
}
if (!$success) {
- $msg = $deliver->dlv_msg;
+ $msg = _("Message not sent.") . "<br />\n" .
+ $deliver->dlv_msg;
if (! empty($deliver->dlv_server_msg)) {
$msg.= '<br />' .
_("Server replied:") . ' ' . $deliver->dlv_ret_nr . ' ' .
nl2br(htmlspecialchars($deliver->dlv_server_msg));
}
- plain_error_message($msg, $color);
+ plain_error_message($msg);
} else {
unset ($deliver);
if (sqimap_mailbox_exists ($imapConnection, $sent_folder)) {
}
function formatRecipientString($recipients, $item ) {
- global $show_more_cc, $show_more, $show_more_bcc,
+ global $show_more, $show_more_cc, $show_more_bcc,
$PHP_SELF, $oTemplate;
$string = '';
$url = set_url_var($PHP_SELF, 'show_more_bcc',1);
}
}
-
+
$a = array();
foreach ($recipients as $r) {
$a[] = array(
'Full' => htmlspecialchars($r->getAddress(true))
);
}
-
+
$oTemplate->assign('which_field', $item);
$oTemplate->assign('recipients', $a);
$oTemplate->assign('more_less_toggle_href', $url);
$oTemplate->assign('show_more', $show);
-
+
$string = $oTemplate->fetch('read_recipient_list.tpl');
}
return $string;
function formatEnvheader($aMailbox, $passed_id, $passed_ent_id, $message,
$color, $FirstTimeSee) {
global $default_use_mdn, $default_use_priority,
- $show_xmailer_default, $mdn_user_support, $PHP_SELF, $javascript_on,
+ $show_xmailer_default, $mdn_user_support, $PHP_SELF,
$squirrelmail_language, $oTemplate;
$mailbox = $aMailbox['NAME'];
$env[_("From")] = _("Unknown sender");
else
$env[_("From")] = decodeHeader($from_name);
- $env[_("Date")] = getLongDateString($header->date);
+ $env[_("Date")] = getLongDateString($header->date, $header->date_unparsed);
$env[_("To")] = formatRecipientString($header->to, "to");
$env[_("Cc")] = formatRecipientString($header->cc, "cc");
$env[_("Bcc")] = formatRecipientString($header->bcc, "bcc");
if ($mdn_user_support) {
if ($header->dnt) {
$mdn_url = $PHP_SELF;
- $mdn_url = set_url_var($PHP_SELF, 'mailbox', urlencode($mailbox));
- $mdn_url = set_url_var($PHP_SELF, 'passed_id', $passed_id);
- $mdn_url = set_url_var($PHP_SELF, 'passed_ent_id', $passed_ent_id);
- $mdn_url = set_url_var($PHP_SELF, 'sendreceipt', 1);
+ $mdn_url = set_url_var($mdn_url, 'mailbox', urlencode($mailbox));
+ $mdn_url = set_url_var($mdn_url, 'passed_id', $passed_id);
+ $mdn_url = set_url_var($mdn_url, 'passed_ent_id', $passed_ent_id);
+ $mdn_url = set_url_var($mdn_url, 'sendreceipt', 1);
$oTemplate->assign('read_receipt_sent', $message->is_mdnsent);
- $oTemplate->assign('first_time_reading', $FirstTimeSee);
$oTemplate->assign('send_receipt_href', $mdn_url);
-
+
$env[_("Read Receipt")] = $oTemplate->fetch('read_handle_receipt.tpl');
}
}
}
+
+ // this is used for both mdn and also general use for plugins, etc
+ $oTemplate->assign('first_time_reading', $FirstTimeSee);
+
+ $statuses = array();
+ if (isset($aMailbox['MSG_HEADERS'][$passed_id]['FLAGS'])) {
+ if (isset($aMailbox['MSG_HEADERS'][$passed_id]['FLAGS']['\\deleted']) &&
+ $aMailbox['MSG_HEADERS'][$passed_id]['FLAGS']['\\deleted'] === true) {
+ $statuses[] = _("deleted");
+ }
+ if (isset($aMailbox['MSG_HEADERS'][$passed_id]['FLAGS']['\\answered']) &&
+ $aMailbox['MSG_HEADERS'][$passed_id]['FLAGS']['\\answered'] === true) {
+ $statuses[] = _("answered");
+ }
+ if (isset($aMailbox['MSG_HEADERS'][$passed_id]['FLAGS']['\\draft']) &&
+ $aMailbox['MSG_HEADERS'][$passed_id]['FLAGS']['\\draft'] === true) {
+ $statuses[] = _("draft");
+ }
+ if (isset($aMailbox['MSG_HEADERS'][$passed_id]['FLAGS']['\\flagged']) &&
+ $aMailbox['MSG_HEADERS'][$passed_id]['FLAGS']['\\flagged'] === true) {
+ $statuses[] = _("flagged");
+ }
+ if ( count($statuses) ) {
+ $env[_("Status")] = implode(', ', $statuses);
+ }
+ }
+
$env[_("Options")] = formatToolbar($mailbox, $passed_id, $passed_ent_id, $message, $color);
+
$oTemplate->assign('headers_to_display', $env);
-
+
$oTemplate->display('read_headers.tpl');
}
$startMessage, $PHP_SELF, $save_as_draft,
$enable_forward_as_attachment, $imapConnection, $lastTargetMailbox,
$delete_prev_next_display, $show_copy_buttons,
- $compose_new_win, $javascript_on, $compose_width, $compose_height,
+ $compose_new_win, $compose_width, $compose_height,
$oTemplate;
//FIXME cleanup argument list, use $aMailbox where possible
$urlMailbox = urlencode($mailbox);
- $msgs_url = $base_uri . 'src/';
-
// Create Prev & Next links
// Handle nested entities first (i.e. Mime Attach parts)
$prev_href = $next_href = $up_href = $del_href = $del_prev_href = $del_next_href = '';
- $msg_list_href = $search_href = $view_msg_href = '';
+ $msg_list_href = $search_href = $view_msg_href = '';
if (isset($passed_ent_id) && $passed_ent_id) {
// code for navigating through attached message/rfc822 messages
$url = set_url_var($PHP_SELF, 'passed_ent_id',0);
foreach($message->parent->entities as $ent) {
if ($ent->type0 == 'message' && $ent->type1 == 'rfc822') {
-
+
$c++;
$entity_count[$c] = $ent->entity_id;
$entities[$ent->entity_id] = $c;
// Start form for reply/reply all/forward..
$target = '';
$on_click='';
- $method='method="post" ';
+ $method='post';
$onsubmit='';
if ($compose_new_win == '1') {
if (!preg_match("/^[0-9]{3,4}$/", $compose_width)) {
if (!preg_match("/^[0-9]{3,4}$/", $compose_height)) {
$compose_height = '550';
}
- if ( $javascript_on ) {
- $on_click=' onclick="comp_in_new_form(\''.$comp_uri.'\', this, this.form,'. $compose_width .',' . $compose_height .')"';
+ if ( checkForJavascript() ) {
+ $on_click='comp_in_new_form(\''.$comp_uri.'\', this, this.form,'. $compose_width .',' . $compose_height .')';
$comp_uri = 'javascript:void(0)';
- $method='method="get" ';
- $onsubmit = 'onsubmit="return false" ';
+ $method='get';
+ $onsubmit = 'return false';
} else {
- $target = 'target="_blank"';
+ $target = '_blank';
}
}
$oTemplate->assign('message_list_href', $msg_list_href);
$oTemplate->assign('search_href', $search_href);
- $oTemplate->assign('form_extra', $method . $target . $onsubmit);
+ $oTemplate->assign('form_extra', '');
+ $oTemplate->assign('form_method', $method);
+ $oTemplate->assign('form_target', $target);
+ $oTemplate->assign('form_onsubmit', $onsubmit);
$oTemplate->assign('compose_href', $comp_uri);
$oTemplate->assign('button_onclick', $on_click);
$oTemplate->assign('forward_as_attachment_enabled', $enable_forward_as_attachment==1);
-
+
+ //FIXME: I am surprised these aren't already given to the template; probably needs to be given at a higher level, so I have NO IDEA if this is the right place to do this... adding them so template can construct its own API calls... we can build those herein too if preferrable
+ $oTemplate->assign('mailbox', $aMailbox['NAME']);
+ $oTemplate->assign('passed_id', $passed_id);
+ $oTemplate->assign('what', $what);
+
// If Draft folder - create Resume link
- $resume_draft = $edit_as_new = false;
+ $resume_draft = $edit_as_new = false;
if (($mailbox == $draft_folder) && ($save_as_draft)) {
$resume_draft = true; 'smaction_draft';
} else if (handleAsSent($mailbox)) {
$edit_as_new = true;
}
$oTemplate->assign('can_resume_draft', $resume_draft);
- $oTemplate->assign('can_edit_as_new', $edit_as_new);
-
+ $oTemplate->assign('can_edit_as_new', $edit_as_new);
+
$oTemplate->assign('mailboxes', sqimap_mailbox_option_array($imapConnection));
if (in_array('\\deleted', $aMailbox['PERMANENTFLAGS'],true)) {
$delete_url = $base_uri . "src/$where";
$oTemplate->assign('last_move_target', '');
$oTemplate->assign('can_be_copied', false);
}
-
+
+ global $null;
+ do_hook('read_body_menu', $null);
+
if ($nav_on_top) {
$oTemplate->display('read_menubar_nav.tpl');
$oTemplate->display('read_menubar_buttons.tpl');
$oTemplate->display('read_menubar_buttons.tpl');
$oTemplate->display('read_menubar_nav.tpl');
}
-
- do_hook('read_body_menu_bottom');
+
}
function formatToolbar($mailbox, $passed_id, $passed_ent_id, $message, $color) {
global $base_uri, $where, $what, $show_html_default,
- $oTemplate, $javascript_on, $download_href,
+ $oTemplate, $download_href,
$unsafe_image_toggle_href, $unsafe_image_toggle_text;
$urlMailbox = urlencode($mailbox);
'&mailbox=' . $urlMailbox .
'&passed_id=' . $urlPassed_id .
'&view_unsafe_images='. (bool) $view_unsafe_images .
- '&show_html_default=' . $show_html_default;
+ '&show_html_default=' . $show_html_default;
$links = array();
$links[] = array (
'URL' => $url,
do_hook('read_body_header_right', $links);
$oTemplate->assign('links', $links);
-
+
return $oTemplate->fetch('read_toolbar.tpl');
}
sqgetGlobalVar('mailbox_cache',$mailbox_cache,SQ_SESSION);
/* end of get globals */
-global $sqimap_capabilities, $lastTargetMailbox;
$imapConnection = sqimap_login($username, false, $imapServerAddress, $imapPort, 0);
$aMailbox = sqm_api_mailbox_select($imapConnection, $iAccount, $mailbox,array('setindex' => $what, 'offset' => $startMessage),array());
} else {
$message = sqimap_get_message($imapConnection, $passed_id, $mailbox);
$FirstTimeSee = !$message->is_seen;
- $message->is_seen = true;
- $aMailbox['MSG_HEADERS'][$passed_id]['MESSAGE_OBJECT'] = $message;
}
+
+/**
+ * update message seen status and put in cache
+ */
+$message->is_seen = true;
+$aMailbox['MSG_HEADERS'][$passed_id]['MESSAGE_OBJECT'] = $message;
+
if (isset($passed_ent_id) && $passed_ent_id) {
$message = $message->getEntity($passed_ent_id);
if ($message->type0 != 'message' && $message->type1 != 'rfc822') {
if (isset($sendreceipt)) {
if ( !$message->is_mdnsent ) {
- $final_recipient = '';
- if ((isset($identity)) && ($identity != 0)) //Main identity
- $final_recipient = trim(getPref($data_dir, $username, 'email_address' . $identity, '' ));
- if ($final_recipient == '' )
- $final_recipient = trim(getPref($data_dir, $username, 'email_address', '' ));
$supportMDN = ServerMDNSupport($aMailbox["PERMANENTFLAGS"]);
- if ( SendMDN( $mailbox, $passed_id, $final_recipient, $message, $imapConnection ) > 0 && $supportMDN ) {
+ if ( SendMDN( $mailbox, $passed_id, $message, $imapConnection ) > 0 && $supportMDN ) {
ToggleMDNflag( true, $imapConnection, $mailbox, $passed_id);
$message->is_mdnsent = true;
$aMailbox['MSG_HEADERS'][$passed_id]['MESSAGE_OBJECT'] = $message;
/***********************************************/
$messagebody = '';
-do_hook('read_body_top');
+do_hook('read_body_top', $null);
if ($show_html_default == 1) {
$ent_ar = $message->findDisplayEntity(array());
} else {
$a['DownloadURL'] = $img['download_href'];
$images[] = $a;
}
-
+
$oTemplate->assign('images', $images);
$oTemplate->display('read_display_images_inline.tpl');
}
formatMenuBar($aMailbox, $passed_id, $passed_ent_id, $message, false, FALSE);
-do_hook('read_body_bottom');
+do_hook('read_body_bottom', $null);
sqimap_logout($imapConnection);
$oTemplate->display('footer.tpl');
-?>