summaryrefslogtreecommitdiff
path: root/inc/lib/Twig/Extensions/Extension
diff options
context:
space:
mode:
authorMichael Save <savetheinternet@tinyboard.org>2012-04-09 20:52:26 +1000
committerMichael Save <savetheinternet@tinyboard.org>2012-04-09 20:52:26 +1000
commit874b8cbf002e9d8bf0ff39671e1501165016320a (patch)
tree1428acec23fef6c607e10fd355d88af31c2029ed /inc/lib/Twig/Extensions/Extension
parent69c9a9dd452299e0e8f7335966a1d0b4036df583 (diff)
inc/contrib -> inc/lib
Diffstat (limited to 'inc/lib/Twig/Extensions/Extension')
-rw-r--r--inc/lib/Twig/Extensions/Extension/I18n.php45
-rw-r--r--inc/lib/Twig/Extensions/Extension/Tinyboard.php92
2 files changed, 137 insertions, 0 deletions
diff --git a/inc/lib/Twig/Extensions/Extension/I18n.php b/inc/lib/Twig/Extensions/Extension/I18n.php
new file mode 100644
index 00000000..1f795490
--- /dev/null
+++ b/inc/lib/Twig/Extensions/Extension/I18n.php
@@ -0,0 +1,45 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+class Twig_Extensions_Extension_I18n extends Twig_Extension
+{
+ /**
+ * Returns the token parser instances to add to the existing list.
+ *
+ * @return array An array of Twig_TokenParserInterface or Twig_TokenParserBrokerInterface instances
+ */
+ public function getTokenParsers()
+ {
+ return array(new Twig_Extensions_TokenParser_Trans());
+ }
+
+ /**
+ * Returns a list of filters to add to the existing list.
+ *
+ * @return array An array of filters
+ */
+ public function getFilters()
+ {
+ return array(
+ 'trans' => new Twig_Filter_Function('gettext'),
+ );
+ }
+
+ /**
+ * Returns the name of the extension.
+ *
+ * @return string The extension name
+ */
+ public function getName()
+ {
+ return 'i18n';
+ }
+}
+
diff --git a/inc/lib/Twig/Extensions/Extension/Tinyboard.php b/inc/lib/Twig/Extensions/Extension/Tinyboard.php
new file mode 100644
index 00000000..0cf7705a
--- /dev/null
+++ b/inc/lib/Twig/Extensions/Extension/Tinyboard.php
@@ -0,0 +1,92 @@
+<?php
+
+class Twig_Extensions_Extension_Tinyboard extends Twig_Extension
+{
+ /**
+ * Returns a list of filters to add to the existing list.
+ *
+ * @return array An array of filters
+ */
+ public function getFilters()
+ {
+ return Array(
+ 'filesize' => new Twig_Filter_Function('format_bytes', Array('needs_environment' => false)),
+ 'truncate' => new Twig_Filter_Function('twig_truncate_filter', array('needs_environment' => false)),
+ 'truncate_body' => new Twig_Filter_Function('truncate', array('needs_environment' => false)),
+ 'extension' => new Twig_Filter_Function('twig_extension_filter', array('needs_environment' => false)),
+ 'sprintf' => new Twig_Filter_Function('sprintf', array('needs_environment' => false)),
+ 'capcode' => new Twig_Filter_Function('capcode', array('needs_environment' => false)),
+ 'hasPermission' => new Twig_Filter_Function('twig_hasPermission_filter', array('needs_environment' => false)),
+ 'date' => new Twig_Filter_Function('twig_date_filter', array('needs_environment' => false)),
+ 'poster_id' => new Twig_Filter_Function('poster_id', array('needs_environment' => false)),
+ 'remove_whitespace' => new Twig_Filter_Function('twig_remove_whitespace_filter', array('needs_environment' => false)),
+ 'count' => new Twig_Filter_Function('count', array('needs_environment' => false)),
+ 'until' => new Twig_Filter_Function('until', array('needs_environment' => false))
+ );
+ }
+
+ /**
+ * Returns a list of functions to add to the existing list.
+ *
+ * @return array An array of filters
+ */
+ public function getFunctions()
+ {
+ return Array(
+ 'time' => new Twig_Filter_Function('time', array('needs_environment' => false)),
+ 'timezone' => new Twig_Filter_Function('twig_timezone_function', array('needs_environment' => false)),
+ 'createHiddenInputs' => new Twig_Filter_Function('createHiddenInputs', array('needs_environment' => false))
+ );
+ }
+
+ /**
+ * Returns the name of the extension.
+ *
+ * @return string The extension name
+ */
+ public function getName()
+ {
+ return 'tinyboard';
+ }
+}
+
+function twig_timezone_function() {
+ // there's probably a much easier way of doing this
+ return sprintf("%s%02d", ($hr = (int)floor(($tz = date('Z')) / 3600)) > 0 ? '+' : '-', abs($hr)) . ':' . sprintf("%02d", (($tz / 3600) - $hr) * 60);
+}
+
+function twig_remove_whitespace_filter($data) {
+ return preg_replace('/[\t\r\n]/', '', $data);
+}
+
+function twig_date_filter($date, $format) {
+ return strftime($format, $date);
+}
+
+function twig_hasPermission_filter($mod, $permission, $board) {
+ return hasPermission($permission, $board, $mod);
+}
+
+function twig_extension_filter($value, $case_insensitive = true) {
+ $ext = substr($value, strrpos($value, '.') + 1);
+ if($case_insensitive)
+ $ext = strtolower($ext);
+ return $ext;
+}
+
+function twig_sprintf_filter( $value, $var) {
+ return sprintf($value, $var);
+}
+
+function twig_truncate_filter($value, $length = 30, $preserve = false, $separator = '&hellip;') {
+ if (mb_strlen($value) > $length) {
+ if ($preserve) {
+ if (false !== ($breakpoint = strpos($value, ' ', $length))) {
+ $length = $breakpoint;
+ }
+ }
+ return substr($value, 0, $length) . $separator;
+ }
+ return $value;
+}
+