summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2010-10-12 08:56:46 +0000
committeralecpl <alec@alec.pl>2010-10-12 08:56:46 +0000
commitba12c76300387988c95417d97b50243a9682d4b6 (patch)
treef706cce4ab27b91611e552adbb06a0ee6016ab06
parent937e26a541e3144f6df812d7e8eb6de3d35f596d (diff)
- Fix signature removal when replying in HTML to plain/text message
-rw-r--r--program/steps/mail/compose.inc46
-rw-r--r--program/steps/mail/func.inc5
2 files changed, 34 insertions, 17 deletions
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 406033cb9..1b39b5885 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -537,7 +537,12 @@ function rcmail_prepare_message_body()
$body = $MESSAGE->first_html_part();
}
else {
- $body = rcmail_plain_body($MESSAGE->first_text_part());
+ $body = $MESSAGE->first_text_part();
+ // try to remove the signature
+ if ($RCMAIL->config->get('strip_existing_sig', true))
+ $body = rcmail_remove_signature($body);
+ // add HTML formatting
+ $body = rcmail_plain_body($body);
if ($body)
$body = '<pre>' . $body . '</pre>';
}
@@ -710,18 +715,8 @@ function rcmail_create_reply_body($body, $bodyIsHtml)
$body = preg_replace('/\r?\n/', "\n", $body);
// try to remove the signature
- if ($RCMAIL->config->get('strip_existing_sig', true)) {
- $len = strlen($body);
- while (($sp = strrpos($body, "-- \n", $sp ? -$len+$sp-1 : 0)) !== false) {
- if ($sp == 0 || $body[$sp-1] == "\n") {
- // do not touch blocks with more that X lines
- if (substr_count($body, "\n", $sp) < $RCMAIL->config->get('sig_max_lines', 15)) {
- $body = substr($body, 0, max(0, $sp-1));
- }
- break;
- }
- }
- }
+ if ($RCMAIL->config->get('strip_existing_sig', true))
+ $body = rcmail_remove_signature($body);
// soft-wrap and quote message text
$body = rcmail_wrap_and_quote(rtrim($body, "\n"), $LINE_LENGTH);
@@ -835,8 +830,29 @@ function rcmail_create_draft_body($body, $bodyIsHtml)
return $body;
}
-
-
+
+
+function rcmail_remove_signature($body)
+{
+ global $RCMAIL;
+
+ $len = strlen($body);
+ $sig_max_lines = $RCMAIL->config->get('sig_max_lines', 15);
+
+ while (($sp = strrpos($body, "-- \n", $sp ? -$len+$sp-1 : 0)) !== false) {
+ if ($sp == 0 || $body[$sp-1] == "\n") {
+ // do not touch blocks with more that X lines
+ if (substr_count($body, "\n", $sp) < $sig_max_lines) {
+ $body = substr($body, 0, max(0, $sp-1));
+ }
+ break;
+ }
+ }
+
+ return $body;
+}
+
+
function rcmail_write_compose_attachments(&$message, $bodyIsHtml)
{
global $OUTPUT;
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 1d65390c2..9a24a97c0 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -843,12 +843,13 @@ function rcmail_plain_body($body, $flowed=false)
// quote plain text
$body = Q(join("\n", $a_lines), 'dummy', false);
- // colorize signature
+ // colorize signature (up to <sig_max_lines> lines)
$len = strlen($body);
+ $sig_max_lines = $RCMAIL->config->get('sig_max_lines', 15);
while (($sp = strrpos($body, "-- \n", $sp ? -$len+$sp-1 : 0)) !== false) {
if ($sp == 0 || $body[$sp-1] == "\n") {
// do not touch blocks with more that X lines
- if (substr_count($body, "\n", $sp) < $RCMAIL->config->get('sig_max_lines', 15))
+ if (substr_count($body, "\n", $sp) < $sig_max_lines)
$body = substr($body, 0, max(0, $sp))
.'<span class="sig">'.substr($body, $sp).'</span>';
break;