packages/ssoinabox-webui/root/usr/local/share/ssoinabox/htdocs/includes/smarty/plugins/shared.mb_wordwrap.php
changeset 0 3906ca745819
equal deleted inserted replaced
-1:000000000000 0:3906ca745819
       
     1 <?php
       
     2 /**
       
     3  * Smarty shared plugin
       
     4  *
       
     5  * @package Smarty
       
     6  * @subpackage PluginsShared
       
     7  */
       
     8 
       
     9 if(!function_exists('smarty_mb_wordwrap')) {
       
    10 
       
    11     /**
       
    12      * Wrap a string to a given number of characters
       
    13      *
       
    14      * @link http://php.net/manual/en/function.wordwrap.php for similarity
       
    15      * @param string  $str   the string to wrap
       
    16      * @param int     $width the width of the output
       
    17      * @param string  $break the character used to break the line
       
    18      * @param boolean $cut   ignored parameter, just for the sake of
       
    19      * @return string wrapped string
       
    20      * @author Rodney Rehm
       
    21      */
       
    22     function smarty_mb_wordwrap($str, $width=75, $break="\n", $cut=false)
       
    23     {
       
    24         // break words into tokens using white space as a delimiter
       
    25         $tokens = preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
       
    26         $length = 0;
       
    27         $t = '';
       
    28         $_previous = false;
       
    29 
       
    30         foreach ($tokens as $_token) {
       
    31             $token_length = mb_strlen($_token, Smarty::$_CHARSET);
       
    32             $_tokens = array($_token);
       
    33             if ($token_length > $width) {
       
    34                 // remove last space
       
    35                 $t = mb_substr($t, 0, -1, Smarty::$_CHARSET);
       
    36                 $_previous = false;
       
    37                 $length = 0;
       
    38 
       
    39                 if ($cut) {
       
    40                     $_tokens = preg_split('!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, $_token, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
       
    41                     // broken words go on a new line
       
    42                     $t .= $break;
       
    43                 }
       
    44             }
       
    45 
       
    46             foreach ($_tokens as $token) {
       
    47                 $_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token);
       
    48                 $token_length = mb_strlen($token, Smarty::$_CHARSET);
       
    49                 $length += $token_length;
       
    50 
       
    51                 if ($length > $width) {
       
    52                     // remove space before inserted break
       
    53                     if ($_previous && $token_length < $width) {
       
    54                         $t = mb_substr($t, 0, -1, Smarty::$_CHARSET);
       
    55                     }
       
    56 
       
    57                     // add the break before the token
       
    58                     $t .= $break;
       
    59                     $length = $token_length;
       
    60 
       
    61                     // skip space after inserting a break
       
    62                     if ($_space) {
       
    63                         $length = 0;
       
    64                         continue;
       
    65                     }
       
    66                 } else if ($token == "\n") {
       
    67                     // hard break must reset counters
       
    68                     $_previous = 0;
       
    69                     $length = 0;
       
    70                 } else {
       
    71                     // remember if we had a space or not
       
    72                     $_previous = $_space;
       
    73                 }
       
    74                 // add the token
       
    75                 $t .= $token;
       
    76             }
       
    77         }
       
    78 
       
    79         return $t;
       
    80     }
       
    81 
       
    82 }
       
    83 ?>