From 3c5510065501dfab6dd7c9dd2bebbac87e125bdc Mon Sep 17 00:00:00 2001 From: mohrt Date: Mon, 13 Jun 2005 19:22:29 +0000 Subject: [PATCH] add "middle" parameter to truncate modifier --- NEWS | 1 + libs/plugins/modifier.truncate.php | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index 8589ac99..79954545 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,4 @@ + - add "middle" parameter to truncate (monte) - make form input label ids optional (monte) - add error message for empty if/elseif statements (eykanal, monte) diff --git a/libs/plugins/modifier.truncate.php b/libs/plugins/modifier.truncate.php index 15a26ba9..93c3f510 100644 --- a/libs/plugins/modifier.truncate.php +++ b/libs/plugins/modifier.truncate.php @@ -13,29 +13,35 @@ * Name: truncate
* Purpose: Truncate a string to a certain length if necessary, * optionally splitting in the middle of a word, and - * appending the $etc string. + * appending the $etc string or inserting $etc into the middle. * @link http://smarty.php.net/manual/en/language.modifier.truncate.php * truncate (Smarty online manual) * @param string * @param integer * @param string * @param boolean + * @param boolean * @return string */ function smarty_modifier_truncate($string, $length = 80, $etc = '...', - $break_words = false) + $break_words = false, $middle = false) { if ($length == 0) return ''; if (strlen($string) > $length) { $length -= strlen($etc); - if (!$break_words) + if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1)); - - return substr($string, 0, $length).$etc; - } else + } + if(!$middle) { + return substr($string, 0, $length).$etc; + } else { + return substr($string, 0, $length/2) . $etc . substr($string, -$length/2); + } + } else { return $string; + } } /* vim: set expandtab: */