[feature/template-engine] Fix recompilation logic.

Do not change $recompile from true to false - any recompilation
condition alone is sufficient to force recompilation.

Also uncomment the nonexistent file test which passes with this fix.

PHPBB3-9726
This commit is contained in:
Oleg Pudeyev 2011-04-24 00:22:41 -04:00
parent 4dfe4c7f13
commit 203187a841
2 changed files with 14 additions and 11 deletions

View file

@ -343,19 +343,22 @@ class phpbb_template
$recompile = false; $recompile = false;
$recompile = (!file_exists($filename) || @filesize($filename) === 0 || ($config['load_tplcompile'] && @filemtime($filename) < @filemtime($this->files[$handle]))) ? true : false; $recompile = (!file_exists($filename) || @filesize($filename) === 0 || ($config['load_tplcompile'] && @filemtime($filename) < @filemtime($this->files[$handle]))) ? true : false;
if (defined('DEBUG_EXTRA')) if (!$recompile)
{ {
$recompile = true; if (defined('DEBUG_EXTRA'))
}
else if ($config['load_tplcompile'])
{
// No way around it: we need to check inheritance here
if ($user->theme['template_inherits_id'] && !file_exists($this->files[$handle]))
{ {
$this->files[$handle] = $this->files_inherit[$handle]; $recompile = true;
$this->files_template[$handle] = $user->theme['template_inherits_id']; }
else if ($config['load_tplcompile'])
{
// No way around it: we need to check inheritance here
if ($user->theme['template_inherits_id'] && !file_exists($this->files[$handle]))
{
$this->files[$handle] = $this->files_inherit[$handle];
$this->files_template[$handle] = $user->theme['template_inherits_id'];
}
$recompile = (@filemtime($filename) < @filemtime($this->files[$handle])) ? true : false;
} }
$recompile = (@filemtime($filename) < @filemtime($this->files[$handle])) ? true : false;
} }
// Recompile page if the original template is newer, otherwise load the compiled version // Recompile page if the original template is newer, otherwise load the compiled version

View file

@ -267,7 +267,7 @@ class phpbb_template_template_test extends phpbb_test_case
$this->assertFileNotExists($this->template_path . '/' . $filename, 'Testing missing file, file cannot exist'); $this->assertFileNotExists($this->template_path . '/' . $filename, 'Testing missing file, file cannot exist');
$expecting = sprintf('template->_tpl_load_file(): File %s does not exist or is empty', realpath($this->template_path . '/../') . '/templates/' . $filename); $expecting = sprintf('template->_tpl_load_file(): File %s does not exist or is empty', realpath($this->template_path . '/../') . '/templates/' . $filename);
// $this->setExpectedTriggerError(E_USER_ERROR, $expecting); $this->setExpectedTriggerError(E_USER_ERROR, $expecting);
$this->display('test'); $this->display('test');
} }