[ Index ]
 

Code source de phpMyVisites 2.3

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/libs/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   * @param string contents of the block
  27   * @param Smarty clever simulation of a method
  28   * @return string string $content re-formatted
  29   */
  30  function smarty_block_textformat($params, $content, &$smarty)
  31  {
  32      if (is_null($content)) {
  33          return;
  34      }
  35  
  36      $style = null;
  37      $indent = 0;
  38      $indent_first = 0;
  39      $indent_char = ' ';
  40      $wrap = 80;
  41      $wrap_char = "\n";
  42      $wrap_cut = false;
  43      $assign = null;
  44      
  45      foreach ($params as $_key => $_val) {
  46          switch ($_key) {
  47              case 'style':
  48              case 'indent_char':
  49              case 'wrap_char':
  50              case 'assign':
  51                  $$_key = (string)$_val;
  52                  break;
  53  
  54              case 'indent':
  55              case 'indent_first':
  56              case 'wrap':
  57                  $$_key = (int)$_val;
  58                  break;
  59  
  60              case 'wrap_cut':
  61                  $$_key = (bool)$_val;
  62                  break;
  63  
  64              default:
  65                  $smarty->trigger_error("textformat: unknown attribute '$_key'");
  66          }
  67      }
  68  
  69      if ($style == 'email') {
  70          $wrap = 72;
  71      }
  72  
  73      // split into paragraphs
  74      $_paragraphs = preg_split('![\r\n][\r\n]!',$content);
  75      $_output = '';
  76  
  77      for($_x = 0, $_y = count($_paragraphs); $_x < $_y; $_x++) {
  78          if ($_paragraphs[$_x] == '') {
  79              continue;
  80          }
  81          // convert mult. spaces & special chars to single space
  82          $_paragraphs[$_x] = preg_replace(array('!\s+!','!(^\s+)|(\s+$)!'), array(' ',''), $_paragraphs[$_x]);
  83          // indent first line
  84          if($indent_first > 0) {
  85              $_paragraphs[$_x] = str_repeat($indent_char, $indent_first) . $_paragraphs[$_x];
  86          }
  87          // wordwrap sentences
  88          $_paragraphs[$_x] = wordwrap($_paragraphs[$_x], $wrap - $indent, $wrap_char, $wrap_cut);
  89          // indent lines
  90          if($indent > 0) {
  91              $_paragraphs[$_x] = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraphs[$_x]);
  92          }
  93      }
  94      $_output = implode($wrap_char . $wrap_char, $_paragraphs);
  95  
  96      return $assign ? $smarty->assign($assign, $_output) : $_output;
  97  
  98  }
  99  
 100  /* vim: set expandtab: */
 101  
 102  ?>


Généré le : Mon Nov 26 14:10:01 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics