From 697696fef9fa1cc48a04eda460b5944ef1e3b860 Mon Sep 17 00:00:00 2001 From: "Uwe.Tews@googlemail.com" Date: Sat, 27 Jul 2013 07:05:26 +0000 Subject: [PATCH] Source code reformatted --- .../smarty_internal_compile_block.php | 566 +++++++++--------- 1 file changed, 283 insertions(+), 283 deletions(-) diff --git a/libs/sysplugins/smarty_internal_compile_block.php b/libs/sysplugins/smarty_internal_compile_block.php index acfe62fa..265ddad9 100644 --- a/libs/sysplugins/smarty_internal_compile_block.php +++ b/libs/sysplugins/smarty_internal_compile_block.php @@ -1,313 +1,313 @@ getAttributes($compiler, $args); - $save = array($_attr, $compiler->parser->current_buffer, $compiler->nocache, $compiler->smarty->merge_compiled_includes, $compiler->merged_templates, $compiler->smarty->merged_templates_func, $compiler->template->properties, $compiler->template->has_nocache_code); - $this->openTag($compiler, 'block', $save); - if ($_attr['nocache'] == true) { - $compiler->nocache = true; - } - // set flag for {block} tag - $compiler->inheritance = true; - // must merge includes - $compiler->smarty->merge_compiled_includes = true; - - $compiler->parser->current_buffer = new _smarty_template_buffer($compiler->parser); - $compiler->has_code = false; - - return true; + // check and get attributes + $_attr = $this->getAttributes($compiler, $args); + $save = array($_attr, $compiler->parser->current_buffer, $compiler->nocache, $compiler->smarty->merge_compiled_includes, $compiler->merged_templates, $compiler->smarty->merged_templates_func, $compiler->template->properties, $compiler->template->has_nocache_code); + $this->openTag($compiler, 'block', $save); + if ($_attr['nocache'] == true) { + $compiler->nocache = true; } + // set flag for {block} tag + $compiler->inheritance = true; + // must merge includes + $compiler->smarty->merge_compiled_includes = true; - /** - * Save or replace child block source by block name during parsing - * - * @param string $block_content block source content - * @param string $block_tag opening block tag - * @param object $template template object - * @param string $filepath filepath of template source - */ - static function saveBlockData($block_content, $block_tag, $template, $filepath) - { - $nesting = array(); - $hide_level = 0; - $child_flag = false; - $_rdl = preg_quote($template->smarty->right_delimiter); - $_ldl = preg_quote($template->smarty->left_delimiter); - if (!$template->smarty->auto_literal) { - $al = '\s*'; - } else { - $al = ''; - } - if (0 == preg_match("!({$_ldl}{$al}block\s+)(name=)?(\w+|'.*'|\".*\")(\s*?)?((append|prepend|nocache)?(\s*)?(hide)?)?(\s*{$_rdl})!", $block_tag, $_match)) { - $error_text = 'Syntax Error in template "' . $template->source->filepath . '" "' . $block_tag . '" illegal options'; - throw new SmartyCompilerException($error_text); - } else { - $_name = trim($_match[3], '\'"'); - // replace {$smarty.block.child} - // get nested block tags - preg_match_all("%({$_ldl}{$al}block\s+)(name=)?(\w+|'.*?'|\".*?\")([\s\S]*?)(hide)?(\s*{$_rdl})|({$_ldl}{$al}/block\s*{$_rdl})|({$_ldl}{$al}\\\$smarty\.block\.child\s*{$_rdl})|({$_ldl}|{$_rdl})|([\s\S]*?(?=({$_ldl}|{$_rdl})))%", $block_tag.$block_content."{$template->smarty->left_delimiter}/block{$template->smarty->right_delimiter}", $_match2); - $block_content = ''; - foreach ($_match2[0] as $key => $text) { - // {block} tag - if (!empty($_match2[3][$key])) { - $name = trim($_match2[3][$key], '\'"'); - array_push($nesting, array($name, $block_content, $child_flag)); - $block_content = ''; - // hide option - if (!empty($_match2[5][$key]) && $hide_level == 0 && !isset($template->block_data[$name])) { - $hide_level = count($nesting); - } - continue; + $compiler->parser->current_buffer = new _smarty_template_buffer($compiler->parser); + $compiler->has_code = false; + + return true; + } + + /** + * Save or replace child block source by block name during parsing + * + * @param string $block_content block source content + * @param string $block_tag opening block tag + * @param object $template template object + * @param string $filepath filepath of template source + */ + static function saveBlockData($block_content, $block_tag, $template, $filepath) + { + $nesting = array(); + $hide_level = 0; + $child_flag = false; + $_rdl = preg_quote($template->smarty->right_delimiter); + $_ldl = preg_quote($template->smarty->left_delimiter); + if (!$template->smarty->auto_literal) { + $al = '\s*'; + } else { + $al = ''; + } + if (0 == preg_match("!({$_ldl}{$al}block\s+)(name=)?(\w+|'.*'|\".*\")(\s*?)?((append|prepend|nocache)?(\s*)?(hide)?)?(\s*{$_rdl})!", $block_tag, $_match)) { + $error_text = 'Syntax Error in template "' . $template->source->filepath . '" "' . $block_tag . '" illegal options'; + throw new SmartyCompilerException($error_text); + } else { + $_name = trim($_match[3], '\'"'); + // replace {$smarty.block.child} + // get nested block tags + preg_match_all("%({$_ldl}{$al}block\s+)(name=)?(\w+|'.*?'|\".*?\")([\s\S]*?)(hide)?(\s*{$_rdl})|({$_ldl}{$al}/block\s*{$_rdl})|({$_ldl}{$al}\\\$smarty\.block\.child\s*{$_rdl})|({$_ldl}|{$_rdl})|([\s\S]*?(?=({$_ldl}|{$_rdl})))%", $block_tag . $block_content . "{$template->smarty->left_delimiter}/block{$template->smarty->right_delimiter}", $_match2); + $block_content = ''; + foreach ($_match2[0] as $key => $text) { + // {block} tag + if (!empty($_match2[3][$key])) { + $name = trim($_match2[3][$key], '\'"'); + array_push($nesting, array($name, $block_content, $child_flag)); + $block_content = ''; + // hide option + if (!empty($_match2[5][$key]) && $hide_level == 0 && !isset($template->block_data[$name])) { + $hide_level = count($nesting); } - // {/block} tag - if (!empty($_match2[7][$key])) { - list($name, $content, $cf) = array_pop($nesting); - if (isset($template->block_data[$name]) && !$child_flag) { - if ($template->block_data[$name]['mode'] == 'prepend') { - $block_content = $content . $template->block_data[$name]['source'] . $block_content; - } elseif ($template->block_data[$name]['mode'] == 'append') { - $block_content = $content . $block_content . $template->block_data[$name]['source']; - } else { - // check if {$smarty.block.parent} will be later replaced - if (strpos($template->block_data[$name]['source'], '%%%%SMARTY_PARENT%%%%') === false) { - $block_content = $content . $template->block_data[$name]['source']; - } - } + continue; + } + // {/block} tag + if (!empty($_match2[7][$key])) { + list($name, $content, $cf) = array_pop($nesting); + if (isset($template->block_data[$name]) && !$child_flag) { + if ($template->block_data[$name]['mode'] == 'prepend') { + $block_content = $content . $template->block_data[$name]['source'] . $block_content; + } elseif ($template->block_data[$name]['mode'] == 'append') { + $block_content = $content . $block_content . $template->block_data[$name]['source']; } else { - $block_content = $content . $block_content; - $cf = true; + // check if {$smarty.block.parent} will be later replaced + if (strpos($template->block_data[$name]['source'], '%%%%SMARTY_PARENT%%%%') === false) { + $block_content = $content . $template->block_data[$name]['source']; + } } - $child_flag = $cf; - if (count($nesting) < $hide_level) { - $hide_level = 0; - } - continue; + } else { + $block_content = $content . $block_content; + $cf = true; } - // hide option active - if ($hide_level && $hide_level <= count($nesting)) { - continue; + $child_flag = $cf; + if (count($nesting) < $hide_level) { + $hide_level = 0; } - // {$smarty.block.child} tag - if (!empty($_match2[8][$key])) { - list($name, $content, $cf) = end($nesting); - if (isset($template->block_data[$name])) { - $child_flag = true; - $block_content .= $template->block_data[$name]['source']; - } - continue; - } - $block_content .= $_match2[0][$key]; - + continue; } - // $block_content = preg_replace_callback("%({$_ldl}{$al}block\s+)(name=)?(\w+|'.*?'|\".*?\")([\s\S]*?)(hide)?(\s*{$_rdl})|({$_ldl}{$al}/block\s*{$_rdl})|({$_ldl}{$al}\\\$smarty\.block\.child\s*{$_rdl})|({$_ldl}|{$_rdl})|([\s\S]*?(?=({$_ldl}|{$_rdl})))%", array('Smarty_Internal_Compile_Block', 'replaceBlockChild'), $block_tag.$block_content."{$template->smarty->left_delimiter}/block{$template->smarty->right_delimiter}"); - if (isset($template->block_data[$_name])) { - if (strpos($template->block_data[$_name]['source'], '%%%%SMARTY_PARENT%%%%') !== false) { - $template->block_data[$_name]['source'] = + // hide option active + if ($hide_level && $hide_level <= count($nesting)) { + continue; + } + // {$smarty.block.child} tag + if (!empty($_match2[8][$key])) { + list($name, $content, $cf) = end($nesting); + if (isset($template->block_data[$name])) { + $child_flag = true; + $block_content .= $template->block_data[$name]['source']; + } + continue; + } + $block_content .= $_match2[0][$key]; + + } + // $block_content = preg_replace_callback("%({$_ldl}{$al}block\s+)(name=)?(\w+|'.*?'|\".*?\")([\s\S]*?)(hide)?(\s*{$_rdl})|({$_ldl}{$al}/block\s*{$_rdl})|({$_ldl}{$al}\\\$smarty\.block\.child\s*{$_rdl})|({$_ldl}|{$_rdl})|([\s\S]*?(?=({$_ldl}|{$_rdl})))%", array('Smarty_Internal_Compile_Block', 'replaceBlockChild'), $block_tag.$block_content."{$template->smarty->left_delimiter}/block{$template->smarty->right_delimiter}"); + if (isset($template->block_data[$_name])) { + if (strpos($template->block_data[$_name]['source'], '%%%%SMARTY_PARENT%%%%') !== false) { + $template->block_data[$_name]['source'] = str_replace('%%%%SMARTY_PARENT%%%%', $block_content, $template->block_data[$_name]['source']); - } elseif ($template->block_data[$_name]['mode'] == 'prepend') { - $template->block_data[$_name]['source'] .= $block_content; - } elseif ($template->block_data[$_name]['mode'] == 'append') { - $template->block_data[$_name]['source'] = $block_content . $template->block_data[$_name]['source']; - } - } else { - $template->block_data[$_name]['source'] = $block_content; - $template->block_data[$_name]['file'] = $filepath; + } elseif ($template->block_data[$_name]['mode'] == 'prepend') { + $template->block_data[$_name]['source'] .= $block_content; + } elseif ($template->block_data[$_name]['mode'] == 'append') { + $template->block_data[$_name]['source'] = $block_content . $template->block_data[$_name]['source']; } - if ($child_flag) { - $template->block_data[$_name]['source'] = $block_content; - $template->block_data[$_name]['file'] = $filepath; - } - if ($_match[6] == 'append') { - $template->block_data[$_name]['mode'] = 'append'; - } elseif ($_match[6] == 'prepend') { - $template->block_data[$_name]['mode'] = 'prepend'; - } else { - $template->block_data[$_name]['mode'] = 'replace'; - } - } - } - - /** - * Compile saved child block source - * - * @param object $compiler compiler object - * @param string $_name optional name of child block - * @return string compiled code of schild block - */ - static function compileChildBlock($compiler, $_name = null) - { - $_output = ''; - // if called by {$smarty.block.child} we must search the name of enclosing {block} - if ($_name == null) { - $stack_count = count($compiler->_tag_stack); - while (--$stack_count >= 0) { - if ($compiler->_tag_stack[$stack_count][0] == 'block') { - $_name = trim($compiler->_tag_stack[$stack_count][1][0]['name'], "'\""); - break; - } - } - // flag that child is already compile by {$smarty.block.child} inclusion - $compiler->template->block_data[$_name]['compiled'] = true; - } - if ($_name == null) { - $compiler->trigger_template_error('{$smarty.block.child} used out of context', $compiler->lex->taglineno); - } - // undefined child? - if (!isset($compiler->template->block_data[$_name]['source'])) { - return ''; - } - $_tpl = new Smarty_Internal_template('string:' . $compiler->template->block_data[$_name]['source'], $compiler->smarty, $compiler->template, $compiler->template->cache_id, - $compiler->template->compile_id, $compiler->template->caching, $compiler->template->cache_lifetime); - $_tpl->variable_filters = $compiler->template->variable_filters; - $_tpl->properties['nocache_hash'] = $compiler->template->properties['nocache_hash']; - $_tpl->source->filepath = $compiler->template->block_data[$_name]['file']; - $_tpl->allow_relative_path = true; - if ($compiler->nocache) { - $_tpl->compiler->forceNocache = 2; } else { - $_tpl->compiler->forceNocache = 1; + $template->block_data[$_name]['source'] = $block_content; + $template->block_data[$_name]['file'] = $filepath; } - $_tpl->compiler->suppressHeader = true; - $_tpl->compiler->suppressFilter = true; - $_tpl->compiler->suppressTemplatePropertyHeader = true; - $_tpl->compiler->suppressMergedTemplates = true; - if (strpos($compiler->template->block_data[$_name]['source'], '%%%%SMARTY_PARENT%%%%') !== false) { - $_output = str_replace('%%%%SMARTY_PARENT%%%%', $compiler->parser->current_buffer->to_smarty_php(), $_tpl->compiler->compileTemplate($_tpl)); - } elseif ($compiler->template->block_data[$_name]['mode'] == 'prepend') { - $_output = $_tpl->compiler->compileTemplate($_tpl) . $compiler->parser->current_buffer->to_smarty_php(); - } elseif ($compiler->template->block_data[$_name]['mode'] == 'append') { - $_output = $compiler->parser->current_buffer->to_smarty_php() . $_tpl->compiler->compileTemplate($_tpl); - } elseif (!empty($compiler->template->block_data[$_name])) { - $_output = $_tpl->compiler->compileTemplate($_tpl); + if ($child_flag) { + $template->block_data[$_name]['source'] = $block_content; + $template->block_data[$_name]['file'] = $filepath; } - $compiler->template->properties['file_dependency'] = array_merge($compiler->template->properties['file_dependency'], $_tpl->properties['file_dependency']); - $compiler->template->properties['function'] = array_merge($compiler->template->properties['function'], $_tpl->properties['function']); - $compiler->merged_templates = array_merge($compiler->merged_templates, $_tpl->compiler->merged_templates); - $compiler->template->variable_filters = $_tpl->variable_filters; - if ($_tpl->has_nocache_code) { - $compiler->template->has_nocache_code = true; + if ($_match[6] == 'append') { + $template->block_data[$_name]['mode'] = 'append'; + } elseif ($_match[6] == 'prepend') { + $template->block_data[$_name]['mode'] = 'prepend'; + } else { + $template->block_data[$_name]['mode'] = 'replace'; } - foreach ($_tpl->required_plugins as $key => $tmp1) { - if ($compiler->nocache && $compiler->template->caching) { - $code = 'nocache'; - } else { - $code = $key; - } - foreach ($tmp1 as $name => $tmp) { - foreach ($tmp as $type => $data) { - $compiler->template->required_plugins[$code][$name][$type] = $data; - } - } - } - unset($_tpl); - - return $_output; } - } /** - * Smarty Internal Plugin Compile BlockClose Class - * - * @package Smarty - * @subpackage Compiler - */ - class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_CompileBase + * Compile saved child block source + * + * @param object $compiler compiler object + * @param string $_name optional name of child block + * @return string compiled code of schild block + */ + static function compileChildBlock($compiler, $_name = null) { - /** - * Compiles code for the {/block} tag - * - * @param array $args array with attributes from parser - * @param object $compiler compiler object - * @return string compiled code - */ - public function compile($args, $compiler) - { - $compiler->has_code = true; - // check and get attributes - $_attr = $this->getAttributes($compiler, $args); - $saved_data = $this->closeTag($compiler, array('block')); - $_name = trim($saved_data[0]['name'], "\"'"); - if (isset($compiler->template->block_data[$_name]) && !isset($compiler->template->block_data[$_name]['compiled'])) { - // restore to status before {block} tag as new subtemplate code of parent {block} is not needed - // TODO: Below code was disabled in 3.1.8 because of problems with {include} in nested {block} tags in child templates - // combined with append/prepend or $smarty.block.parent - // For later versions it should be checked under which conditions it could run for optimisation - // - //$compiler->merged_templates = $saved_data[4]; - //$compiler->smarty->merged_templates_func = $saved_data[5]; - //$compiler->template->properties = $saved_data[6]; - //$compiler->template->has_nocache_code = $saved_data[7]; - $_output = Smarty_Internal_Compile_Block::compileChildBlock($compiler, $_name); - } else { - if (isset($saved_data[0]['hide']) && !isset($compiler->template->block_data[$_name]['source'])) { - $_output = ''; - } else { - $_output = $compiler->parser->current_buffer->to_smarty_php(); + $_output = ''; + // if called by {$smarty.block.child} we must search the name of enclosing {block} + if ($_name == null) { + $stack_count = count($compiler->_tag_stack); + while (--$stack_count >= 0) { + if ($compiler->_tag_stack[$stack_count][0] == 'block') { + $_name = trim($compiler->_tag_stack[$stack_count][1][0]['name'], "'\""); + break; } - unset($compiler->template->block_data[$_name]['compiled']); } - // reset flags - $compiler->parser->current_buffer = $saved_data[1]; - $compiler->nocache = $saved_data[2]; - $compiler->smarty->merge_compiled_includes = $saved_data[3]; - // reset flag for {block} tag - $compiler->inheritance = false; - // $_output content has already nocache code processed - $compiler->suppressNocacheProcessing = true; - - return $_output; + // flag that child is already compile by {$smarty.block.child} inclusion + $compiler->template->block_data[$_name]['compiled'] = true; } + if ($_name == null) { + $compiler->trigger_template_error('{$smarty.block.child} used out of context', $compiler->lex->taglineno); + } + // undefined child? + if (!isset($compiler->template->block_data[$_name]['source'])) { + return ''; + } + $_tpl = new Smarty_Internal_template('string:' . $compiler->template->block_data[$_name]['source'], $compiler->smarty, $compiler->template, $compiler->template->cache_id, + $compiler->template->compile_id, $compiler->template->caching, $compiler->template->cache_lifetime); + $_tpl->variable_filters = $compiler->template->variable_filters; + $_tpl->properties['nocache_hash'] = $compiler->template->properties['nocache_hash']; + $_tpl->source->filepath = $compiler->template->block_data[$_name]['file']; + $_tpl->allow_relative_path = true; + if ($compiler->nocache) { + $_tpl->compiler->forceNocache = 2; + } else { + $_tpl->compiler->forceNocache = 1; + } + $_tpl->compiler->suppressHeader = true; + $_tpl->compiler->suppressFilter = true; + $_tpl->compiler->suppressTemplatePropertyHeader = true; + $_tpl->compiler->suppressMergedTemplates = true; + if (strpos($compiler->template->block_data[$_name]['source'], '%%%%SMARTY_PARENT%%%%') !== false) { + $_output = str_replace('%%%%SMARTY_PARENT%%%%', $compiler->parser->current_buffer->to_smarty_php(), $_tpl->compiler->compileTemplate($_tpl)); + } elseif ($compiler->template->block_data[$_name]['mode'] == 'prepend') { + $_output = $_tpl->compiler->compileTemplate($_tpl) . $compiler->parser->current_buffer->to_smarty_php(); + } elseif ($compiler->template->block_data[$_name]['mode'] == 'append') { + $_output = $compiler->parser->current_buffer->to_smarty_php() . $_tpl->compiler->compileTemplate($_tpl); + } elseif (!empty($compiler->template->block_data[$_name])) { + $_output = $_tpl->compiler->compileTemplate($_tpl); + } + $compiler->template->properties['file_dependency'] = array_merge($compiler->template->properties['file_dependency'], $_tpl->properties['file_dependency']); + $compiler->template->properties['function'] = array_merge($compiler->template->properties['function'], $_tpl->properties['function']); + $compiler->merged_templates = array_merge($compiler->merged_templates, $_tpl->compiler->merged_templates); + $compiler->template->variable_filters = $_tpl->variable_filters; + if ($_tpl->has_nocache_code) { + $compiler->template->has_nocache_code = true; + } + foreach ($_tpl->required_plugins as $key => $tmp1) { + if ($compiler->nocache && $compiler->template->caching) { + $code = 'nocache'; + } else { + $code = $key; + } + foreach ($tmp1 as $name => $tmp) { + foreach ($tmp as $type => $data) { + $compiler->template->required_plugins[$code][$name][$type] = $data; + } + } + } + unset($_tpl); + return $_output; } + +} + +/** + * Smarty Internal Plugin Compile BlockClose Class + * + * @package Smarty + * @subpackage Compiler + */ +class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_CompileBase +{ + /** + * Compiles code for the {/block} tag + * + * @param array $args array with attributes from parser + * @param object $compiler compiler object + * @return string compiled code + */ + public function compile($args, $compiler) + { + $compiler->has_code = true; + // check and get attributes + $_attr = $this->getAttributes($compiler, $args); + $saved_data = $this->closeTag($compiler, array('block')); + $_name = trim($saved_data[0]['name'], "\"'"); + if (isset($compiler->template->block_data[$_name]) && !isset($compiler->template->block_data[$_name]['compiled'])) { + // restore to status before {block} tag as new subtemplate code of parent {block} is not needed + // TODO: Below code was disabled in 3.1.8 because of problems with {include} in nested {block} tags in child templates + // combined with append/prepend or $smarty.block.parent + // For later versions it should be checked under which conditions it could run for optimisation + // + //$compiler->merged_templates = $saved_data[4]; + //$compiler->smarty->merged_templates_func = $saved_data[5]; + //$compiler->template->properties = $saved_data[6]; + //$compiler->template->has_nocache_code = $saved_data[7]; + $_output = Smarty_Internal_Compile_Block::compileChildBlock($compiler, $_name); + } else { + if (isset($saved_data[0]['hide']) && !isset($compiler->template->block_data[$_name]['source'])) { + $_output = ''; + } else { + $_output = $compiler->parser->current_buffer->to_smarty_php(); + } + unset($compiler->template->block_data[$_name]['compiled']); + } + // reset flags + $compiler->parser->current_buffer = $saved_data[1]; + $compiler->nocache = $saved_data[2]; + $compiler->smarty->merge_compiled_includes = $saved_data[3]; + // reset flag for {block} tag + $compiler->inheritance = false; + // $_output content has already nocache code processed + $compiler->suppressNocacheProcessing = true; + + return $_output; + } + +}