mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-24 20:17:58 +02:00
This is an enhancement for revision r10051 (INC template variable)
Within the mentioned revision INC was only able to be applied to defined template variables. I extended it now to work on all supported variables (template vars, defines, loops, defines in loops) I also added a DEC template variable to logically complete this. git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10054 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
@ -192,9 +192,13 @@ class template_compile
|
||||
break;
|
||||
|
||||
case 'INC':
|
||||
$compile_blocks[] = '<?php ' . $this->compile_tag_counter($block_val[2], true) . ' ?>';
|
||||
$compile_blocks[] = '<?php ' . $this->compile_tag_counter($block_val[2], '++') . ' ?>';
|
||||
break;
|
||||
|
||||
|
||||
case 'DEC':
|
||||
$compile_blocks[] = '<?php ' . $this->compile_tag_counter($block_val[2], '--') . ' ?>';
|
||||
break;
|
||||
|
||||
case 'INCLUDE':
|
||||
$temp = array_shift($include_blocks);
|
||||
|
||||
@ -632,20 +636,26 @@ class template_compile
|
||||
|
||||
|
||||
/**
|
||||
* Compile INC tags
|
||||
* Compile INC/DEC tags
|
||||
* INC/DEC tags support defined template variables as well as normal template variables
|
||||
* @access private
|
||||
*/
|
||||
function compile_tag_counter($tag_args)
|
||||
function compile_tag_counter($tag_args, $operation = '++')
|
||||
{
|
||||
preg_match('#^\$(?=[A-Z])([A-Z0-9_\-]*)$#', $tag_args, $match);
|
||||
if (empty($match[1]))
|
||||
preg_match('#^((?:[a-z0-9\-_]+\.)+)?(\$)?(?=[A-Z])([A-Z0-9\-_]+)#s', $tag_args, $varrefs);
|
||||
|
||||
if (empty($varrefs[0]))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
return 'echo $this->_tpldata[\'DEFINE\'][\'.\'][\'' . $match[1] . '\']++';
|
||||
|
||||
// Build token
|
||||
$token = (!empty($varrefs[1])) ? $this->generate_block_data_ref(substr($varrefs[1], 0, -1), true, $varrefs[2]) . '[\'' . $varrefs[3] . '\']' : (($varrefs[2]) ? '$this->_tpldata[\'DEFINE\'][\'.\'][\'' . $varrefs[3] . '\']' : '$this->_rootref[\'' . $varrefs[3] . '\']');
|
||||
|
||||
// Increase or decrease token ;)
|
||||
return "echo {$token}{$operation};";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compile INCLUDE tag
|
||||
* @access private
|
||||
|
Reference in New Issue
Block a user