[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Smarty plugin to format text blocks 4 * 5 * @package Smarty 6 * @subpackage PluginsBlock 7 */ 8 9 /** 10 * Smarty {textformat}{/textformat} block plugin 11 * 12 * Type: block function<br> 13 * Name: textformat<br> 14 * Purpose: format text a certain way with preset styles 15 * or custom wrap/indent settings<br> 16 * Params: 17 * <pre> 18 * - style - string (email) 19 * - indent - integer (0) 20 * - wrap - integer (80) 21 * - wrap_char - string ("\n") 22 * - indent_char - string (" ") 23 * - wrap_boundary - boolean (true) 24 * </pre> 25 * 26 * @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat} 27 * (Smarty online manual) 28 * @param array $params parameters 29 * @param string $content contents of the block 30 * @param Smarty_Internal_Template $template template object 31 * @param boolean &$repeat repeat flag 32 * @return string content re-formatted 33 * @author Monte Ohrt <monte at ohrt dot com> 34 */ 35 function smarty_block_textformat($params, $content, $template, &$repeat) 36 { 37 if (is_null($content)) { 38 return; 39 } 40 41 $style = null; 42 $indent = 0; 43 $indent_first = 0; 44 $indent_char = ' '; 45 $wrap = 80; 46 $wrap_char = "\n"; 47 $wrap_cut = false; 48 $assign = null; 49 50 foreach ($params as $_key => $_val) { 51 switch ($_key) { 52 case 'style': 53 case 'indent_char': 54 case 'wrap_char': 55 case 'assign': 56 $$_key = (string)$_val; 57 break; 58 59 case 'indent': 60 case 'indent_first': 61 case 'wrap': 62 $$_key = (int)$_val; 63 break; 64 65 case 'wrap_cut': 66 $$_key = (bool)$_val; 67 break; 68 69 default: 70 trigger_error("textformat: unknown attribute '$_key'"); 71 } 72 } 73 74 if ($style == 'email') { 75 $wrap = 72; 76 } 77 // split into paragraphs 78 $_paragraphs = preg_split('![\r\n]{2}!', $content); 79 $_output = ''; 80 81 82 foreach ($_paragraphs as &$_paragraph) { 83 if (!$_paragraph) { 84 continue; 85 } 86 // convert mult. spaces & special chars to single space 87 $_paragraph = preg_replace(array('!\s+!' . Smarty::$_UTF8_MODIFIER, '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER), array(' ', ''), $_paragraph); 88 // indent first line 89 if ($indent_first > 0) { 90 $_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph; 91 } 92 // wordwrap sentences 93 if (Smarty::$_MBSTRING) { 94 require_once (SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php'); 95 $_paragraph = smarty_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut); 96 } else { 97 $_paragraph = wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut); 98 } 99 // indent lines 100 if ($indent > 0) { 101 $_paragraph = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraph); 102 } 103 } 104 $_output = implode($wrap_char . $wrap_char, $_paragraphs); 105 106 if ($assign) { 107 $template->assign($assign, $_output); 108 } else { 109 return $_output; 110 } 111 } 112 113 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |