mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
Dynamic template includes :)
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9570 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
parent
92b6e5400e
commit
76cffeff0a
2 changed files with 41 additions and 3 deletions
|
@ -101,6 +101,7 @@
|
||||||
<li>[Fix] Also remove data from friend/foe table when deleting user. (Bug #45345 - Patch by nickvergessen)</li>
|
<li>[Fix] Also remove data from friend/foe table when deleting user. (Bug #45345 - Patch by nickvergessen)</li>
|
||||||
<li>[Change] Change the data format of the default file ACM to be more secure from tampering and have better performance.</li>
|
<li>[Change] Change the data format of the default file ACM to be more secure from tampering and have better performance.</li>
|
||||||
<li>[Change] Add index on log_time to the log table to prevent slowdown on boards with many log entries. (Bug #44665 - Patch by bantu)</li>
|
<li>[Change] Add index on log_time to the log table to prevent slowdown on boards with many log entries. (Bug #44665 - Patch by bantu)</li>
|
||||||
|
<li>[Change] Template engine now permits to a limited extent variable includes.</li>
|
||||||
<li>[Feature] Backported 3.2 captcha plugins.</li>
|
<li>[Feature] Backported 3.2 captcha plugins.</li>
|
||||||
<li>[Feature] Introduced new ACM plugins:
|
<li>[Feature] Introduced new ACM plugins:
|
||||||
<ul>
|
<ul>
|
||||||
|
|
|
@ -128,9 +128,9 @@ class template_compile
|
||||||
$php_blocks = $matches[1];
|
$php_blocks = $matches[1];
|
||||||
$code = preg_replace('#<!-- PHP -->.*?<!-- ENDPHP -->#s', '<!-- PHP -->', $code);
|
$code = preg_replace('#<!-- PHP -->.*?<!-- ENDPHP -->#s', '<!-- PHP -->', $code);
|
||||||
|
|
||||||
preg_match_all('#<!-- INCLUDE ([a-zA-Z0-9\_\-\+\./]+) -->#', $code, $matches);
|
preg_match_all('#<!-- INCLUDE (\{\$?[A-Z0-9\-_]+\}|[a-zA-Z0-9\_\-\+\./]+) -->#', $code, $matches);
|
||||||
$include_blocks = $matches[1];
|
$include_blocks = $matches[1];
|
||||||
$code = preg_replace('#<!-- INCLUDE [a-zA-Z0-9\_\-\+\./]+ -->#', '<!-- INCLUDE -->', $code);
|
$code = preg_replace('#<!-- INCLUDE (?:\{\$?[A-Z0-9\-_]+\}|[a-zA-Z0-9\_\-\+\./]+) -->#', '<!-- INCLUDE -->', $code);
|
||||||
|
|
||||||
preg_match_all('#<!-- INCLUDEPHP ([a-zA-Z0-9\_\-\+\./]+) -->#', $code, $matches);
|
preg_match_all('#<!-- INCLUDEPHP ([a-zA-Z0-9\_\-\+\./]+) -->#', $code, $matches);
|
||||||
$includephp_blocks = $matches[1];
|
$includephp_blocks = $matches[1];
|
||||||
|
@ -193,8 +193,39 @@ class template_compile
|
||||||
|
|
||||||
case 'INCLUDE':
|
case 'INCLUDE':
|
||||||
$temp = array_shift($include_blocks);
|
$temp = array_shift($include_blocks);
|
||||||
|
|
||||||
|
// Dynamic includes
|
||||||
|
// Cheap match rather than a full blown regexp, we already know
|
||||||
|
// the format of the input so just use string manipulation.
|
||||||
|
if ($temp[0] == '{')
|
||||||
|
{
|
||||||
|
$file = false;
|
||||||
|
|
||||||
|
if ($temp[1] == '$')
|
||||||
|
{
|
||||||
|
$var = substr($temp, 2, -1);
|
||||||
|
//$file = $this->template->_tpldata['DEFINE']['.'][$var];
|
||||||
|
$temp = "\$this->_tpldata['DEFINE']['.']['$var']";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$var = substr($temp, 1, -1);
|
||||||
|
//$file = $this->template->_rootref[$var];
|
||||||
|
$temp = "\$this->_rootref['$var']";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$file = $temp;
|
||||||
|
}
|
||||||
|
|
||||||
$compile_blocks[] = '<?php ' . $this->compile_tag_include($temp) . ' ?>';
|
$compile_blocks[] = '<?php ' . $this->compile_tag_include($temp) . ' ?>';
|
||||||
$this->template->_tpl_include($temp, false);
|
|
||||||
|
// No point in checking variable includes
|
||||||
|
if ($file)
|
||||||
|
{
|
||||||
|
$this->template->_tpl_include($file, false);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'INCLUDEPHP':
|
case 'INCLUDEPHP':
|
||||||
|
@ -594,6 +625,12 @@ class template_compile
|
||||||
*/
|
*/
|
||||||
function compile_tag_include($tag_args)
|
function compile_tag_include($tag_args)
|
||||||
{
|
{
|
||||||
|
// Process dynamic includes
|
||||||
|
if ($tag_args[0] == '$')
|
||||||
|
{
|
||||||
|
return "if (isset($tag_args)) { \$this->_tpl_include($tag_args); }";
|
||||||
|
}
|
||||||
|
|
||||||
return "\$this->_tpl_include('$tag_args');";
|
return "\$this->_tpl_include('$tag_args');";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue