Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php/*** Smarty plugin* @package Smarty* @subpackage plugins*//*** Smarty {textformat}{/textformat} block plugin** Type: block function<br>* Name: textformat<br>* Purpose: format text a certain way with preset styles* or custom wrap/indent settings<br>* @link http://smarty.php.net/manual/en/language.function.textformat.php {textformat}* (Smarty online manual)* @param array* <pre>* Params: style: string (email)* indent: integer (0)* wrap: integer (80)* wrap_char string ("\n")* indent_char: string (" ")* wrap_boundary: boolean (true)* </pre>* @author Monte Ohrt <monte at ohrt dot com>* @param string contents of the block* @param Smarty clever simulation of a method* @return string string $content re-formatted*/function smarty_block_textformat($params, $content, &$smarty){if (is_null($content)) {return;}$style = null;$indent = 0;$indent_first = 0;$indent_char = ' ';$wrap = 80;$wrap_char = "\n";$wrap_cut = false;$assign = null;foreach ($params as $_key => $_val) {switch ($_key) {case 'style':case 'indent_char':case 'wrap_char':case 'assign':$$_key = (string)$_val;break;case 'indent':case 'indent_first':case 'wrap':$$_key = (int)$_val;break;case 'wrap_cut':$$_key = (bool)$_val;break;default:$smarty->trigger_error("textformat: unknown attribute '$_key'");}}if ($style == 'email') {$wrap = 72;}// split into paragraphs$_paragraphs = preg_split('![\r\n][\r\n]!',$content);$_output = '';for($_x = 0, $_y = count($_paragraphs); $_x < $_y; $_x++) {if ($_paragraphs[$_x] == '') {continue;}// convert mult. spaces & special chars to single space$_paragraphs[$_x] = preg_replace(array('!\s+!','!(^\s+)|(\s+$)!'), array(' ',''), $_paragraphs[$_x]);// indent first lineif($indent_first > 0) {$_paragraphs[$_x] = str_repeat($indent_char, $indent_first) . $_paragraphs[$_x];}// wordwrap sentences$_paragraphs[$_x] = wordwrap($_paragraphs[$_x], $wrap - $indent, $wrap_char, $wrap_cut);// indent linesif($indent > 0) {$_paragraphs[$_x] = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraphs[$_x]);}}$_output = implode($wrap_char . $wrap_char, $_paragraphs);return $assign ? $smarty->assign($assign, $_output) : $_output;}/* vim: set expandtab: */?>