diff options
author | redmatrix <redmatrix@redmatrix.me> | 2015-12-06 14:22:55 -0800 |
---|---|---|
committer | redmatrix <redmatrix@redmatrix.me> | 2015-12-06 14:22:55 -0800 |
commit | a88ec1b1af954a447a666d3ff66b1d1df0a645db (patch) | |
tree | 7ccfe6a03923ad118910202e21a605e13127192c /library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php | |
parent | 553b3a5c6c2ba6b93ad1193ec044ee92cf7690aa (diff) | |
parent | a6cb25020bb5200cc3c00ecc941ddb751644fbcc (diff) | |
download | volse-hubzilla-a88ec1b1af954a447a666d3ff66b1d1df0a645db.tar.gz volse-hubzilla-a88ec1b1af954a447a666d3ff66b1d1df0a645db.tar.bz2 volse-hubzilla-a88ec1b1af954a447a666d3ff66b1d1df0a645db.zip |
Merge https://github.com/redmatrix/hubzilla into pending_merge
Diffstat (limited to 'library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php')
-rw-r--r-- | library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php | 81 |
1 files changed, 58 insertions, 23 deletions
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php b/library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php index 117310439..56d3b0665 100644 --- a/library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php +++ b/library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php @@ -18,6 +18,20 @@ class Smarty_Internal_Config_File_Compiler { /** + * Lexer class name + * + * @var string + */ + public $lexer_class; + + /** + * Parser class name + * + * @var string + */ + public $parser_class; + + /** * Lexer object * * @var object @@ -41,9 +55,9 @@ class Smarty_Internal_Config_File_Compiler /** * Smarty object * - * @var Smarty_Internal_Config object + * @var Smarty_Internal_Template object */ - public $config; + public $template; /** * Compiled config data sections and variables @@ -53,39 +67,52 @@ class Smarty_Internal_Config_File_Compiler public $config_data = array(); /** + * compiled config data must always be written + * + * @var bool + */ + public $write_compiled_code = true; + + /** * Initialize compiler * - * @param Smarty $smarty base instance + * @param string $lexer_class class name + * @param string $parser_class class name + * @param Smarty $smarty global instance */ - public function __construct($smarty) + public function __construct($lexer_class, $parser_class, Smarty $smarty) { $this->smarty = $smarty; + // get required plugins + $this->lexer_class = $lexer_class; + $this->parser_class = $parser_class; + $this->smarty = $smarty; $this->config_data['sections'] = array(); $this->config_data['vars'] = array(); } /** - * Method to compile a Smarty template. + * Method to compile Smarty config source. * - * @param Smarty_Internal_Config $config config object + * @param Smarty_Internal_Template $template * - * @return bool true if compiling succeeded, false if it failed + * @return bool true if compiling succeeded, false if it failed */ - public function compileSource(Smarty_Internal_Config $config) + public function compileTemplate(Smarty_Internal_Template $template) { - /* here is where the compiling takes place. Smarty - tags in the templates are replaces with PHP code, - then written to compiled files. */ - $this->config = $config; - // get config file source - $_content = $config->source->content . "\n"; - // on empty template just return - if ($_content == '') { - return true; + $this->template = $template; + $this->template->compiled->file_dependency[$this->template->source->uid] = array($this->template->source->filepath, + $this->template->source->getTimeStamp(), + $this->template->source->type); + if ($this->smarty->debugging) { + $this->smarty->_debug->start_compile($this->template); } // init the lexer/parser to compile the config file - $lex = new Smarty_Internal_Configfilelexer($_content, $this); - $parser = new Smarty_Internal_Configfileparser($lex, $this); + /* @var Smarty_Internal_ConfigFileLexer $lex */ + $lex = new $this->lexer_class(str_replace(array("\r\n", "\r"), "\n", $template->source->getContent()) . + "\n", $this); + /* @var Smarty_Internal_ConfigFileParser $parser */ + $parser = new $this->parser_class($lex, $this); if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) { $mbEncoding = mb_internal_encoding(); @@ -94,7 +121,6 @@ class Smarty_Internal_Config_File_Compiler $mbEncoding = null; } - if ($this->smarty->_parserdebug) { $parser->PrintTrace(); } @@ -111,8 +137,17 @@ class Smarty_Internal_Config_File_Compiler if ($mbEncoding) { mb_internal_encoding($mbEncoding); } + if ($this->smarty->debugging) { + $this->smarty->_debug->end_compile($this->template); + } + // template header code + $template_header = "<?php /* Smarty version " . Smarty::SMARTY_VERSION . ", created on " . + strftime("%Y-%m-%d %H:%M:%S") . "\n"; + $template_header .= " compiled from \"" . $this->template->source->filepath . "\" */ ?>\n"; - $config->compiled_config = '<?php $_config_vars = ' . var_export($this->config_data, true) . '; ?>'; + $code = '<?php $_smarty_tpl->smarty->ext->configLoad->_loadConfigVars($_smarty_tpl, ' . + var_export($this->config_data, true) . '); ?>'; + return $template_header . $this->template->smarty->ext->_codeFrame->create($this->template, $code); } /** @@ -129,13 +164,13 @@ class Smarty_Internal_Config_File_Compiler { $this->lex = Smarty_Internal_Configfilelexer::instance(); $this->parser = Smarty_Internal_Configfileparser::instance(); - // get template source line which has error + // get config source line which has error $line = $this->lex->line; if (isset($args)) { // $line--; } $match = preg_split("/\n/", $this->lex->data); - $error_text = "Syntax error in config file '{$this->config->source->filepath}' on line {$line} '{$match[$line - 1]}' "; + $error_text = "Syntax error in config file '{$this->template->source->filepath}' on line {$line} '{$match[$line - 1]}' "; if (isset($args)) { // individual error message $error_text .= $args; |