From 7dfb1fba5001299300736e6b5d95d9400575e3e7 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Thu, 18 Sep 2008 14:59:02 -0400
Subject: [PATCH] Set the right number of arguments for setcookie()

---
 program/steps/mail/compose.inc |  118 ++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 81 insertions(+), 37 deletions(-)

diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 0a5226e..7995b34 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -35,8 +35,8 @@
     unset($_SESSION['compose']['attachments'][$id]);
     $OUTPUT->command('remove_from_attachment_list', "rcmfile$id");
     $OUTPUT->send();
-    exit;
   }
+  exit;
 }
 
 if ($RCMAIL->action=='display-attachment' && preg_match('/^rcmfile([0-9]+)$/', $_GET['_file'], $regs))
@@ -209,9 +209,14 @@
     {
       $to_addresses = $IMAP->decode_address_list($fvalue);
       $fvalue = '';
+
       foreach ($to_addresses as $addr_part)
       {
-        if (!empty($addr_part['mailto']) && !in_array($addr_part['mailto'], $sa_recipients) && (!$MESSAGE->compose_from || !in_array($addr_part['mailto'], $MESSAGE->compose_from)))
+        if (!empty($addr_part['mailto'])
+	    && !in_array($addr_part['mailto'], $sa_recipients)
+	    && (!$MESSAGE->compose_from
+		|| !in_array($addr_part['mailto'], $MESSAGE->compose_from)
+		|| count($to_addresses)==1)) // allow reply to yourself
         {
           $fvalue .= (strlen($fvalue) ? ', ':'').$addr_part['string'];
           $sa_recipients[] = $addr_part['mailto'];
@@ -236,7 +241,7 @@
   if ($fname && $field_type)
   {
     // pass the following attributes to the form class
-    $field_attrib = array('name' => $fname);
+    $field_attrib = array('name' => $fname, 'spellcheck' => 'false');
     foreach ($attrib as $attr => $value)
       if (in_array($attr, $allow_attrib))
         $field_attrib[$attr] = $value;
@@ -396,6 +401,16 @@
     // load draft message body
     else if ($compose_mode == RCUBE_COMPOSE_DRAFT)
       $body = rcmail_create_draft_body($body, $isHtml);
+
+    if ($isHtml) {
+      // replace cid with href in inline images links
+      foreach ((array)$_SESSION['compose']['attachments'] as $pid => $attachment) {
+        if ($attachment['content_id']) {
+	  $body = str_replace('cid:'. $attachment['content_id'], 
+	    $OUTPUT->app->comm_path.'&_action=display-attachment&_file=rcmfile'.$pid, $body);
+        }
+      }
+    }
   }
   else if (!empty($_SESSION['compose']['param']['_body']))
   {
@@ -421,8 +436,8 @@
   $msgtype = new html_hiddenfield(array('name' => '_is_html', 'value' => ($isHtml?"1":"0")));
   $out .= $msgtype->show();
 
-  // If desired, set this text area to be editable by TinyMCE
-  if ($isHtml) $attrib['class'] = "mce_editor";
+  // If desired, set this textarea to be editable by TinyMCE
+  if ($isHtml) $attrib['class'] = 'mce_editor';
   $textarea = new html_textarea($attrib);
   $out .= $textarea->show($body);
   $out .= $form_end ? "\n$form_end" : '';
@@ -495,7 +510,7 @@
     $body = join("\n", $a_lines);
 
     // add title line
-    $prefix = sprintf("\n\n\nOn %s, %s wrote:\n",
+    $prefix = sprintf("On %s, %s wrote:\n",
       $MESSAGE->headers->date,
       $MESSAGE->get_header('from'));
 
@@ -509,11 +524,13 @@
   }
   else
   {
-    $prefix = sprintf("<br /><br />On %s, %s wrote:<br />\n",
+    $prefix = sprintf("On %s, %s wrote:<br />\n",
       $MESSAGE->headers->date,
       htmlspecialchars(Q($MESSAGE->get_header('from'), 'replace'), ENT_COMPAT, $OUTPUT->get_charset(), true));
     $prefix .= '<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px; width:100%">';
     $suffix = "</blockquote>";
+
+    rcmail_write_inline_attachments($MESSAGE);
   }
 
   return $prefix.$body.$suffix;
@@ -526,11 +543,14 @@
 
   if (!$bodyIsHtml)
   {
-    $prefix = sprintf("\n\n\n-------- Original Message --------\nSubject: %s\nDate: %s\nFrom: %s\nTo: %s\n\n",
-      $MESSAGE->subject,
-      $MESSAGE->headers->date,
-      $MESSAGE->get_header('from'),
-      $MESSAGE->get_header('to'));
+    $prefix = "\n\n\n-------- Original Message --------\n";
+    $prefix .= 'Subject: ' . $MESSAGE->subject . "\n";
+    $prefix .= 'Date: ' . $MESSAGE->headers->date . "\n";
+    $prefix .= 'From: ' . $MESSAGE->get_header('from') . "\n";
+    $prefix .= 'To: ' . $MESSAGE->get_header('to') . "\n";
+    if ($MESSAGE->headers->replyto && $MESSAGE->headers->replyto != $MESSAGE->headers->from)
+      $prefix .= 'Reply-To: ' . $MESSAGE->get_header('replyto') . "\n";
+    $prefix .= "\n";
   }
   else
   {
@@ -540,12 +560,17 @@
         "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">Subject: </th><td>%s</td></tr>" .
         "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">Date: </th><td>%s</td></tr>" .
         "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">From: </th><td>%s</td></tr>" .
-        "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">To: </th><td>%s</td></tr>" .
-        "</tbody></table><br>",
+        "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">To: </th><td>%s</td></tr>",
       Q($MESSAGE->subject),
       Q($MESSAGE->headers->date),
       htmlspecialchars(Q($MESSAGE->get_header('from'), 'replace'), ENT_COMPAT, $OUTPUT->get_charset(), true),
-      htmlspecialchars(Q($MESSAGE->get_header('to'), 'replace'), ENT_COMPAT, $OUTPUT->get_charset(), true));
+	htmlspecialchars(Q($MESSAGE->get_header('to'), 'replace'), ENT_COMPAT, $OUTPUT->get_charset(), true));
+
+    if ($MESSAGE->headers->replyto && $MESSAGE->headers->replyto != $MESSAGE->headers->from)
+      $prefix .= sprintf("<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">Reply-To: </th><td>%s</td></tr>",
+	htmlspecialchars(Q($MESSAGE->get_header('replyto'), 'replace'), ENT_COMPAT, $OUTPUT->get_charset(), true));
+
+    $prefix .= "</tbody></table><br>";
   }
 
   // add attachments
@@ -575,35 +600,53 @@
   
 function rcmail_write_compose_attachments(&$message, $bodyIsHtml)
 {
-  global $RCMAIL, $IMAP;
-
-  $temp_dir = unslashify($RCMAIL->config->get('temp_dir'));
-
-  if (!is_array($_SESSION['compose']['attachments']))
-    $_SESSION['compose']['attachments'] = array();
-  
   foreach ((array)$message->mime_parts as $pid => $part)
   {
     if (($part->ctype_primary != 'message' || !$bodyIsHtml) &&
-        ($part->disposition=='attachment' || $part->disposition=='inline' || $part->headers['content-id'] ||
-         (empty($part->disposition) && $part->filename)))
+        ($part->disposition=='attachment' || $part->disposition=='inline' || $part->headers['content-id']
+	|| (empty($part->disposition) && $part->filename)))
     {
-      $tmp_path = tempnam($temp_dir, 'rcmAttmnt');
-      if ($fp = fopen($tmp_path, 'w'))
-      {
-        fwrite($fp, $message->get_part_content($pid));
-        fclose($fp);
-        
-        $_SESSION['compose']['attachments'][] = array(
-          'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary,
-          'name' => $part->filename,
-          'path' => $tmp_path
-          );
-      }
+      if ($attachment = rcmail_save_attachment($message, $pid))
+        $_SESSION['compose']['attachments'][] = $attachment;
     }
   }
 	
   $_SESSION['compose']['forward_attachments'] = true;
+}
+
+
+function rcmail_write_inline_attachments(&$message)
+{
+  foreach ((array)$message->mime_parts as $pid => $part)
+  {
+    if ($part->content_id && $part->filename)
+    {
+      if ($attachment = rcmail_save_attachment($message, $pid))
+        $_SESSION['compose']['attachments'][] = $attachment;
+    }
+  }
+}
+
+function rcmail_save_attachment(&$message, $pid)
+{
+  global $RCMAIL;
+
+  $temp_dir = unslashify($RCMAIL->config->get('temp_dir'));
+  $tmp_path = tempnam($temp_dir, 'rcmAttmnt');
+  $part = $message->mime_parts[$pid];
+  
+  if ($fp = fopen($tmp_path, 'w'))
+  {
+    $message->get_part_content($pid, $fp);
+    fclose($fp);
+
+    return array(
+        'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary,
+        'name' => $part->filename,
+        'path' => $tmp_path,
+	'content_id' => $part->content_id
+    );
+  }
 }
 
 
@@ -615,6 +658,7 @@
   unset($attrib['form']);
   
   $attrib['name'] = '_subject';
+  $attrib['spellcheck'] = 'true';
   $textfield = new html_inputfield($attrib);
 
   $subject = '';
@@ -810,7 +854,7 @@
 function rcmail_store_target_selection($attrib)
 {
   $attrib['name'] = '_store_target';
-  $select = rcmail_mailbox_select(array('noselection' => '- '.rcube_label('dontsave').' -'));
+  $select = rcmail_mailbox_select(array_merge($attrib, array('noselection' => '- '.rcube_label('dontsave').' -')));
   return $select->show(rcmail::get_instance()->config->get('sent_mbox'), $attrib);
 }
 

--
Gitblit v1.9.1