diff -r 000000000000 -r 3906ca745819 packages/ssoinabox-webui/root/usr/local/share/ssoinabox/htdocs/includes/smarty/sysplugins/smarty_internal_compile_private_print_expression.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/packages/ssoinabox-webui/root/usr/local/share/ssoinabox/htdocs/includes/smarty/sysplugins/smarty_internal_compile_private_print_expression.php Tue Jan 08 23:13:29 2013 -0500 @@ -0,0 +1,156 @@ +getAttributes($compiler, $args); + // nocache option + if ($_attr['nocache'] === true) { + $compiler->tag_nocache = true; + } + // filter handling + if ($_attr['nofilter'] === true) { + $_filter = 'false'; + } else { + $_filter = 'true'; + } + if (isset($_attr['assign'])) { + // assign output to variable + $output = "assign({$_attr['assign']},{$parameter['value']});?>"; + } else { + // display value + $output = $parameter['value']; + // tag modifier + if (!empty($parameter['modifierlist'])) { + $output = $compiler->compileTag('private_modifier', array(), array('modifierlist' => $parameter['modifierlist'], 'value' => $output)); + } + if (!$_attr['nofilter']) { + // default modifier + if (!empty($compiler->smarty->default_modifiers)) { + if (empty($compiler->default_modifier_list)) { + $modifierlist = array(); + foreach ($compiler->smarty->default_modifiers as $key => $single_default_modifier) { + preg_match_all('/(\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'|"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|:|[^:]+)/', $single_default_modifier, $mod_array); + for ($i = 0, $count = count($mod_array[0]);$i < $count;$i++) { + if ($mod_array[0][$i] != ':') { + $modifierlist[$key][] = $mod_array[0][$i]; + } + } + } + $compiler->default_modifier_list = $modifierlist; + } + $output = $compiler->compileTag('private_modifier', array(), array('modifierlist' => $compiler->default_modifier_list, 'value' => $output)); + } + // autoescape html + if ($compiler->template->smarty->escape_html) { + $output = "htmlspecialchars({$output}, ENT_QUOTES, '" . addslashes(Smarty::$_CHARSET) . "')"; + } + // loop over registerd filters + if (!empty($compiler->template->smarty->registered_filters[Smarty::FILTER_VARIABLE])) { + foreach ($compiler->template->smarty->registered_filters[Smarty::FILTER_VARIABLE] as $key => $function) { + if (!is_array($function)) { + $output = "{$function}({$output},\$_smarty_tpl)"; + } else if (is_object($function[0])) { + $output = "\$_smarty_tpl->smarty->registered_filters[Smarty::FILTER_VARIABLE][{$key}][0]->{$function[1]}({$output},\$_smarty_tpl)"; + } else { + $output = "{$function[0]}::{$function[1]}({$output},\$_smarty_tpl)"; + } + } + } + // auto loaded filters + if (isset($compiler->smarty->autoload_filters[Smarty::FILTER_VARIABLE])) { + foreach ((array)$compiler->template->smarty->autoload_filters[Smarty::FILTER_VARIABLE] as $name) { + $result = $this->compile_output_filter($compiler, $name, $output); + if ($result !== false) { + $output = $result; + } else { + // not found, throw exception + throw new SmartyException("Unable to load filter '{$name}'"); + } + } + } + if (isset($compiler->template->variable_filters)) { + foreach ($compiler->template->variable_filters as $filter) { + if (count($filter) == 1 && ($result = $this->compile_output_filter($compiler, $filter[0], $output)) !== false) { + $output = $result; + } else { + $output = $compiler->compileTag('private_modifier', array(), array('modifierlist' => array($filter), 'value' => $output)); + } + } + } + } + + $compiler->has_output = true; + $output = ""; + } + return $output; + } + + /** + * @param object $compiler compiler object + * @param string $name name of variable filter + * @param type $output embedded output + * @return string + */ + private function compile_output_filter($compiler, $name, $output) + { + $plugin_name = "smarty_variablefilter_{$name}"; + $path = $compiler->smarty->loadPlugin($plugin_name, false); + if ($path) { + if ($compiler->template->caching) { + $compiler->template->required_plugins['nocache'][$name][Smarty::FILTER_VARIABLE]['file'] = $path; + $compiler->template->required_plugins['nocache'][$name][Smarty::FILTER_VARIABLE]['function'] = $plugin_name; + } else { + $compiler->template->required_plugins['compiled'][$name][Smarty::FILTER_VARIABLE]['file'] = $path; + $compiler->template->required_plugins['compiled'][$name][Smarty::FILTER_VARIABLE]['function'] = $plugin_name; + } + } else { + // not found + return false; + } + return "{$plugin_name}({$output},\$_smarty_tpl)"; + } + +} + +?> \ No newline at end of file