libs/sysplugins/smarty_internal_compile_private_modifier.php Quellcode

smarty_internal_compile_private_modifier.php
gehe zur Dokumentation dieser Datei
1 <?php
2 
19 {
29  public function compile($args, $compiler, $parameter)
30  {
31  // check and get attributes
32  $_attr = $this->getAttributes($compiler, $args);
33  $output = $parameter['value'];
34  // loop over list of modifiers
35  foreach ($parameter['modifierlist'] as $single_modifier) {
36  $modifier = $single_modifier[0];
37  $single_modifier[0] = $output;
38  $params = implode(',', $single_modifier);
39  // check if we know already the type of modifier
40  if (isset($compiler->known_modifier_type[$modifier])) {
41  $modifier_types = array($compiler->known_modifier_type[$modifier]);
42  } else {
43  $modifier_types = array(1, 2, 3, 4, 5, 6);
44  }
45  foreach ($modifier_types as $type) {
46  switch ($type) {
47  case 1:
48  // registered modifier
49  if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][$modifier])) {
50  $function = $compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][$modifier][0];
51  if (!is_array($function)) {
52  $output = "{$function}({$params})";
53  } else {
54  if (is_object($function[0])) {
55  $output = '$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][\'' . $modifier . '\'][0][0]->' . $function[1] . '(' . $params . ')';
56  } else {
57  $output = $function[0] . '::' . $function[1] . '(' . $params . ')';
58  }
59  }
60  $compiler->known_modifier_type[$modifier] = $type;
61  break 2;
62  }
63  break;
64  case 2:
65  // registered modifier compiler
66  if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIERCOMPILER][$modifier][0])) {
67  $output = call_user_func($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIERCOMPILER][$modifier][0], $single_modifier, $compiler->smarty);
68  $compiler->known_modifier_type[$modifier] = $type;
69  break 2;
70  }
71  break;
72  case 3:
73  // modifiercompiler plugin
74  if ($compiler->smarty->loadPlugin('smarty_modifiercompiler_' . $modifier)) {
75  // check if modifier allowed
76  if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)) {
77  $plugin = 'smarty_modifiercompiler_' . $modifier;
78  $output = $plugin($single_modifier, $compiler);
79  }
80  $compiler->known_modifier_type[$modifier] = $type;
81  break 2;
82  }
83  break;
84  case 4:
85  // modifier plugin
86  if ($function = $compiler->getPlugin($modifier, Smarty::PLUGIN_MODIFIER)) {
87  // check if modifier allowed
88  if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)) {
89  $output = "{$function}({$params})";
90  }
91  $compiler->known_modifier_type[$modifier] = $type;
92  break 2;
93  }
94  break;
95  case 5:
96  // PHP function
97  if (is_callable($modifier)) {
98  // check if modifier allowed
99  if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedPhpModifier($modifier, $compiler)) {
100  $output = "{$modifier}({$params})";
101  }
102  $compiler->known_modifier_type[$modifier] = $type;
103  break 2;
104  }
105  break;
106  case 6:
107  // default plugin handler
108  if (isset($compiler->default_handler_plugins[Smarty::PLUGIN_MODIFIER][$modifier]) || (is_callable($compiler->smarty->default_plugin_handler_func) && $compiler->getPluginFromDefaultHandler($modifier, Smarty::PLUGIN_MODIFIER))) {
109  $function = $compiler->default_handler_plugins[Smarty::PLUGIN_MODIFIER][$modifier][0];
110  // check if modifier allowed
111  if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)) {
112  if (!is_array($function)) {
113  $output = "{$function}({$params})";
114  } else {
115  if (is_object($function[0])) {
116  $output = '$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][\'' . $modifier . '\'][0][0]->' . $function[1] . '(' . $params . ')';
117  } else {
118  $output = $function[0] . '::' . $function[1] . '(' . $params . ')';
119  }
120  }
121  }
122  if (isset($compiler->template->required_plugins['nocache'][$modifier][Smarty::PLUGIN_MODIFIER]['file']) || isset($compiler->template->required_plugins['compiled'][$modifier][Smarty::PLUGIN_MODIFIER]['file'])) {
123  // was a plugin
124  $compiler->known_modifier_type[$modifier] = 4;
125  } else {
126  $compiler->known_modifier_type[$modifier] = $type;
127  }
128  break 2;
129  }
130  }
131  }
132  if (!isset($compiler->known_modifier_type[$modifier])) {
133  $compiler->trigger_template_error("unknown modifier \"" . $modifier . "\"", $compiler->lex->taglineno);
134  }
135  }
136 
137  return $output;
138  }
139 }




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.