PageRenderTime 36ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/lib/horde/framework/Horde/Stream/Filter/Htmlspecialchars.php

https://bitbucket.org/moodle/moodle
PHP | 40 lines | 13 code | 1 blank | 26 comment | 1 complexity | 346e4d074931553c9613bf3362955844 MD5 | raw file
Possible License(s): Apache-2.0, LGPL-2.1, BSD-3-Clause, MIT, GPL-3.0
  1. <?php
  2. /**
  3. * Stream filter class to pass data to htmlspecialchars() in chunks.
  4. *
  5. * WARNING: This filter is not safe on multi-byte character sets, because
  6. * multi-byte characters might be split on chunk boundaries. This filter should
  7. * be considered a duct tape if the data passed to htmlspecialchars() is too
  8. * big for PHP's memory_limit.
  9. *
  10. * Usage:
  11. * stream_filter_register('htmlspecialchars', 'Horde_Stream_Filter_Htmlspecialchars');
  12. * stream_filter_[app|pre]pend($stream, 'htmlspecialchars',
  13. * [ STREAM_FILTER_[READ|WRITE|ALL] ]);
  14. *
  15. * Copyright 2012-2017 Horde LLC (http://www.horde.org/)
  16. *
  17. * See the enclosed file LICENSE for license information (LGPL). If you
  18. * did not receive this file, see http://www.horde.org/licenses/lgpl21.
  19. *
  20. * @author Jan Schneider <jan@horde.org>
  21. * @category Horde
  22. * @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
  23. * @package Stream_Filter
  24. */
  25. class Horde_Stream_Filter_Htmlspecialchars extends php_user_filter
  26. {
  27. /**
  28. * @see stream_filter_register()
  29. */
  30. public function filter($in, $out, &$consumed, $closing)
  31. {
  32. while ($bucket = stream_bucket_make_writeable($in)) {
  33. $bucket->data = htmlspecialchars($bucket->data);
  34. $consumed += $bucket->datalen;
  35. stream_bucket_append($out, $bucket);
  36. }
  37. return PSFS_PASS_ON;
  38. }
  39. }