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