alecpl
2010-10-12 ba12c76300387988c95417d97b50243a9682d4b6
- Fix signature removal when replying in HTML to plain/text message


2 files modified
51 ■■■■■ changed files
program/steps/mail/compose.inc 46 ●●●●● patch | view | raw | blame | history
program/steps/mail/func.inc 5 ●●●●● patch | view | raw | blame | history
program/steps/mail/compose.inc
@@ -537,7 +537,12 @@
        $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 @@
    $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 @@
  
  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;
program/steps/mail/func.inc
@@ -843,12 +843,13 @@
  // 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;