rollback take 99
[squirrelmail.git] / src / read_body.php
index d77f5240abbbebbb50e181d73b0174f4164b6e1e..1ac417cf9a5dff0defba0ad8be66c9eea111bd1b 100644 (file)
@@ -23,7 +23,6 @@ require_once(SM_PATH . 'functions/date.php');
 require_once(SM_PATH . 'functions/url_parser.php');
 require_once(SM_PATH . 'functions/html.php');
 
-
 /**
  * Given an IMAP message id number, this will look it up in the cached
  * and sorted msgs array and return the index. Used for finding the next
@@ -52,20 +51,14 @@ function findNextMessage($passed_id) {
             }
         }
     } else {
-        if ($sort == 6) {
-            if ($passed_id != 1) {
-                $result = $passed_id - 1;
-            }
-        } else {
-            if (is_array($msort)) {
-                for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) {
-                    if ($passed_id == $msgs[$key]['ID']) {
-                        next($msort);
-                        $key = key($msort);
-                        if (isset($key)){
-                            $result = $msgs[$key]['ID'];
-                            break;
-                        }
+        if (is_array($msort)) {
+            for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) {
+                if ($passed_id == $msgs[$key]['ID']) {
+                    next($msort);
+                    $key = key($msort);
+                    if (isset($key)){
+                        $result = $msgs[$key]['ID'];
+                        break;
                     }
                 }
             }
@@ -95,21 +88,14 @@ function findPreviousMessage($numMessages, $passed_id) {
             }
         }
     } else {
-        if ($sort == 6) {
-            if ($passed_id != $numMessages) {
-                $result = $passed_id + 1;
-            }
-        } else {
-            if (is_array($msort)) {
-                for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) {
-                    if ($passed_id == $msgs[$key]['ID']) {
-                        prev($msort);
-                        $key = key($msort);
-                        if (isset($key)) {
-                            //echo $msort[$key];   /* Why again were we echoing here? */
-                            $result = $msgs[$key]['ID'];
-                            break;
-                        }
+        if (is_array($msort)) {
+            for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) {
+                if ($passed_id == $msgs[$key]['ID']) {
+                    prev($msort);
+                    $key = key($msort);
+                    if (isset($key)) {
+                        $result = $msgs[$key]['ID'];
+                        break;
                     }
                 }
             }
@@ -157,11 +143,13 @@ function ServerMDNSupport($read) {
 }
 
 function SendMDN ( $mailbox, $passed_id, $sender, $message, $imapConnection) {
-    global $username, $attachment_dir, $SERVER_NAME,
+    global $username, $attachment_dir, $_SERVER,
            $version, $attachments, $squirrelmail_language, $default_charset,
            $languages, $useSendmail, $domain, $sent_folder,
            $popuser, $data_dir, $username;
 
+    $SERVER_NAME = $_SERVER['SERVER_NAME'];
+
     $header = $message->rfc822_header;
     $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
 
@@ -456,8 +444,8 @@ function formatEnvheader($mailbox, $passed_id, $passed_ent_id, $message,
         }
     }
 
-    $s  = '<TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0"';
-    $s .= ' ALIGN="center" BGCOLOR="' . $color[0] . '">';
+    $s  = '<TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="2" BORDER="0"';
+    $s .= ' ALIGN="center" BGCOLOR="'.$color[0].'">';
     foreach ($env as $key => $val) {
         if ($val) {
             $s .= '<TR>';
@@ -466,10 +454,16 @@ function formatEnvheader($mailbox, $passed_id, $passed_ent_id, $message,
             $s .= '</TR>';
         }
     }
+    echo '<TABLE BGCOLOR="'.$color[9].'" WIDTH="100%" CELLPADDING="1"'.
+         ' CELLSPACING="0" BORDER="0" ALIIGN="center">'."\n";
+    echo '<TR><TD HEIGHT="5" COLSPAN="2" BGCOLOR="'.
+          $color[4].'"></TD></TR><TR><TD align=center>'."\n";
     echo $s;
     do_hook("read_body_header");
     formatToolbar($mailbox, $passed_id, $passed_ent_id, $message, $color);
     echo '</TABLE>';
+    echo '</TD></TR><TR><TD HEIGHT="5" COLSPAN="2" BGCOLOR="'.$color[4].'"></TD></TR>'."\n";
+    echo '</TABLE>';
 }
 
 function formatMenubar($mailbox, $passed_id, $passed_ent_id, $message, $mbx_response) {
@@ -556,6 +550,29 @@ function formatMenubar($mailbox, $passed_id, $passed_ent_id, $message, $mbx_resp
         /* code for navigating through attached message/rfc822 messages */
         $url = set_url_var($PHP_SELF, 'passed_ent_id',0);
         $s .= '<a href="'.$url.'">'._("View Message").'</a>';
+        $entities     = array();
+        $entity_count = array();
+        $c = 0;
+        foreach($message->parent->entities as $ent) {
+            $c++;
+            $entity_count[$c] = $ent->entity_id;
+            $entities[$ent->entity_id] = $c;
+        }
+        $prev_link = _("Previous");
+        $next_link = _("Next");
+        if($entities[$passed_ent_id] > 1) {
+            $prev_ent_id = $entity_count[$entities[$passed_ent_id] - 1];
+            $prev_link   = '<a href="'
+                         . set_url_var($PHP_SELF, 'passed_ent_id', $prev_ent_id)
+                         . '">' . $prev_link . '</a>';
+        }
+        if($entities[$passed_ent_id] < $c) {
+            $next_ent_id = $entity_count[$entities[$passed_ent_id] + 1];
+            $next_link   = '<a href="'
+                         . set_url_var($PHP_SELF, 'passed_ent_id', $next_ent_id)
+                         . '">' . $next_link . '</a>';
+        }
+        $s .= $topbar_delimiter . $prev_link;
         $par_ent_id = $message->parent->entity_id;
         if ($par_ent_id) {
             $par_ent_id = substr($par_ent_id,0,-2);
@@ -563,6 +580,7 @@ function formatMenubar($mailbox, $passed_id, $passed_ent_id, $message, $mbx_resp
             $url = set_url_var($PHP_SELF, 'passed_ent_id',$par_ent_id);
             $s .= '<a href="'.$url.'">'._("Up").'</a>';
         }
+        $s .= $topbar_delimiter . $next_link;
     }
 
     $s .= '</small></td>' . "\n" . '<td align="right" width="33%" nowrap><small>';
@@ -589,10 +607,10 @@ function formatMenubar($mailbox, $passed_id, $passed_ent_id, $message, $mbx_resp
 }
 
 function formatToolbar($mailbox, $passed_id, $passed_ent_id, $message, $color) {
-    global $QUERY_STRING, $base_uri;
-   
+    global $base_uri;
+
     $urlMailbox = urlencode($mailbox);
-    $url = $base_uri.'src/view_header.php?'.$QUERY_STRING;
+    $url = $base_uri.'src/view_header.php?'.$_SERVER['QUERY_STRING'];
 
     $s  = "<TR>\n" .
           '<TD VALIGN="MIDDLE" ALIGN="RIGHT" WIDTH="20%"><B>' . _("Options") . ":&nbsp;&nbsp;</B></TD>\n" .
@@ -614,12 +632,93 @@ function formatToolbar($mailbox, $passed_id, $passed_ent_id, $message, $color) {
 /*   Main of read_body.php */
 /***************************/
 
-/*
-    Urled vars
-    ----------
-    $passed_id
-*/
+/* get the globals we may need */
+
+$username = $_SESSION['username'];
+$key = $_COOKIE['key'];
+$onetimepad = $_SESSION['onetimepad'];
+$msgs = $_SESSION['msgs'];
+$base_uri = $_SESSION['base_uri'];
+$delimiter = $_SESSION['delimiter'];
+
+if (isset($_GET['passed_id'])) {
+    $passed_id = $_GET['passed_id'];
+}
+elseif (isset($_POST['passed_id'])) {
+    $passed_id = $_POST['passed_id'];
+}
+
+if (isset($_GET['passed_ent_id'])) {
+    $passed_ent_id = $_GET['passed_ent_id'];
+}
+elseif (isset($_POST['passed_ent_id'])) {
+    $passed_ent_id = $_POST['passed_ent_id'];
+}
+
+if (isset($_GET['sendreceipt'])) {
+    $sendreceipt = $_GET['sendreceipt'];
+}
+
+if (isset($_GET['sort'])) {
+    $sort = $_GET['sort'];
+}
+elseif (isset($_POST['sort'])) {
+    $sort = $_POST['sort'];
+}
+if (isset($_GET['startMessage'])) {
+    $startMessage = $_GET['startMessage'];
+}
+elseif (isset($_POST['startMessage'])) {
+    $startMessage = $_POST['startMessage'];
+}
+if (isset($_GET['show_more'])) {
+    $show_more = $_GET['show_more'];
+}
+if (isset($_GET['show_more_cc'])) {
+    $show_more_cc = $_GET['show_more_cc'];
+}
+if (isset($_GET['show_more_bcc'])) {
+    $show_more_bcc = $_GET['show_more_bcc'];
+}
+if (isset($_GET['mailbox'])) {
+    $mailbox = $_GET['mailbox'];
+}
+elseif (isset($_POST['mailbox'])) {
+    $mailbox = $_POST['mailbox'];
+}
+if (isset($_GET['where'])) {
+    $where = $_GET['where'];
+}
+if (isset($_GET['what'])) {
+    $what = $_GET['what'];
+}
+if (isset($_GET['view_hdr'])) {
+    $view_hdr = $_GET['view_hdr'];
+}
+if (isset($_SESSION['server_sort_array'])) {
+    $server_sort_array = $_SESSION['server_sort_array'];
+}
+if (isset($_SESSION['msgs'])) {
+    $msgs = $_SESSION['msgs'];
+}
+if (isset($_SESSION['msort'])) {
+    $msort = $_SESSION['msort'];
+}
+if (isset($_POST['move_id'])) {
+    $move_id = $_POST['move_id'];
+}
+if (isset($_SESSION['lastTargetMailbox'])) {
+    $lastTargetMailbox = $_SESSION['lastTargetMailbox'];
+}
+if (isset($_SESSION['messages'])) {
+    $messages = $_SESSION['messages'];
+} else {
+    $messages = array();
+}
+
 
+
+/* end of get globals */
 global $uid_support, $sqimap_capabilities;
 
 if (isset($mailbox)) {
@@ -629,10 +728,6 @@ if (isset($mailbox)) {
 $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0);
 $mbx_response = sqimap_mailbox_select($imapConnection, $mailbox, false, false, true);
 
-if (!isset($messages)) {
-    $messages = array();
-    sqsession_register($messages,'messages');
-}
 
 /**
  * $message contains all information about the message
@@ -649,15 +744,11 @@ if (!isset($messages[$uidvalidity][$passed_id]) || !$uid_support) {
    $FirstTimeSee = !$message->is_seen;
    $message->is_seen = true;
    $messages[$uidvalidity][$passed_id] = $message;
-   sqsession_register($messages, 'messages');
 } else {
 //   $message = sqimap_get_message($imapConnection, $passed_id, $mailbox);
    $message = $messages[$uidvalidity][$passed_id];
    $FirstTimeSee = !$message->is_seen;
 }
-//$FirstTimeSee = !$message->is_seen;
-//$message->is_seen = true;
-//$messages[$uidvalidity][$passed_id] = $message;
 
 if (isset($passed_ent_id) && $passed_ent_id) {
    $message = $message->getEntity($passed_ent_id);
@@ -730,20 +821,24 @@ echo '    <table width="100%" cellpadding="1" cellspacing="0" align="center" bor
 echo '      <tr><td>';
 echo '        <table width="100%" cellpadding="3" cellspacing="0" align="center" border="0">';
 echo '          <tr bgcolor="'.$color[4].'"><td>';
-echo '            <table cellpadding="0" cellspacing="0" align="center" border="0">';
-echo '              <tr><td><br>' . $messagebody . '</td></td>';
+echo '            <table cellpadding="1" cellspacing="5" align="left" border="0">';
+echo '              <tr>' . html_tag( 'td', '<br>'. $messagebody."\n", 'left')
+                        . '</td>';
 echo '            </table>';
 echo '          </td></tr>';      
 echo '        </table></td></tr>';
 echo '    </table>';
 echo '  </td></tr>';
 
+echo '<TR><TD HEIGHT="5" COLSPAN="2" BGCOLOR="'.
+          $color[4].'"></TD></TR><TR><TD align=center>'."\n";
+
 $attachmentsdisplay = formatAttachments($message,$ent_ar,$mailbox, $passed_id);
 if ($attachmentsdisplay) {
    echo '  <tr><td>';
    echo '    <table width="100%" cellpadding="1" cellspacing="0" align="center"'.' border="0" bgcolor="'.$color[9].'">';
    echo '     <tr><td>';
-   echo '       <table width="100%" cellpadding="1" cellspacing="0" align="center" border="0" bgcolor="'.$color[4].'">';
+   echo '       <table width="100%" cellpadding="0" cellspacing="0" align="center" border="0" bgcolor="'.$color[4].'">';
    echo '        <tr><td ALIGN="left" bgcolor="'.$color[9].'">';
    echo '           <b>' . _("Attachments") . ':</b>';
    echo '        </td></tr>';
@@ -758,12 +853,11 @@ if ($attachmentsdisplay) {
 }
 echo '</table>';
 
-
 /* show attached images inline -- if pref'fed so */
 if (($attachment_common_show_images) &&
     is_array($attachment_common_show_images_list)) {
     foreach ($attachment_common_show_images_list as $img) {
-        $imgurl = '../src/download.php' .
+        $imgurl = SM_PATH . 'src/download.php' .
                 '?' .
                 'passed_id='     . urlencode($img['passed_id']) .
                 '&amp;mailbox='       . urlencode($mailbox) .
@@ -781,8 +875,11 @@ if (($attachment_common_show_images) &&
 
 do_hook('read_body_bottom');
 do_hook('html_bottom');
-//$message->clean_up();
 sqimap_logout($imapConnection);
+/* sessions are written at the end of the script. it's better to register 
+   them at the end so we avoid double session_register calls */
+sqsession_register($messages,'messages');
+
 ?>
 </body>
 </html>