From: Meik S. <acy...@ph...> - 2009-08-25 09:49:29
|
Author: acydburn Date: Tue Aug 25 10:48:44 2009 New Revision: 10054 Log: 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. Modified: branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html branches/phpBB-3_0_0/phpBB/docs/coding-guidelines.html branches/phpBB-3_0_0/phpBB/includes/functions_template.php Modified: branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html (original) --- branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html Tue Aug 25 10:48:44 2009 *************** *** 282,288 **** <li>[Feature] Separate PM Reply and PM Reply to all in prosilver.</li> <li>[Feature] Place debug notices during captcha rendering in the error log - useful for debugging output already started errors.</li> <li>[Feature] Ability to define constant PHPBB_USE_BOARD_URL_PATH to use board url for images/avatars/ranks/imageset...</li> ! <li>[Feature] Added INC command to template syntax.</li> </ul> <a name="v304"></a><h3>1.ii. Changes since 3.0.4</h3> --- 282,288 ---- <li>[Feature] Separate PM Reply and PM Reply to all in prosilver.</li> <li>[Feature] Place debug notices during captcha rendering in the error log - useful for debugging output already started errors.</li> <li>[Feature] Ability to define constant PHPBB_USE_BOARD_URL_PATH to use board url for images/avatars/ranks/imageset...</li> ! <li>[Feature] Added INC/DEC command to template syntax, applicable to DEFINES and normal template variables, including loops.</li> </ul> <a name="v304"></a><h3>1.ii. Changes since 3.0.4</h3> Modified: branches/phpBB-3_0_0/phpBB/docs/coding-guidelines.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/docs/coding-guidelines.html (original) --- branches/phpBB-3_0_0/phpBB/docs/coding-guidelines.html Tue Aug 25 10:48:44 2009 *************** *** 1169,1185 **** <div class="codebox"><pre> <span class="comment"><!-- INCLUDE {FILE_VAR} --></span> </pre></div> <p>Template defined variables can also be utilised. <div class="codebox"><pre> <span class="comment"><!-- DEFINE $SOME_VAR = 'my_file.html' --></span> <span class="comment"><!-- INCLUDE {$SOME_VAR} --></span> </pre></div> ! <p>Also added in <strong>3.0.6</strong> is the ability to increment an variable on use. This can be used for instances like tabindexes, where the amount of entries is not statically known. ! The INC command will print the current state of a defined var and then increment it by one (postincrement).</p> <div class="codebox"><pre> <span class="comment"><!-- DEFINE $SOME_VAR = 1 --></span> <span class="comment"><!-- INC $SOME_VAR --></span> </pre></div> <h4>PHP</h4> <p>A contentious decision has seen the ability to include PHP within the template introduced. This is achieved by enclosing the PHP within relevant tags:</p> --- 1169,1193 ---- <div class="codebox"><pre> <span class="comment"><!-- INCLUDE {FILE_VAR} --></span> </pre></div> + <p>Template defined variables can also be utilised. + <div class="codebox"><pre> <span class="comment"><!-- DEFINE $SOME_VAR = 'my_file.html' --></span> <span class="comment"><!-- INCLUDE {$SOME_VAR} --></span> </pre></div> ! ! <p>Also added in <strong>3.0.6</strong> is the ability to increment or decrement a variable on use. This can be used for instances like tabindexes, where the amount of entries is not statically known. ! The INC (for incrementing) and DEC (for decrementing) commands will print the <strong>current</strong> state of a defined var and then increment/decrement it by one (postincrement/postdecrement).</p> ! <div class="codebox"><pre> <span class="comment"><!-- DEFINE $SOME_VAR = 1 --></span> <span class="comment"><!-- INC $SOME_VAR --></span> + Result: 1<br /> + <span class="comment">{$SOME_VAR}</span> + Result: 2<br /> </pre></div> + <h4>PHP</h4> <p>A contentious decision has seen the ability to include PHP within the template introduced. This is achieved by enclosing the PHP within relevant tags:</p> Modified: branches/phpBB-3_0_0/phpBB/includes/functions_template.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/functions_template.php (original) --- branches/phpBB-3_0_0/phpBB/includes/functions_template.php Tue Aug 25 10:48:44 2009 *************** *** 192,200 **** break; case 'INC': ! $compile_blocks[] = '<?php ' . $this->compile_tag_counter($block_val[2], true) . ' ?>'; break; ! case 'INCLUDE': $temp = array_shift($include_blocks); --- 192,204 ---- break; case 'INC': ! $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,651 **** /** ! * Compile INC tags * @access private */ ! function compile_tag_counter($tag_args) { ! preg_match('#^\$(?=[A-Z])([A-Z0-9_\-]*)$#', $tag_args, $match); ! if (empty($match[1])) { return ''; } ! ! return 'echo $this->_tpldata[\'DEFINE\'][\'.\'][\'' . $match[1] . '\']++'; } ! /** * Compile INCLUDE tag * @access private --- 636,661 ---- /** ! * 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, $operation = '++') { ! preg_match('#^((?:[a-z0-9\-_]+\.)+)?(\$)?(?=[A-Z])([A-Z0-9\-_]+)#s', $tag_args, $varrefs); ! ! if (empty($varrefs[0])) { return ''; } ! ! // 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 |