Kyberia v2.0
[mirrors/Kyberia-bloodline.git] / inc / smarty / plugins / modifier.escape.php
diff --git a/inc/smarty/plugins/modifier.escape.php b/inc/smarty/plugins/modifier.escape.php
new file mode 100644 (file)
index 0000000..f0bf0aa
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+/**
+ * Smarty plugin
+ * @package Smarty
+ * @subpackage plugins
+ */
+
+
+/**
+ * Smarty escape modifier plugin
+ *
+ * Type:     modifier<br>
+ * Name:     escape<br>
+ * Purpose:  Escape the string according to escapement type
+ * @link http://smarty.php.net/manual/en/language.modifier.escape.php
+ *          escape (Smarty online manual)
+ * @param string
+ * @param html|htmlall|url|quotes|hex|hexentity|javascript
+ * @return string
+ */
+function smarty_modifier_escape($string, $esc_type = 'html')
+{
+    switch ($esc_type) {
+        case 'html':
+            return htmlspecialchars($string, ENT_QUOTES);
+
+        case 'htmlall':
+            return htmlentities($string, ENT_QUOTES);
+
+        case 'url':
+            return urlencode($string);
+
+        case 'quotes':
+            // escape unescaped single quotes
+            return preg_replace("%(?<!\\\\)'%", "\\'", $string);
+
+               case 'hex':
+                       // escape every character into hex
+                       $return = '';
+                       for ($x=0; $x < strlen($string); $x++) {
+                               $return .= '%' . bin2hex($string[$x]);
+                       }
+                       return $return;
+
+               case 'hexentity':
+                       $return = '';
+                       for ($x=0; $x < strlen($string); $x++) {
+                               $return .= '&#x' . bin2hex($string[$x]) . ';';
+                       }
+                       return $return;
+
+        case 'javascript':
+            // escape quotes and backslashes and newlines
+            return strtr($string, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n'));
+
+        default:
+            return $string;
+    }
+}
+
+/* vim: set expandtab: */
+
+?>
This page took 0.129273 seconds and 4 git commands to generate.