From 0ac985f9ace9e4396d9cb5fa5b10b0e8df60de52 Mon Sep 17 00:00:00 2001 From: Peter Rotich <peter@enhancesoft.com> Date: Wed, 22 Aug 2018 04:55:28 +0000 Subject: [PATCH] Charset: Add generic transcode php_user_filter This will be useful when converting content on the fly on write or read - allowing for support for output filter for file storage backend. --- include/class.charset.php | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/include/class.charset.php b/include/class.charset.php index d33c3abd1..160c26fad 100644 --- a/include/class.charset.php +++ b/include/class.charset.php @@ -77,4 +77,32 @@ class Charset { return self::transcode($text, $charset, self::UTF8); } } + +class transcode_filter extends php_user_filter { + var $from; + var $to; + + function filter($in, $out, &$consumed, $closing) { + while ($bucket = stream_bucket_make_writeable($in)) { + $bucket->data = Charset::transcode($bucket->data, $this->from, + $this->to); + $consumed += $bucket->datalen; + stream_bucket_append($out, $bucket); + } + return PSFS_PASS_ON; + } + + function onCreate() { + switch ($this->filtername) { + case 'transcode.utf8-ascii': + $this->from ='utf-8'; + $this->to = 'ISO-8859-1'; + break; + default: + return false; + } + return true; + } +} +stream_filter_register('transcode.*', 'transcode_filter'); ?> -- GitLab