2022-12-21 16:33:26 +01:00
|
|
|
<?php
|
|
|
|
|
/**
|
|
|
|
|
* Smarty Resource Plugin
|
|
|
|
|
*
|
|
|
|
|
* @package Smarty
|
|
|
|
|
* @subpackage TemplateResources
|
|
|
|
|
* @author Rodney Rehm
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
namespace Smarty\Resource;
|
|
|
|
|
|
2022-12-23 14:03:05 +01:00
|
|
|
use Smarty\Smarty;
|
2022-12-22 21:23:22 +01:00
|
|
|
use Smarty\Template;
|
|
|
|
|
use Smarty\Template\Compiled;
|
2022-12-21 16:33:26 +01:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Smarty Resource Plugin
|
|
|
|
|
* Base implementation for resource plugins that don't compile cache
|
|
|
|
|
*
|
|
|
|
|
* @package Smarty
|
|
|
|
|
* @subpackage TemplateResources
|
|
|
|
|
*/
|
|
|
|
|
abstract class RecompiledPlugin extends BasePlugin {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Flag that it's an recompiled resource
|
|
|
|
|
*
|
|
|
|
|
* @var bool
|
|
|
|
|
*/
|
|
|
|
|
public $recompiled = true;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Resource does implement populateCompiledFilepath() method
|
|
|
|
|
*
|
|
|
|
|
* @var bool
|
|
|
|
|
*/
|
|
|
|
|
public $hasCompiledHandler = true;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* compile template from source
|
|
|
|
|
*
|
2022-12-22 21:23:22 +01:00
|
|
|
* @param Template $_smarty_tpl do not change variable name, is used by compiled template
|
2022-12-21 16:33:26 +01:00
|
|
|
*
|
|
|
|
|
* @throws Exception
|
|
|
|
|
*/
|
2022-12-22 21:23:22 +01:00
|
|
|
public function process(Template $_smarty_tpl) {
|
2022-12-21 16:33:26 +01:00
|
|
|
$compiled = &$_smarty_tpl->compiled;
|
|
|
|
|
$compiled->file_dependency = [];
|
|
|
|
|
$compiled->includes = [];
|
|
|
|
|
$compiled->nocache_hash = null;
|
|
|
|
|
$compiled->unifunc = null;
|
|
|
|
|
$level = ob_get_level();
|
|
|
|
|
ob_start();
|
|
|
|
|
$_smarty_tpl->loadCompiler();
|
|
|
|
|
// call compiler
|
|
|
|
|
try {
|
|
|
|
|
eval('?>' . $_smarty_tpl->compiler->compileTemplate($_smarty_tpl));
|
2023-01-02 00:49:38 +01:00
|
|
|
} catch (\Exception $e) {
|
2022-12-21 16:33:26 +01:00
|
|
|
unset($_smarty_tpl->compiler);
|
|
|
|
|
while (ob_get_level() > $level) {
|
|
|
|
|
ob_end_clean();
|
|
|
|
|
}
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
// release compiler object to free memory
|
|
|
|
|
unset($_smarty_tpl->compiler);
|
|
|
|
|
ob_get_clean();
|
|
|
|
|
$compiled->timestamp = time();
|
|
|
|
|
$compiled->exists = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* populate Compiled Object with compiled filepath
|
|
|
|
|
*
|
2022-12-22 21:23:22 +01:00
|
|
|
* @param Compiled $compiled compiled object
|
|
|
|
|
* @param Template $_template template object
|
2022-12-21 16:33:26 +01:00
|
|
|
*
|
|
|
|
|
* @return void
|
|
|
|
|
*/
|
2022-12-22 21:23:22 +01:00
|
|
|
public function populateCompiledFilepath(Compiled $compiled, Template $_template) {
|
2022-12-21 16:33:26 +01:00
|
|
|
$compiled->filepath = false;
|
|
|
|
|
$compiled->timestamp = false;
|
|
|
|
|
$compiled->exists = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Disable timestamp checks for recompiled resource.
|
|
|
|
|
*
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
/**
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
public function checkTimestamps() {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|