diff --git a/CHANGELOG b/CHANGELOG index 89554edea..47eef9b93 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ CHANGELOG Roundcube Webmail =========================== +- Remove common subject prefixes Re:, Re[x]:, Re-x: on reply (#1490497) - Added GSSAPI/Kerberos authentication plugin - krb_authentication - Password: Allow temporarily disabling the plugin functionality with a notice - Support more secure hashing algorithms for auth cookie - configurable by PHP's session.hash_function (#1490403) diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index 505f5d644..2e1c24091 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -1499,6 +1499,27 @@ function rcmail_basename($filename) } } +/** + * Creates reply subject by removing common subject + * prefixes/suffixes from the original message subject + */ +function rcmail_reply_subject($subject) +{ + $subject = trim($subject); + + // replace Re:, Re[x]:, Re-x (#1490497) + $prefix = '/^(re:|re\[\d\]:|re-\d:)\s*/i'; + do { + $subject = preg_replace($prefix, '', $subject, -1, $count); + } + while ($count); + + // replace (was: ...) (#1489375) + $subject = preg_replace('/\s*\([wW]as:[^\)]+\)\s*$/', '', $subject); + + return 'Re: ' . $subject; +} + function rcmail_compose_subject($attrib) { global $MESSAGE, $COMPOSE; @@ -1521,13 +1542,7 @@ function rcmail_compose_subject($attrib) } // create a reply-subject else if ($COMPOSE['mode'] == RCUBE_COMPOSE_REPLY) { - if (preg_match('/^re:/i', $MESSAGE->subject)) - $subject = $MESSAGE->subject; - else - $subject = 'Re: '.$MESSAGE->subject; - - // replace (was: ...) (#1489375) - $subject = preg_replace('/\s*\([wW]as:[^\)]+\)\s*$/', '', $subject); + $subject = rcmail_reply_subject($MESSAGE->subject); } // create a forward-subject else if ($COMPOSE['mode'] == RCUBE_COMPOSE_FORWARD) { @@ -1548,7 +1563,6 @@ function rcmail_compose_subject($attrib) return $out; } - function rcmail_compose_attachment_list($attrib) { global $RCMAIL, $OUTPUT, $COMPOSE;