00001 <?php 00031 function smarty_block_textformat($params, $content, &$smarty) 00032 { 00033 if (is_null($content)) { 00034 return; 00035 } 00036 00037 $style = null; 00038 $indent = 0; 00039 $indent_first = 0; 00040 $indent_char = ' '; 00041 $wrap = 80; 00042 $wrap_char = "\n"; 00043 $wrap_cut = false; 00044 $assign = null; 00045 00046 foreach ($params as $_key => $_val) { 00047 switch ($_key) { 00048 case 'style': 00049 case 'indent_char': 00050 case 'wrap_char': 00051 case 'assign': 00052 $$_key = (string)$_val; 00053 break; 00054 00055 case 'indent': 00056 case 'indent_first': 00057 case 'wrap': 00058 $$_key = (int)$_val; 00059 break; 00060 00061 case 'wrap_cut': 00062 $$_key = (bool)$_val; 00063 break; 00064 00065 default: 00066 $smarty->trigger_error("textformat: unknown attribute '$_key'"); 00067 } 00068 } 00069 00070 if ($style == 'email') { 00071 $wrap = 72; 00072 } 00073 00074 // split into paragraphs 00075 $_paragraphs = preg_split('![\r\n][\r\n]!',$content); 00076 $_output = ''; 00077 00078 for($_x = 0, $_y = count($_paragraphs); $_x < $_y; $_x++) { 00079 if ($_paragraphs[$_x] == '') { 00080 continue; 00081 } 00082 // convert mult. spaces & special chars to single space 00083 $_paragraphs[$_x] = preg_replace(array('!\s+!','!(^\s+)|(\s+$)!'), array(' ',''), $_paragraphs[$_x]); 00084 // indent first line 00085 if($indent_first > 0) { 00086 $_paragraphs[$_x] = str_repeat($indent_char, $indent_first) . $_paragraphs[$_x]; 00087 } 00088 // wordwrap sentences 00089 $_paragraphs[$_x] = wordwrap($_paragraphs[$_x], $wrap - $indent, $wrap_char, $wrap_cut); 00090 // indent lines 00091 if($indent > 0) { 00092 $_paragraphs[$_x] = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraphs[$_x]); 00093 } 00094 } 00095 $_output = implode($wrap_char . $wrap_char, $_paragraphs); 00096 00097 return $assign ? $smarty->assign($assign, $_output) : $_output; 00098 00099 } 00100 00101 /* vim: set expandtab: */ 00102 00103 ?>
| Copyright © 2003 - 2009 MyOOS [Shopsystem]. All rights reserved. MyOOS [Shopsystem] is Free Software released under the GNU/GPL License. Webmaster: info@r23.de (Impressum) |
|
