phpdocumentor preparation and a few corrections to earlier phpdocumentor work
[squirrelmail.git] / src / read_body.php
index 535bcde3d88daeba531752b8b4a317d6133bc8ad..254ab767844d51a57cb048b3d9aaff9c80026928 100644 (file)
  * the resulting emails in the right frame.
  *
  * $Id$
+ * @package squirrelmail
  */
 
-/* Path for SquirrelMail required files. */
+/** Path for SquirrelMail required files. */
 define('SM_PATH','../');
 
 /* SquirrelMail required files. */
 require_once(SM_PATH . 'include/validate.php');
+require_once(SM_PATH . 'functions/global.php');
 require_once(SM_PATH . 'functions/imap.php');
 require_once(SM_PATH . 'functions/mime.php');
 require_once(SM_PATH . 'functions/date.php');
 require_once(SM_PATH . 'functions/url_parser.php');
 require_once(SM_PATH . 'functions/html.php');
 require_once(SM_PATH . 'functions/global.php');
+require_once(SM_PATH . 'functions/identity.php');
+require_once(SM_PATH . 'functions/mailbox_display.php');
 
 /**
  * Given an IMAP message id number, this will look it up in the cached
@@ -164,27 +168,30 @@ function SendMDN ( $mailbox, $passed_id, $sender, $message, $imapConnection) {
     }
     $rfc822_header->content_type = $content_type;
     $rfc822_header->to[] = $header->dnt;
-    $rfc822_header->subject = _("Read:") . ' ' . decodeHeader($header->subject);
-
-
-    $reply_to = '';
-    if (isset($identity) && $identity != 'default') {
-        $from_mail = getPref($data_dir, $username, 
-                             'email_address' . $identity);
-        $full_name = getPref($data_dir, $username, 
-                             'full_name' . $identity);
-        $from_addr = '"'.$full_name.'" <'.$from_mail.'>';
-        $reply_to  = getPref($data_dir, $username, 
-                             'reply_to' . $identity);
+    $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 {
-        $from_mail = getPref($data_dir, $username, 'email_address');
-        $full_name = getPref($data_dir, $username, 'full_name');
-        $from_addr = '"'.$full_name.'" <'.$from_mail.'>';
-        $reply_to  = getPref($data_dir, $username,'reply_to');
+       $popuser = $username;
     }
-    if (!$from_addr) {
-       $from_addr = "$popuser@$domain";
-       $from_mail = $from_addr;
+
+    $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;
     }
     $rfc822_header->from = $rfc822_header->parseAddress($from_addr,true);
     if ($reply_to) {
@@ -201,8 +208,8 @@ function SendMDN ( $mailbox, $passed_id, $sender, $message, $imapConnection) {
     $now = getLongDateString( time() );
     set_my_charset();
     $body = _("Your message") . "\r\n\r\n" .
-            "\t" . _("To:") . ' ' . decodeHeader($to) . "\r\n" .
-            "\t" . _("Subject:") . ' ' . decodeHeader($header->subject) . "\r\n" .
+            "\t" . _("To:") . ' ' . decodeHeader($to,false,false) . "\r\n" .
+            "\t" . _("Subject:") . ' ' . decodeHeader($header->subject,false,false) . "\r\n" .
             "\t" . _("Sent:") . ' ' . $senton . "\r\n" .
             "\r\n" .
             sprintf( _("Was displayed on %s"), $now );
@@ -271,10 +278,10 @@ function SendMDN ( $mailbox, $passed_id, $sender, $message, $imapConnection) {
         require_once(SM_PATH . 'class/deliver/Deliver_SMTP.class.php');
         $deliver = new Deliver_SMTP();
         global $smtpServerAddress, $smtpPort, $smtp_auth_mech, $pop_before_smtp;
-               if ($smtp_auth_mech == 'none') {
-                       $user = '';
-                       $pass = '';
-               } else {
+        if ($smtp_auth_mech == 'none') {
+            $user = '';
+            $pass = '';
+        } else {
             global $key, $onetimepad;
             $user = $username;
             $pass = OneTimePadDecrypt($key, $onetimepad);
@@ -397,15 +404,15 @@ function formatEnvheader($mailbox, $passed_id, $passed_ent_id, $message,
 
     $header = $message->rfc822_header;
     $env = array();
-    $env[_("Subject")] = decodeHeader($header->subject);
+    $env[_("Subject")] = str_replace("&nbsp;"," ",decodeHeader($header->subject));
+
     $from_name = $header->getAddr_s('from');
-    if (!$from_name) {
+    if (!$from_name)
         $from_name = $header->getAddr_s('sender');
-        if (!$from_name) {
-            $from_name = _("Unknown sender");
-        }
-    }
-    $env[_("From")] = decodeHeader($from_name);
+    if (!$from_name)
+        $env[_("From")] = _("Unknown sender");
+    else
+        $env[_("From")] = decodeHeader($from_name);
     $env[_("Date")] = getLongDateString($header->date);
     $env[_("To")] = formatRecipientString($header->to, "to");
     $env[_("Cc")] = formatRecipientString($header->cc, "cc");
@@ -420,7 +427,7 @@ function formatEnvheader($mailbox, $passed_id, $passed_ent_id, $message,
         if ($mdn_user_support) {
             if ($header->dnt) {
                 if ($message->is_mdnsent) {
-                    $env[_("Read receipt")] = _("send");
+                    $env[_("Read receipt")] = _("sent");
                 } else {
                     $env[_("Read receipt")] = _("requested"); 
                     if (!(handleAsSent($mailbox) || 
@@ -458,7 +465,7 @@ function formatEnvheader($mailbox, $passed_id, $passed_ent_id, $message,
         }
     }
     echo '<TABLE BGCOLOR="'.$color[9].'" WIDTH="100%" CELLPADDING="1"'.
-         ' CELLSPACING="0" BORDER="0" ALIIGN="center">'."\n";
+         ' CELLSPACING="0" BORDER="0" ALIGN="center">'."\n";
     echo '<TR><TD HEIGHT="5" COLSPAN="2" BGCOLOR="'.
           $color[4].'"></TD></TR><TR><TD align=center>'."\n";
     echo $s;
@@ -471,7 +478,7 @@ function formatEnvheader($mailbox, $passed_id, $passed_ent_id, $message,
 
 function formatMenubar($mailbox, $passed_id, $passed_ent_id, $message, $mbx_response) {
     global $base_uri, $draft_folder, $where, $what, $color, $sort,
-           $startMessage, $compose_new_win, $PHP_SELF, $save_as_draft,
+           $startMessage, $PHP_SELF, $save_as_draft,
            $enable_forward_as_attachment;
 
     $topbar_delimiter = '&nbsp;|&nbsp;';
@@ -504,28 +511,22 @@ function formatMenubar($mailbox, $passed_id, $passed_ent_id, $message, $mbx_resp
         $s .= '<a href="' . $delete_url . '">' . _("Delete") . '</a>';
     }
 
-    $comp_uri = $base_uri . 'src/compose.php' .
+    $comp_uri = 'src/compose.php' .
                             '?passed_id=' . $passed_id .
                             '&amp;mailbox=' . $urlMailbox .
+                            '&amp;startMessage=' . $startMessage .
                             (isset($passed_ent_id)?'&amp;passed_ent_id='.$passed_ent_id:'');
 
-    if ($compose_new_win == '1') {
-        $link_open  = '<a href="javascript:void(0)" onclick="comp_in_new(\'';
-        $link_close = '\')">';
-    } else {
-        $link_open  = '<a href="';
-        $link_close = '">';
-    }
     if (($mailbox == $draft_folder) && ($save_as_draft)) {
-        $comp_alt_uri = $comp_uri . '&amp;action=draft';
+        $comp_alt_uri = $comp_uri . '&amp;smaction=draft';
         $comp_alt_string = _("Resume Draft");
     } else if (handleAsSent($mailbox)) {
-        $comp_alt_uri = $comp_uri . '&amp;action=edit_as_new';
+        $comp_alt_uri = $comp_uri . '&amp;smaction=edit_as_new';
         $comp_alt_string = _("Edit Message as New");
     }
     if (isset($comp_alt_uri)) {
         $s .= $topbar_delimiter;
-        $s .= $link_open . $comp_alt_uri . $link_close . $comp_alt_string . '</a>';
+        $s .= makeComposeLink($comp_alt_uri, $comp_alt_string);
     }
 
     $s .= '</small></td><td align="center" width="33%"><small>';
@@ -592,26 +593,26 @@ function formatMenubar($mailbox, $passed_id, $passed_ent_id, $message, $mbx_resp
 
     $s .= '</small></td>' . "\n" . 
           html_tag( 'td', '', 'right', '', 'width="33%" nowrap' ) . '<small>';
-    $comp_action_uri = $comp_uri . '&amp;action=forward';
-    $s .= $link_open . $comp_action_uri . $link_close . _("Forward") . '</a>';
+    $comp_action_uri = $comp_uri . '&amp;smaction=forward';
+    $s .= makeComposeLink($comp_action_uri, _("Forward"));
 
     if ($enable_forward_as_attachment) {
-        $comp_action_uri = $comp_uri . '&amp;action=forward_as_attachment';
+        $comp_action_uri = $comp_uri . '&amp;smaction=forward_as_attachment';
         $s .= $topbar_delimiter;
-        $s .= $link_open . $comp_action_uri . $link_close . _("Forward as Attachment") . '</a>';
+        $s .= makeComposeLink($comp_action_uri, _("Forward as Attachment"));
     }
 
-    $comp_action_uri = $comp_uri . '&amp;action=reply';
+    $comp_action_uri = $comp_uri . '&amp;smaction=reply';
     $s .= $topbar_delimiter;
-    $s .= $link_open . $comp_action_uri . $link_close . _("Reply") . '</a>';
+    $s .= makeComposeLink($comp_action_uri, _("Reply"));
 
-    $comp_action_uri = $comp_uri . '&amp;action=reply_all';
+    $comp_action_uri = $comp_uri . '&amp;smaction=reply_all';
     $s .= $topbar_delimiter;
-    $s .= $link_open . $comp_action_uri . $link_close . _("Reply All") . '</a>';
+    $s .= makeComposeLink($comp_action_uri, _("Reply All"));
     $s .= '</small></td></tr></table>';
-    do_hook("read_body_menu_top");
+    do_hook('read_body_menu_top');
     echo $s;
-    do_hook("read_body_menu_bottom");
+    do_hook('read_body_menu_bottom');
 }
 
 function formatToolbar($mailbox, $passed_id, $passed_ent_id, $message, $color) {
@@ -741,16 +742,11 @@ do_hook('html_top');
 
 if (isset($sendreceipt)) {
    if ( !$message->is_mdnsent ) {
-      if (isset($identity) ) {
-         $final_recipient = getPref($data_dir, $username, 'email_address' . '0', '' );
-      } else {
-         $final_recipient = getPref($data_dir, $username, 'email_address', '' );
-      }
-
-      $final_recipient = trim($final_recipient);
-      if ($final_recipient == '' ) {
-         $final_recipient = getPref($data_dir, $username, 'email_address', '' );
-      }
+      $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($mbx_response["PERMANENTFLAGS"]);
       if ( SendMDN( $mailbox, $passed_id, $final_recipient, $message, $imapConnection ) > 0 && $supportMDN ) {
          ToggleMDNflag( true, $imapConnection, $mailbox, $passed_id, $uid_support);
@@ -805,11 +801,10 @@ echo '<TR><TD HEIGHT="5" COLSPAN="2" BGCOLOR="'.
 
 $attachmentsdisplay = formatAttachments($message,$ent_ar,$mailbox, $passed_id);
 if ($attachmentsdisplay) {
-   echo '  <tr><td>';
+   echo '  </table>';
    echo '    <table width="100%" cellpadding="1" cellspacing="0" align="center"'.' border="0" bgcolor="'.$color[9].'">';
    echo '     <tr><td>';
    echo '       <table width="100%" cellpadding="0" cellspacing="0" align="center" border="0" bgcolor="'.$color[4].'">';
- //  echo '        <tr><td ALIGN="left" bgcolor="'.$color[9].'">';
    echo '        <tr>' . html_tag( 'td', '', 'left', $color[9] );              
    echo '           <b>' . _("Attachments") . ':</b>';
    echo '        </td></tr>';
@@ -818,7 +813,6 @@ if ($attachmentsdisplay) {
    echo              $attachmentsdisplay;
    echo '          </td></tr></table>';
    echo '       </td></tr></table>';
-   echo '    </td></tr></table>';
    echo '  </td></tr>';
    echo '<TR><TD HEIGHT="5" COLSPAN="2" BGCOLOR="'.
           $color[4].'"></TD></TR>';