diff options
| author | Michael Save <savetheinternet@tinyboard.org> | 2012-04-09 20:52:26 +1000 |
|---|---|---|
| committer | Michael Save <savetheinternet@tinyboard.org> | 2012-04-09 20:52:26 +1000 |
| commit | 874b8cbf002e9d8bf0ff39671e1501165016320a (patch) | |
| tree | 1428acec23fef6c607e10fd355d88af31c2029ed /inc/lib/Twig/Extensions/Extension/Tinyboard.php | |
| parent | 69c9a9dd452299e0e8f7335966a1d0b4036df583 (diff) | |
inc/contrib -> inc/lib
Diffstat (limited to 'inc/lib/Twig/Extensions/Extension/Tinyboard.php')
| -rw-r--r-- | inc/lib/Twig/Extensions/Extension/Tinyboard.php | 92 |
1 files changed, 92 insertions, 0 deletions
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 = '…') { + if (mb_strlen($value) > $length) { + if ($preserve) { + if (false !== ($breakpoint = strpos($value, ' ', $length))) { + $length = $breakpoint; + } + } + return substr($value, 0, $length) . $separator; + } + return $value; +} + |
