From 0904405501f3ab2be2098c2bc387bc07be6d0592 Mon Sep 17 00:00:00 2001 From: philippe_mingo Date: Sat, 23 Mar 2002 16:36:39 +0000 Subject: [PATCH] Optimization: Wraping functions are only used in compose.php git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@2626 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- functions/strings.php | 82 ------------------------------------------ src/compose.php | 84 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 82 deletions(-) diff --git a/functions/strings.php b/functions/strings.php index 028c99c2..9277354a 100644 --- a/functions/strings.php +++ b/functions/strings.php @@ -36,88 +36,6 @@ function readShortMailboxName($haystack, $needle) { return( $elem ); } -/** - * Wraps text at $wrap characters - * - * Has a problem with special HTML characters, so call this before - * you do character translation. - * - * Specifically, ' comes up as 5 characters instead of 1. - * This should not add newlines to the end of lines. - */ -function sqWordWrap(&$line, $wrap) { - ereg("^([\t >]*)([^\t >].*)?$", $line, $regs); - $beginning_spaces = $regs[1]; - if (isset($regs[2])) { - $words = explode(' ', $regs[2]); - } else { - $words = ''; - } - - $i = 0; - $line = $beginning_spaces; - - while ($i < count($words)) { - /* Force one word to be on a line (minimum) */ - $line .= $words[$i]; - $line_len = strlen($beginning_spaces) + strlen($words[$i]) + 2; - if (isset($words[$i + 1])) - $line_len += strlen($words[$i + 1]); - $i ++; - - /* Add more words (as long as they fit) */ - while ($line_len < $wrap && $i < count($words)) { - $line .= ' ' . $words[$i]; - $i++; - if (isset($words[$i])) - $line_len += strlen($words[$i]) + 1; - else - $line_len += 1; - } - - /* Skip spaces if they are the first thing on a continued line */ - while (!isset($words[$i]) && $i < count($words)) { - $i ++; - } - - /* Go to the next line if we have more to process */ - if ($i < count($words)) { - $line .= "\n" . $beginning_spaces; - } - } -} - - -/** - * Does the opposite of sqWordWrap() - */ -function sqUnWordWrap(&$body) { - $lines = explode("\n", $body); - $body = ''; - $PreviousSpaces = ''; - for ($i = 0; $i < count($lines); $i ++) { - ereg("^([\t >]*)([^\t >].*)?$", $lines[$i], $regs); - $CurrentSpaces = $regs[1]; - if (isset($regs[2])) { - $CurrentRest = $regs[2]; - } - - if ($i == 0) { - $PreviousSpaces = $CurrentSpaces; - $body = $lines[$i]; - } else if (($PreviousSpaces == $CurrentSpaces) /* Do the beginnings match */ - && (strlen($lines[$i - 1]) > 65) /* Over 65 characters long */ - && strlen($CurrentRest)) { /* and there's a line to continue with */ - $body .= ' ' . $CurrentRest; - } else { - $body .= "\n" . $lines[$i]; - $PreviousSpaces = $CurrentSpaces; - } - } - $body .= "\n"; -} - - /** * Returns an array of email addresses. * Be cautious of "user@host.com" diff --git a/src/compose.php b/src/compose.php index de502179..22935f95 100644 --- a/src/compose.php +++ b/src/compose.php @@ -25,6 +25,90 @@ require_once('../functions/smtp.php'); require_once('../functions/display_messages.php'); require_once('../functions/plugin.php'); +/* --------------------- Specific Functions ------------------------------ */ + +/** + * Wraps text at $wrap characters + * + * Has a problem with special HTML characters, so call this before + * you do character translation. + * + * Specifically, ' comes up as 5 characters instead of 1. + * This should not add newlines to the end of lines. + */ +function sqWordWrap(&$line, $wrap) { + ereg("^([\t >]*)([^\t >].*)?$", $line, $regs); + $beginning_spaces = $regs[1]; + if (isset($regs[2])) { + $words = explode(' ', $regs[2]); + } else { + $words = ''; + } + + $i = 0; + $line = $beginning_spaces; + + while ($i < count($words)) { + /* Force one word to be on a line (minimum) */ + $line .= $words[$i]; + $line_len = strlen($beginning_spaces) + strlen($words[$i]) + 2; + if (isset($words[$i + 1])) + $line_len += strlen($words[$i + 1]); + $i ++; + + /* Add more words (as long as they fit) */ + while ($line_len < $wrap && $i < count($words)) { + $line .= ' ' . $words[$i]; + $i++; + if (isset($words[$i])) + $line_len += strlen($words[$i]) + 1; + else + $line_len += 1; + } + + /* Skip spaces if they are the first thing on a continued line */ + while (!isset($words[$i]) && $i < count($words)) { + $i ++; + } + + /* Go to the next line if we have more to process */ + if ($i < count($words)) { + $line .= "\n" . $beginning_spaces; + } + } +} + +/** + * Does the opposite of sqWordWrap() + */ +function sqUnWordWrap(&$body) { + $lines = explode("\n", $body); + $body = ''; + $PreviousSpaces = ''; + for ($i = 0; $i < count($lines); $i ++) { + ereg("^([\t >]*)([^\t >].*)?$", $lines[$i], $regs); + $CurrentSpaces = $regs[1]; + if (isset($regs[2])) { + $CurrentRest = $regs[2]; + } + + if ($i == 0) { + $PreviousSpaces = $CurrentSpaces; + $body = $lines[$i]; + } else if (($PreviousSpaces == $CurrentSpaces) /* Do the beginnings match */ + && (strlen($lines[$i - 1]) > 65) /* Over 65 characters long */ + && strlen($CurrentRest)) { /* and there's a line to continue with */ + $body .= ' ' . $CurrentRest; + } else { + $body .= "\n" . $lines[$i]; + $PreviousSpaces = $CurrentSpaces; + } + } + $body .= "\n"; +} + +/* ----------------------------------------------------------------------- */ + if (!isset($attachments)) { $attachments = array(); session_register('attachments'); -- 2.25.1