From 95462dca5876809b70daca6eda3b170fe706bea2 Mon Sep 17 00:00:00 2001 From: "Marek A. R" Date: Sat, 12 Jul 2008 18:22:47 +0000 Subject: [PATCH] git-svn-id: file:///svn/phpbb/trunk@8680 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_template.php | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/phpBB/includes/functions_template.php b/phpBB/includes/functions_template.php index 756331d3fa..18291c8026 100644 --- a/phpBB/includes/functions_template.php +++ b/phpBB/includes/functions_template.php @@ -28,18 +28,29 @@ class template_filter extends php_user_filter private $block_names = array(); private $block_else_level = array(); + + private $chunk; function filter($in, $out, &$consumed/*, $closing*/) { while ($bucket = stream_bucket_make_writeable($in)) { - $bucket->data = $this->compile($bucket->data); + $last_nl = strrpos($bucket->data, "\n"); + $data = $this->chunk . substr($bucket->data, 0, $last_nl); + $this->chunk = substr($bucket->data, $last_nl); + $bucket->data = $this->compile($data); $consumed += $bucket->datalen; stream_bucket_append($out, $bucket); } return PSFS_PASS_ON; } - + + public function onCreate() + { + $this->chunk = ''; + return true; + } + private function compile($data) { return preg_replace_callback($this->regex, array($this, 'replace'), $data); @@ -643,6 +654,8 @@ stream_filter_register('template', 'template_filter'); */ class template_compile { + const BUFFER = 8192; + private $template; /** @@ -652,7 +665,7 @@ class template_compile { $this->template = &$template; } - + /** * Load template source from file * @access public @@ -689,13 +702,15 @@ class template_compile stream_filter_append($destination_handle, 'template'); @flock($destination_handle, LOCK_EX); - @stream_copy_to_stream($source_handle, $destination_handle); + while (!feof($source_handle)) + { + @fwrite($destination_handle, fread($source_handle, self::BUFFER)); + } + @fwrite($destination_handle, "\n"); @flock($destination_handle, LOCK_UN); @fclose($destination_handle); @fclose($source_handle); - @chmod($filename, 0666); - } }