diff options
-rw-r--r-- | includes/common.inc | 7 | ||||
-rw-r--r-- | modules/comment.module | 2 | ||||
-rw-r--r-- | modules/comment/comment.module | 2 |
3 files changed, 8 insertions, 3 deletions
diff --git a/includes/common.inc b/includes/common.inc index dc72c88b9..31f3f426d 100644 --- a/includes/common.inc +++ b/includes/common.inc @@ -1722,14 +1722,19 @@ function drupal_xml_parser_create(&$data) { * The string to truncate. * @param $len * An upper limit on the returned string length. + * @param $wordsafe + * Flag to truncate at nearest word boundary. Defaults to FALSE. * @return * The truncated string. */ -function truncate_utf8($string, $len) { +function truncate_utf8($string, $len, $wordsafe = FALSE) { $slen = strlen($string); if ($slen <= $len) { return $string; } + if ($wordsafe) { + while (($string[--$len] != ' ') && ($len > 0)) {}; + } if ((ord($string[$len]) < 0x80) || (ord($string[$len]) >= 0xC0)) { return substr($string, 0, $len); } diff --git a/modules/comment.module b/modules/comment.module index fcf05d73a..08f9029ae 100644 --- a/modules/comment.module +++ b/modules/comment.module @@ -494,7 +494,7 @@ function comment_post($edit) { $edit['subject'] = strip_tags($edit['subject']); if ($edit['subject'] == '') { - $edit['subject'] = truncate_utf8(strip_tags($edit['comment']), 29); + $edit['subject'] = truncate_utf8(strip_tags($edit['comment']), 29, TRUE); } if (!form_get_errors()) { diff --git a/modules/comment/comment.module b/modules/comment/comment.module index fcf05d73a..08f9029ae 100644 --- a/modules/comment/comment.module +++ b/modules/comment/comment.module @@ -494,7 +494,7 @@ function comment_post($edit) { $edit['subject'] = strip_tags($edit['subject']); if ($edit['subject'] == '') { - $edit['subject'] = truncate_utf8(strip_tags($edit['comment']), 29); + $edit['subject'] = truncate_utf8(strip_tags($edit['comment']), 29, TRUE); } if (!form_get_errors()) { |