From cb2bc809ef29f349d38c89e202d821e67bb4c947 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Tue, 21 Sep 2010 14:47:55 -0400
Subject: [PATCH] Fix db_mode check in insert_id()

---
 program/steps/mail/sendmail.inc |   52 ++++++++++++++++++++++++++++++----------------------
 1 files changed, 30 insertions(+), 22 deletions(-)

diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index 3c32530..3902b9a 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -205,7 +205,7 @@
 if (strlen($_POST['_draft_saveid']) > 3)
   $olddraftmessageid = get_input_value('_draft_saveid', RCUBE_INPUT_POST);
 
-$message_id = sprintf('<%s@%s>', md5(uniqid('rcmail'.mt_rand(),true)), $RCMAIL->config->mail_domain($_SESSION['imap_host']));
+$message_id = rcmail_gen_message_id();
 
 // set default charset
 $input_charset = $OUTPUT->get_charset();
@@ -287,7 +287,7 @@
   $headers['Received'] = $http_header;
 }
 
-$headers['Date'] = date('r');
+$headers['Date'] = rcmail_user_date();
 $headers['From'] = rcube_charset_convert($identity_arr['string'], RCMAIL_CHARSET, $message_charset);
 $headers['To'] = $mailto;
 
@@ -358,7 +358,7 @@
   $headers['User-Agent'] = $CONFIG['useragent'];
 
 // exec hook for header checking and manipulation
-$data = $RCMAIL->plugins->exec_hook('outgoing_message_headers', array('headers' => $headers));
+$data = $RCMAIL->plugins->exec_hook('message_outgoing_headers', array('headers' => $headers));
 
 // sending aborted by plugin
 if ($data['abort'] && !$savedraft) {
@@ -384,11 +384,20 @@
     $message_body = preg_replace('/<blockquote>/',
 	'<blockquote type="cite" style="'.$bstyle.'">', $message_body);
   }
+
   // generic footer for all messages
-  if (!empty($CONFIG['generic_message_footer'])) {
+  if ($isHtml && !empty($CONFIG['generic_message_footer_html'])) {
+      $footer = file_get_contents(realpath($CONFIG['generic_message_footer_html']));
+      $footer = rcube_charset_convert($footer, RCMAIL_CHARSET, $message_charset);
+  }
+  else if (!empty($CONFIG['generic_message_footer'])) {
     $footer = file_get_contents(realpath($CONFIG['generic_message_footer']));
     $footer = rcube_charset_convert($footer, RCMAIL_CHARSET, $message_charset);
+    if ($isHtml)
+      $footer = '<pre>'.$footer.'</pre>';
   }
+  if ($footer)
+    $message_body .= "\r\n" . $footer;
 }
 
 // set line length for body wrapping
@@ -419,16 +428,16 @@
 // the HTML part and the plain-text part
 
 if ($isHtml) {
-  $plugin = $RCMAIL->plugins->exec_hook('outgoing_message_body',
+  $plugin = $RCMAIL->plugins->exec_hook('message_outgoing_body',
     array('body' => $message_body, 'type' => 'html', 'message' => $MAIL_MIME));
 
-  $MAIL_MIME->setHTMLBody($plugin['body'] . ($footer ? "\r\n<pre>".$footer.'</pre>' : ''));
+  $MAIL_MIME->setHTMLBody($plugin['body']);
 
   // add a plain text version of the e-mail as an alternative part.
   $h2t = new html2text($plugin['body'], false, true, 0);
-  $plainTextPart = rc_wordwrap($h2t->get_text(), $LINE_LENGTH, "\r\n") . ($footer ? "\r\n".$footer : '');
+  $plainTextPart = rc_wordwrap($h2t->get_text(), $LINE_LENGTH, "\r\n");
   $plainTextPart = wordwrap($plainTextPart, 998, "\r\n", true);
-  if (!strlen($plainTextPart)) {
+  if (!$plainTextPart) {
     // empty message body breaks attachment handling in drafts 
     $plainTextPart = "\r\n"; 
   }
@@ -437,7 +446,7 @@
     $plainTextPart = preg_replace('/\r?\n/', "\r\n", $plainTextPart);
   }
 
-  $plugin = $RCMAIL->plugins->exec_hook('outgoing_message_body',
+  $plugin = $RCMAIL->plugins->exec_hook('message_outgoing_body',
     array('body' => $plainTextPart, 'type' => 'alternative', 'message' => $MAIL_MIME));
 
   $MAIL_MIME->setTXTBody($plugin['body']);
@@ -447,25 +456,24 @@
   $message_body = rcmail_fix_emoticon_paths($MAIL_MIME);
 }
 else {
-  if ($footer)
-    $message_body .= "\r\n" . $footer;
-  
-  // compose format=flowed content if enabled and not a reply message
-  if (empty($_SESSION['compose']['reply_msgid']) && ($flowed = $RCMAIL->config->get('send_format_flowed', true)))
-    $message_body = rcube_message::format_flowed($message_body, $LINE_LENGTH);
+  $plugin = $RCMAIL->plugins->exec_hook('message_outgoing_body',
+    array('body' => $message_body, 'type' => 'plain', 'message' => $MAIL_MIME));
+
+  $message_body = $plugin['body'];
+
+  // compose format=flowed content if enabled
+  if ($flowed = $RCMAIL->config->get('send_format_flowed', true))
+    $message_body = rcube_message::format_flowed($message_body, min($LINE_LENGTH+2, 79));
   else
     $message_body = rc_wordwrap($message_body, $LINE_LENGTH, "\r\n");
-  
+
   $message_body = wordwrap($message_body, 998, "\r\n", true);
   if (!strlen($message_body)) { 
     // empty message body breaks attachment handling in drafts 
     $message_body = "\r\n"; 
   }
 
-  $plugin = $RCMAIL->plugins->exec_hook('outgoing_message_body',
-    array('body' => $message_body, 'type' => 'plain', 'message' => $MAIL_MIME));
-
-  $MAIL_MIME->setTXTBody($plugin['body'], false, true);
+  $MAIL_MIME->setTXTBody($message_body, false, true);
 }
 
 // add stored attachments, if any
@@ -473,7 +481,7 @@
 {
   foreach ($_SESSION['compose']['attachments'] as $id => $attachment) {
     // This hook retrieves the attachment contents from the file storage backend
-    $attachment = $RCMAIL->plugins->exec_hook('get_attachment', $attachment);
+    $attachment = $RCMAIL->plugins->exec_hook('attachment_get', $attachment);
 
     $dispurl = '/\ssrc\s*=\s*[\'"]*\S+display-attachment\S+file=rcmfile' . preg_quote($attachment['id']) . '[\s\'"]*/';
     $message_body = $MAIL_MIME->getHTMLBody();
@@ -687,4 +695,4 @@
   $OUTPUT->send('iframe');
   }
 
-?>
+

--
Gitblit v1.9.1