libs/sysplugins/smarty_internal_compile_private_registered_block.php Quellcode

smarty_internal_compile_private_registered_block.php
gehe zur Dokumentation dieser Datei
1 <?php
18 {
25  public $optional_attributes = array('_any');
26 
37  public function compile($args, $compiler, $parameter, $tag)
38  {
39  if (!isset($tag[5]) || substr($tag, - 5) != 'close') {
40  // opening tag of block plugin
41  // check and get attributes
42  $_attr = $this->getAttributes($compiler, $args);
43  if ($_attr['nocache']) {
44  $compiler->tag_nocache = true;
45  }
46  unset($_attr['nocache']);
47  if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$tag])) {
48  $tag_info = $compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$tag];
49  } else {
50  $tag_info = $compiler->default_handler_plugins[Smarty::PLUGIN_BLOCK][$tag];
51  }
52  // convert attributes into parameter array string
53  $_paramsArray = array();
54  foreach ($_attr as $_key => $_value) {
55  if (is_int($_key)) {
56  $_paramsArray[] = "$_key=>$_value";
57  } elseif ($compiler->template->caching && in_array($_key, $tag_info[2])) {
58  $_value = str_replace("'", "^#^", $_value);
59  $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
60  } else {
61  $_paramsArray[] = "'$_key'=>$_value";
62  }
63  }
64  $_params = 'array(' . implode(",", $_paramsArray) . ')';
65 
66  $this->openTag($compiler, $tag, array($_params, $compiler->nocache));
67  // maybe nocache because of nocache variables or nocache plugin
68  $compiler->nocache = !$tag_info[1] | $compiler->nocache | $compiler->tag_nocache;
69  $function = $tag_info[0];
70  // compile code
71  if (!is_array($function)) {
72  $output = "<?php \$_smarty_tpl->smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; echo {$function}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
73  } elseif (is_object($function[0])) {
74  $output = "<?php \$_smarty_tpl->smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; echo \$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]->{$function[1]}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
75  } else {
76  $output = "<?php \$_smarty_tpl->smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; echo {$function[0]}::{$function[1]}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
77  }
78  } else {
79  // must endblock be nocache?
80  if ($compiler->nocache) {
81  $compiler->tag_nocache = true;
82  }
83  $base_tag = substr($tag, 0, - 5);
84  // closing tag of block plugin, restore nocache
85  list($_params, $compiler->nocache) = $this->closeTag($compiler, $base_tag);
86  // This tag does create output
87  $compiler->has_output = true;
88  if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$base_tag])) {
89  $function = $compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$base_tag][0];
90  } else {
91  $function = $compiler->default_handler_plugins[Smarty::PLUGIN_BLOCK][$base_tag][0];
92  }
93  // compile code
94  if (!isset($parameter['modifier_list'])) {
95  $mod_pre = $mod_post = '';
96  } else {
97  $mod_pre = ' ob_start(); ';
98  $mod_post = 'echo ' . $compiler->compileTag('private_modifier', array(), array('modifierlist' => $parameter['modifier_list'], 'value' => 'ob_get_clean()')) . ';';
99  }
100  if (!is_array($function)) {
101  $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre . " echo {$function}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat);" . $mod_post . " } array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
102  } elseif (is_object($function[0])) {
103  $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre . " echo \$_smarty_tpl->smarty->registered_plugins['block']['{$base_tag}'][0][0]->{$function[1]}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); " . $mod_post . "} array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
104  } else {
105  $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre . " echo {$function[0]}::{$function[1]}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); " . $mod_post . "} array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
106  }
107  }
108 
109  return $output . "\n";
110  }
111 }




Korrekturen, Hinweise und Ergänzungen

Bitte scheuen Sie sich nicht und melden Sie, was auf dieser Seite sachlich falsch oder irreführend ist, was ergänzt werden sollte, was fehlt usw. Dazu bitte oben aus dem Menü Seite den Eintrag Support Forum wählen. Es ist eine kostenlose Anmeldung erforderlich, um Anmerkungen zu posten. Unpassende Postings, Spam usw. werden kommentarlos entfernt.