Hierarchy fixup
[mirrors/Kyberia-bloodline.git] / wwwroot / inc / smarty / node_methodz / block.textformat.php
diff --git a/wwwroot/inc/smarty/node_methodz/block.textformat.php b/wwwroot/inc/smarty/node_methodz/block.textformat.php
new file mode 100644 (file)
index 0000000..6e7d04f
--- /dev/null
@@ -0,0 +1,83 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+/**
+ * Smarty {textformat}{/textformat} block plugin
+ *
+ * Type:     block function<br>
+ * Name:     textformat<br>
+ * Purpose:  format text a certain way with preset styles
+ *           or custom wrap/indent settings<br>
+ * @link http://smarty.php.net/manual/en/language.function.textformat.php {textformat}
+ *       (Smarty online manual)
+ * @param array
+ * <pre>
+ * Params:   style: string (email)
+ *           indent: integer (0)
+ *           wrap: integer (80)
+ *           wrap_char string ("\n")
+ *           indent_char: string (" ")
+ *           wrap_boundary: boolean (true)
+ * </pre>
+ * @param string contents of the block
+ * @param Smarty clever simulation of a method
+ * @return string string $content re-formatted
+ */
+function smarty_block_textformat($params, $content, &$smarty)
+{
+       $style = null;
+       $indent = 0;
+       $indent_first = 0;
+       $indent_char = ' ';
+       $wrap = 80;
+       $wrap_char = "\n";
+       $wrap_cut = false;
+       $assign = null;
+
+       if($content == null) {
+               return true;
+       }
+
+    extract($params);
+
+       if($style == 'email') {
+               $wrap = 72;
+       }
+
+       // split into paragraphs
+       $paragraphs = preg_split('![\r\n][\r\n]!',$content);
+       $output = '';
+
+       foreach($paragraphs as $paragraph) {
+               if($paragraph == '') {
+                       continue;
+               }
+               // convert mult. spaces & special chars to single space
+               $paragraph = preg_replace(array('!\s+!','!(^\s+)|(\s+$)!'),array(' ',''),$paragraph);
+               // indent first line
+               if($indent_first > 0) {
+                       $paragraph = str_repeat($indent_char,$indent_first) . $paragraph;
+               }
+               // wordwrap sentences
+               $paragraph = wordwrap($paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
+               // indent lines
+               if($indent > 0) {
+                       $paragraph = preg_replace('!^!m',str_repeat($indent_char,$indent),$paragraph);
+               }
+               $output .= $paragraph . $wrap_char . $wrap_char;
+       }
+
+       if($assign != null) {
+               $smarty->assign($assign,$output);
+       } else {
+               return $output;
+       }
+}
+
+/* vim: set expandtab: */
+
+?>
This page took 0.154847 seconds and 4 git commands to generate.