diff options
author | Aleksander Machniak <alec@alec.pl> | 2013-01-20 11:57:46 +0100 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2013-01-20 11:57:46 +0100 |
commit | 9deb663f94e9819e9a0b5c6bb2026e1e37bac5e3 (patch) | |
tree | 0424c9de71fa2584d727f7400b60cfbdae029ab5 /program/lib/Roundcube/rcube_mime.php | |
parent | 1aca4cb3ae688a7ccf887cfea0a7ae62505631d6 (diff) |
More improvements to format=flowed handling + fix in wordwrap() used internally by format_flowed()
Diffstat (limited to 'program/lib/Roundcube/rcube_mime.php')
-rw-r--r-- | program/lib/Roundcube/rcube_mime.php | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/program/lib/Roundcube/rcube_mime.php b/program/lib/Roundcube/rcube_mime.php index fd91ca979..e9d5cf148 100644 --- a/program/lib/Roundcube/rcube_mime.php +++ b/program/lib/Roundcube/rcube_mime.php @@ -477,9 +477,10 @@ class rcube_mime foreach ($text as $idx => $line) { if ($line[0] == '>') { - $len = strlen($line); - $line = preg_replace('/^>+ {0,1}/', '', $line); - $q = $len - strlen($line); + // remove quote chars, store level in $q + $line = preg_replace('/^>+/', '', $line, -1, $q); + // remove (optional) space-staffing + $line = preg_replace('/^ /', '', $line); // The same paragraph (We join current line with the previous one) when: // - the same level of quoting @@ -540,10 +541,12 @@ class rcube_mime foreach ($text as $idx => $line) { if ($line != '-- ') { - if ($line[0] == '>' && preg_match('/^(>+ {0,1})+/', $line, $regs)) { - $level = substr_count($regs[0], '>'); + if ($line[0] == '>') { + // remove quote chars, store level in $level + $line = preg_replace('/^>+/', '', $line, -1, $level); + // remove (optional) space-staffing + $line = preg_replace('/^ /', '', $line); $prefix = str_repeat('>', $level) . ' '; - $line = rtrim(substr($line, strlen($regs[0]))); $line = $prefix . self::wordwrap($line, $length - $level - 2, " \r\n$prefix", false, $charset); } else if ($line) { @@ -583,7 +586,7 @@ class rcube_mime while (count($para)) { $line = array_shift($para); if ($line[0] == '>') { - $string .= $line.$break; + $string .= $line . (count($para) ? $break : ''); continue; } |