[ Index ]
 

Code source de CMS made simple 1.0.5

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/lib/smarty/plugins/ -> block.textformat.php (source)

   1  <?php
   2  /**
   3   * Smarty plugin
   4   * @package Smarty
   5   * @subpackage plugins
   6   */
   7  
   8  /**
   9   * Smarty {textformat}{/textformat} block plugin
  10   *
  11   * Type:     block function<br>
  12   * Name:     textformat<br>
  13   * Purpose:  format text a certain way with preset styles
  14   *           or custom wrap/indent settings<br>
  15   * @link http://smarty.php.net/manual/en/language.function.textformat.php {textformat}
  16   *       (Smarty online manual)
  17   * @param array
  18   * <pre>
  19   * Params:   style: string (email)
  20   *           indent: integer (0)
  21   *           wrap: integer (80)
  22   *           wrap_char string ("\n")
  23   *           indent_char: string (" ")
  24   *           wrap_boundary: boolean (true)
  25   * </pre>
  26   * @author Monte Ohrt <monte at ohrt dot com>
  27   * @param string contents of the block
  28   * @param Smarty clever simulation of a method
  29   * @return string string $content re-formatted
  30   */
  31  function smarty_block_textformat($params, $content, &$smarty)
  32  {
  33      if (is_null($content)) {
  34          return;
  35      }
  36  
  37      $style = null;
  38      $indent = 0;
  39      $indent_first = 0;
  40      $indent_char = ' ';
  41      $wrap = 80;
  42      $wrap_char = "\n";
  43      $wrap_cut = false;
  44      $assign = null;
  45      
  46      foreach ($params as $_key => $_val) {
  47          switch ($_key) {
  48              case 'style':
  49              case 'indent_char':
  50              case 'wrap_char':
  51              case 'assign':
  52                  $$_key = (string)$_val;
  53                  break;
  54  
  55              case 'indent':
  56              case 'indent_first':
  57              case 'wrap':
  58                  $$_key = (int)$_val;
  59                  break;
  60  
  61              case 'wrap_cut':
  62                  $$_key = (bool)$_val;
  63                  break;
  64  
  65              default:
  66                  $smarty->trigger_error("textformat: unknown attribute '$_key'");
  67          }
  68      }
  69  
  70      if ($style == 'email') {
  71          $wrap = 72;
  72      }
  73  
  74      // split into paragraphs
  75      $_paragraphs = preg_split('![\r\n][\r\n]!',$content);
  76      $_output = '';
  77  
  78      for($_x = 0, $_y = count($_paragraphs); $_x < $_y; $_x++) {
  79          if ($_paragraphs[$_x] == '') {
  80              continue;
  81          }
  82          // convert mult. spaces & special chars to single space
  83          $_paragraphs[$_x] = preg_replace(array('!\s+!','!(^\s+)|(\s+$)!'), array(' ',''), $_paragraphs[$_x]);
  84          // indent first line
  85          if($indent_first > 0) {
  86              $_paragraphs[$_x] = str_repeat($indent_char, $indent_first) . $_paragraphs[$_x];
  87          }
  88          // wordwrap sentences
  89          $_paragraphs[$_x] = wordwrap($_paragraphs[$_x], $wrap - $indent, $wrap_char, $wrap_cut);
  90          // indent lines
  91          if($indent > 0) {
  92              $_paragraphs[$_x] = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraphs[$_x]);
  93          }
  94      }
  95      $_output = implode($wrap_char . $wrap_char, $_paragraphs);
  96  
  97      return $assign ? $smarty->assign($assign, $_output) : $_output;
  98  
  99  }
 100  
 101  /* vim: set expandtab: */
 102  
 103  ?>


Généré le : Tue Apr 3 18:50:37 2007 par Balluche grâce à PHPXref 0.7