1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-05-09 09:05:23 +02:00

[ticket/11435] Create new template filter option (cleanup)

This allows us to only run cleanup on the last run of template compilation
and not cleanup during event parsing

PHPBB3-11435
This commit is contained in:
Nathan Guse 2013-05-20 11:45:32 -05:00
parent f26257dc51
commit c84fc97e90
2 changed files with 78 additions and 30 deletions

View File

@ -32,6 +32,13 @@ class phpbb_template_compile
*/
private $filter_params;
/**
* Array of default parameters
*
* @var array
*/
private $default_filter_params;
/**
* Constructor.
*
@ -44,7 +51,7 @@ class phpbb_template_compile
*/
public function __construct($allow_php, $style_names, $locator, $phpbb_root_path, $extension_manager = null, $user = null)
{
$this->filter_params = array(
$this->filter_params = $this->default_filter_params = array(
'allow_php' => $allow_php,
'style_names' => $style_names,
'locator' => $locator,
@ -52,9 +59,31 @@ class phpbb_template_compile
'extension_manager' => $extension_manager,
'user' => $user,
'template_compile' => $this,
'cleanup' => true,
);
}
/**
* Set filter parameters
*
* @param array $params Array of parameters (will be merged onto $this->filter_params)
*/
public function set_filter_params($params)
{
$this->filter_params = array_merge(
$this->filter_params,
$params
);
}
/**
* Reset filter parameters to their default settings
*/
public function reset_filter_params()
{
$this->filter_params = $this->default_filter_params;
}
/**
* Compiles template in $source_file and writes compiled template to
* cache directory

View File

@ -75,6 +75,14 @@ class phpbb_template_filter extends php_user_filter
*/
private $allow_php;
/**
* Whether cleanup will be performed on resulting code, see compile()
* (Preserve whitespace)
*
* @var bool
*/
private $cleanup = true;
/**
* Resource locator.
*
@ -183,6 +191,7 @@ class phpbb_template_filter extends php_user_filter
$this->phpbb_root_path = $this->params['phpbb_root_path'];
$this->style_names = $this->params['style_names'];
$this->extension_manager = $this->params['extension_manager'];
$this->cleanup = $this->params['cleanup'];
if (isset($this->params['user']))
{
$this->user = $this->params['user'];
@ -223,6 +232,8 @@ class phpbb_template_filter extends php_user_filter
$data = preg_replace('~<!-- ENDPHP -->.*?$~', '', $data);
}
if ($this->cleanup)
{
/*
Preserve whitespace.
@ -258,6 +269,8 @@ class phpbb_template_filter extends php_user_filter
$data = preg_replace('~(?<!^)(<\?php.+(?<!/\*\*/)\?>)$~m', "$1\n", $data);
$data = str_replace('/**/?>', "?>\n", $data);
$data = str_replace('?><?php', '', $data);
}
return $data;
}
@ -995,8 +1008,14 @@ class phpbb_template_filter extends php_user_filter
$all_compiled = '';
foreach ($files as $file)
{
$this->template_compile->set_filter_params(array(
'cleanup' => false,
));
$compiled = $this->template_compile->compile_file($file);
$this->template_compile->reset_filter_params();
if ($compiled === false)
{
if ($this->user)