[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/libraries/Smarty/libs/plugins/ -> block.textformat.php (source)

   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  ?>


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1