From 967ab871b836f618107fe144978bd1453c3c6634 Mon Sep 17 00:00:00 2001 From: Thomas Willingham Date: Thu, 11 Dec 2014 20:15:27 +0000 Subject: Update Smarty --- library/Smarty/README | 4 +- library/Smarty/SMARTY_3.1_NOTES.txt | 2 +- library/Smarty/change_log.txt | 357 +- library/Smarty/demo/index.php | 25 +- library/Smarty/demo/plugins/cacheresource.apc.php | 28 +- .../Smarty/demo/plugins/cacheresource.memcache.php | 36 +- .../Smarty/demo/plugins/cacheresource.mysql.php | 96 +- .../Smarty/demo/plugins/resource.extendsall.php | 32 +- library/Smarty/demo/plugins/resource.mysql.php | 35 +- library/Smarty/demo/plugins/resource.mysqls.php | 28 +- library/Smarty/demo/templates/header.tpl | 2 +- library/Smarty/demo/templates/index.tpl | 91 +- library/Smarty/libs/Smarty.class.php | 513 +- library/Smarty/libs/SmartyBC.class.php | 927 +-- library/Smarty/libs/debug.tpl | 256 +- library/Smarty/libs/plugins/block.textformat.php | 21 +- library/Smarty/libs/plugins/function.counter.php | 38 +- library/Smarty/libs/plugins/function.cycle.php | 47 +- library/Smarty/libs/plugins/function.fetch.php | 117 +- .../libs/plugins/function.html_checkboxes.php | 91 +- .../Smarty/libs/plugins/function.html_image.php | 68 +- .../Smarty/libs/plugins/function.html_options.php | 84 +- .../Smarty/libs/plugins/function.html_radios.php | 87 +- .../libs/plugins/function.html_select_date.php | 157 +- .../libs/plugins/function.html_select_time.php | 72 +- .../Smarty/libs/plugins/function.html_table.php | 45 +- library/Smarty/libs/plugins/function.mailto.php | 45 +- library/Smarty/libs/plugins/function.math.php | 54 +- .../Smarty/libs/plugins/modifier.capitalize.php | 59 +- .../Smarty/libs/plugins/modifier.date_format.php | 36 +- .../libs/plugins/modifier.debug_print_var.php | 61 +- library/Smarty/libs/plugins/modifier.escape.php | 40 +- .../Smarty/libs/plugins/modifier.regex_replace.php | 30 +- library/Smarty/libs/plugins/modifier.replace.php | 23 +- library/Smarty/libs/plugins/modifier.spacify.php | 18 +- library/Smarty/libs/plugins/modifier.truncate.php | 33 +- .../Smarty/libs/plugins/modifiercompiler.cat.php | 59 +- .../plugins/modifiercompiler.count_characters.php | 65 +- .../plugins/modifiercompiler.count_paragraphs.php | 55 +- .../plugins/modifiercompiler.count_sentences.php | 55 +- .../libs/plugins/modifiercompiler.count_words.php | 63 +- .../libs/plugins/modifiercompiler.default.php | 70 +- .../libs/plugins/modifiercompiler.escape.php | 251 +- .../libs/plugins/modifiercompiler.from_charset.php | 67 +- .../libs/plugins/modifiercompiler.indent.php | 65 +- .../Smarty/libs/plugins/modifiercompiler.lower.php | 62 +- .../libs/plugins/modifiercompiler.noprint.php | 46 +- .../plugins/modifiercompiler.string_format.php | 51 +- .../Smarty/libs/plugins/modifiercompiler.strip.php | 66 +- .../libs/plugins/modifiercompiler.strip_tags.php | 62 +- .../libs/plugins/modifiercompiler.to_charset.php | 67 +- .../libs/plugins/modifiercompiler.unescape.php | 101 +- .../Smarty/libs/plugins/modifiercompiler.upper.php | 59 +- .../libs/plugins/modifiercompiler.wordwrap.php | 93 +- .../libs/plugins/outputfilter.trimwhitespace.php | 34 +- .../libs/plugins/shared.escape_special_chars.php | 26 +- .../libs/plugins/shared.literal_compiler_param.php | 8 +- .../Smarty/libs/plugins/shared.make_timestamp.php | 15 +- .../Smarty/libs/plugins/shared.mb_str_replace.php | 20 +- library/Smarty/libs/plugins/shared.mb_unicode.php | 22 +- library/Smarty/libs/plugins/shared.mb_wordwrap.php | 60 +- .../plugins/variablefilter.htmlspecialchars.php | 10 +- .../libs/sysplugins/smarty_cacheresource.php | 337 +- .../sysplugins/smarty_cacheresource_custom.php | 159 +- .../smarty_cacheresource_keyvaluestore.php | 228 +- .../libs/sysplugins/smarty_config_source.php | 37 +- .../smarty_internal_cacheresource_file.php | 91 +- .../sysplugins/smarty_internal_compile_append.php | 21 +- .../sysplugins/smarty_internal_compile_assign.php | 30 +- .../sysplugins/smarty_internal_compile_block.php | 433 +- .../sysplugins/smarty_internal_compile_break.php | 152 +- .../sysplugins/smarty_internal_compile_call.php | 25 +- .../sysplugins/smarty_internal_compile_capture.php | 32 +- .../smarty_internal_compile_config_load.php | 31 +- .../smarty_internal_compile_continue.php | 153 +- .../sysplugins/smarty_internal_compile_debug.php | 20 +- .../sysplugins/smarty_internal_compile_eval.php | 26 +- .../sysplugins/smarty_internal_compile_extends.php | 155 +- .../sysplugins/smarty_internal_compile_for.php | 70 +- .../sysplugins/smarty_internal_compile_foreach.php | 76 +- .../smarty_internal_compile_function.php | 65 +- .../libs/sysplugins/smarty_internal_compile_if.php | 185 +- .../sysplugins/smarty_internal_compile_include.php | 246 +- .../smarty_internal_compile_include_php.php | 29 +- .../sysplugins/smarty_internal_compile_insert.php | 26 +- .../sysplugins/smarty_internal_compile_ldelim.php | 22 +- .../sysplugins/smarty_internal_compile_nocache.php | 37 +- ...marty_internal_compile_private_block_plugin.php | 38 +- ...ty_internal_compile_private_function_plugin.php | 26 +- .../smarty_internal_compile_private_modifier.php | 279 +- ...ernal_compile_private_object_block_function.php | 30 +- ...ty_internal_compile_private_object_function.php | 59 +- ...y_internal_compile_private_print_expression.php | 99 +- ...y_internal_compile_private_registered_block.php | 224 +- ...nternal_compile_private_registered_function.php | 160 +- ...y_internal_compile_private_special_variable.php | 39 +- .../sysplugins/smarty_internal_compile_rdelim.php | 22 +- .../sysplugins/smarty_internal_compile_section.php | 81 +- .../smarty_internal_compile_setfilter.php | 142 +- .../sysplugins/smarty_internal_compile_while.php | 43 +- .../sysplugins/smarty_internal_compilebase.php | 48 +- .../libs/sysplugins/smarty_internal_config.php | 75 +- .../smarty_internal_config_file_compiler.php | 51 +- .../sysplugins/smarty_internal_configfilelexer.php | 454 +- .../smarty_internal_configfileparser.php | 875 +-- .../libs/sysplugins/smarty_internal_data.php | 173 +- .../libs/sysplugins/smarty_internal_debug.php | 78 +- .../sysplugins/smarty_internal_filter_handler.php | 27 +- .../smarty_internal_function_call_handler.php | 107 +- .../smarty_internal_get_include_path.php | 94 +- .../sysplugins/smarty_internal_nocache_insert.php | 104 +- .../libs/sysplugins/smarty_internal_parsetree.php | 756 ++- .../sysplugins/smarty_internal_resource_eval.php | 190 +- .../smarty_internal_resource_extends.php | 141 +- .../sysplugins/smarty_internal_resource_file.php | 33 +- .../sysplugins/smarty_internal_resource_php.php | 51 +- .../smarty_internal_resource_registered.php | 45 +- .../sysplugins/smarty_internal_resource_stream.php | 39 +- .../sysplugins/smarty_internal_resource_string.php | 55 +- .../smarty_internal_smartytemplatecompiler.php | 43 +- .../libs/sysplugins/smarty_internal_template.php | 200 +- .../sysplugins/smarty_internal_templatebase.php | 297 +- .../smarty_internal_templatecompilerbase.php | 1484 +++-- .../sysplugins/smarty_internal_templatelexer.php | 1572 +++-- .../sysplugins/smarty_internal_templateparser.php | 6678 ++++++++++++-------- .../libs/sysplugins/smarty_internal_utility.php | 407 +- .../libs/sysplugins/smarty_internal_write_file.php | 32 +- library/Smarty/libs/sysplugins/smarty_resource.php | 304 +- .../libs/sysplugins/smarty_resource_custom.php | 39 +- .../libs/sysplugins/smarty_resource_recompiled.php | 19 +- .../libs/sysplugins/smarty_resource_uncompiled.php | 23 +- library/Smarty/libs/sysplugins/smarty_security.php | 147 +- 132 files changed, 13450 insertions(+), 10329 deletions(-) diff --git a/library/Smarty/README b/library/Smarty/README index 167462823..6367f030e 100644 --- a/library/Smarty/README +++ b/library/Smarty/README @@ -1,4 +1,4 @@ -Smarty 3.1.11 +Smarty 3.1.21 Author: Monte Ohrt Author: Uwe Tews @@ -120,7 +120,7 @@ $smarty->unregisterObject($object_name) $smarty->unregisterFilter($type, $function_name) $smarty->unregisterResource($resource_type) -$smarty->compileAllTemplates($extention = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null) +$smarty->compileAllTemplates($extension = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null) $smarty->clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null) $smarty->testInstall() diff --git a/library/Smarty/SMARTY_3.1_NOTES.txt b/library/Smarty/SMARTY_3.1_NOTES.txt index e56e56f67..57709f0d7 100644 --- a/library/Smarty/SMARTY_3.1_NOTES.txt +++ b/library/Smarty/SMARTY_3.1_NOTES.txt @@ -199,7 +199,7 @@ Relative paths are available with {include file="..."} and $smarty->fetch('./foo.tpl') cannot be relative to a template, an exception is thrown. - Adressing a specific $template_dir + Addressing a specific $template_dir Smarty 3.1 introduces the $template_dir index notation. $smarty->fetch('[foo]bar.tpl') and {include file="[foo]bar.tpl"} diff --git a/library/Smarty/change_log.txt b/library/Smarty/change_log.txt index 27c506db6..a0161659d 100644 --- a/library/Smarty/change_log.txt +++ b/library/Smarty/change_log.txt @@ -1,5 +1,342 @@ -===== trunk ===== -===== Smarty-3.1.11 ===== + ===== 3.1.22-dev ===== (xx.xx.2014) + ===== 3.1.21 ===== (18.10.2014) + 18.10.2014 + - composer moved to github + - add COMPOSER_RELEASE_NOTES + + 17.10.2014 + - bugfix on $php_handling security and optimization of smarty_internal_parsetree (Thue Kristensen) + + 16.10.2014 + - bugfix composer.json update + + 15.10.2014 + - bugfix calling a new created cache file with fetch() and Smarty::CACHING_LIFETIME_SAVED multiple times did fail (forum 22350) + + 14.10.2014 + - bugfix any tag placed within " diff --git a/library/Smarty/libs/plugins/block.textformat.php b/library/Smarty/libs/plugins/block.textformat.php index b22b104a5..abf544939 100644 --- a/library/Smarty/libs/plugins/block.textformat.php +++ b/library/Smarty/libs/plugins/block.textformat.php @@ -2,13 +2,12 @@ /** * Smarty plugin to format text blocks * - * @package Smarty + * @package Smarty * @subpackage PluginsBlock */ /** * Smarty {textformat}{/textformat} block plugin - * * Type: block function
* Name: textformat
* Purpose: format text a certain way with preset styles @@ -23,12 +22,14 @@ * - wrap_boundary - boolean (true) * * - * @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat} - * (Smarty online manual) + * @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat} + * (Smarty online manual) + * * @param array $params parameters * @param string $content contents of the block * @param Smarty_Internal_Template $template template object * @param boolean &$repeat repeat flag + * * @return string content re-formatted * @author Monte Ohrt */ @@ -53,17 +54,17 @@ function smarty_block_textformat($params, $content, $template, &$repeat) case 'indent_char': case 'wrap_char': case 'assign': - $$_key = (string)$_val; + $$_key = (string) $_val; break; case 'indent': case 'indent_first': case 'wrap': - $$_key = (int)$_val; + $$_key = (int) $_val; break; case 'wrap_cut': - $$_key = (bool)$_val; + $$_key = (bool) $_val; break; default: @@ -76,8 +77,6 @@ function smarty_block_textformat($params, $content, $template, &$repeat) } // split into paragraphs $_paragraphs = preg_split('![\r\n]{2}!', $content); - $_output = ''; - foreach ($_paragraphs as &$_paragraph) { if (!$_paragraph) { @@ -102,12 +101,10 @@ function smarty_block_textformat($params, $content, $template, &$repeat) } } $_output = implode($wrap_char . $wrap_char, $_paragraphs); - + if ($assign) { $template->assign($assign, $_output); } else { return $_output; } } - -?> \ No newline at end of file diff --git a/library/Smarty/libs/plugins/function.counter.php b/library/Smarty/libs/plugins/function.counter.php index 3906badf0..4da85a14e 100644 --- a/library/Smarty/libs/plugins/function.counter.php +++ b/library/Smarty/libs/plugins/function.counter.php @@ -1,22 +1,24 @@ * Name: counter
* Purpose: print out a counter value * * @author Monte Ohrt - * @link http://www.smarty.net/manual/en/language.function.counter.php {counter} - * (Smarty online manual) + * @link http://www.smarty.net/manual/en/language.function.counter.php {counter} + * (Smarty online manual) + * * @param array $params parameters * @param Smarty_Internal_Template $template template object + * * @return string|null */ function smarty_function_counter($params, $template) @@ -26,16 +28,16 @@ function smarty_function_counter($params, $template) $name = (isset($params['name'])) ? $params['name'] : 'default'; if (!isset($counters[$name])) { $counters[$name] = array( - 'start'=>1, - 'skip'=>1, - 'direction'=>'up', - 'count'=>1 - ); + 'start' => 1, + 'skip' => 1, + 'direction' => 'up', + 'count' => 1 + ); } $counter =& $counters[$name]; if (isset($params['start'])) { - $counter['start'] = $counter['count'] = (int)$params['start']; + $counter['start'] = $counter['count'] = (int) $params['start']; } if (!empty($params['assign'])) { @@ -45,9 +47,9 @@ function smarty_function_counter($params, $template) if (isset($counter['assign'])) { $template->assign($counter['assign'], $counter['count']); } - + if (isset($params['print'])) { - $print = (bool)$params['print']; + $print = (bool) $params['print']; } else { $print = empty($counter['assign']); } @@ -61,18 +63,16 @@ function smarty_function_counter($params, $template) if (isset($params['skip'])) { $counter['skip'] = $params['skip']; } - + if (isset($params['direction'])) { $counter['direction'] = $params['direction']; } - if ($counter['direction'] == "down") + if ($counter['direction'] == "down") { $counter['count'] -= $counter['skip']; - else + } else { $counter['count'] += $counter['skip']; - + } + return $retval; - } - -?> \ No newline at end of file diff --git a/library/Smarty/libs/plugins/function.cycle.php b/library/Smarty/libs/plugins/function.cycle.php index 1778ffb53..8dc5cd9d5 100644 --- a/library/Smarty/libs/plugins/function.cycle.php +++ b/library/Smarty/libs/plugins/function.cycle.php @@ -2,13 +2,12 @@ /** * Smarty plugin * - * @package Smarty + * @package Smarty * @subpackage PluginsFunction */ /** * Smarty {cycle} function plugin - * * Type: function
* Name: cycle
* Date: May 3, 2002
@@ -31,15 +30,17 @@ * {cycle name=row} * * - * @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle} - * (Smarty online manual) - * @author Monte Ohrt - * @author credit to Mark Priatel - * @author credit to Gerard - * @author credit to Jason Sweat + * @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle} + * (Smarty online manual) + * @author Monte Ohrt + * @author credit to Mark Priatel + * @author credit to Gerard + * @author credit to Jason Sweat * @version 1.3 + * * @param array $params parameters * @param Smarty_Internal_Template $template template object + * * @return string|null */ @@ -48,18 +49,20 @@ function smarty_function_cycle($params, $template) static $cycle_vars; $name = (empty($params['name'])) ? 'default' : $params['name']; - $print = (isset($params['print'])) ? (bool)$params['print'] : true; - $advance = (isset($params['advance'])) ? (bool)$params['advance'] : true; - $reset = (isset($params['reset'])) ? (bool)$params['reset'] : false; + $print = (isset($params['print'])) ? (bool) $params['print'] : true; + $advance = (isset($params['advance'])) ? (bool) $params['advance'] : true; + $reset = (isset($params['reset'])) ? (bool) $params['reset'] : false; if (!isset($params['values'])) { - if(!isset($cycle_vars[$name]['values'])) { + if (!isset($cycle_vars[$name]['values'])) { trigger_error("cycle: missing 'values' parameter"); + return; } } else { - if(isset($cycle_vars[$name]['values']) - && $cycle_vars[$name]['values'] != $params['values'] ) { + if (isset($cycle_vars[$name]['values']) + && $cycle_vars[$name]['values'] != $params['values'] + ) { $cycle_vars[$name]['index'] = 0; } $cycle_vars[$name]['values'] = $params['values']; @@ -71,13 +74,13 @@ function smarty_function_cycle($params, $template) $cycle_vars[$name]['delimiter'] = ','; } - if(is_array($cycle_vars[$name]['values'])) { + if (is_array($cycle_vars[$name]['values'])) { $cycle_array = $cycle_vars[$name]['values']; } else { - $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']); + $cycle_array = explode($cycle_vars[$name]['delimiter'], $cycle_vars[$name]['values']); } - if(!isset($cycle_vars[$name]['index']) || $reset ) { + if (!isset($cycle_vars[$name]['index']) || $reset) { $cycle_vars[$name]['index'] = 0; } @@ -86,21 +89,19 @@ function smarty_function_cycle($params, $template) $template->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]); } - if($print) { + if ($print) { $retval = $cycle_array[$cycle_vars[$name]['index']]; } else { $retval = null; } - if($advance) { - if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) { + if ($advance) { + if ($cycle_vars[$name]['index'] >= count($cycle_array) - 1) { $cycle_vars[$name]['index'] = 0; } else { - $cycle_vars[$name]['index']++; + $cycle_vars[$name]['index'] ++; } } return $retval; } - -?> \ No newline at end of file diff --git a/library/Smarty/libs/plugins/function.fetch.php b/library/Smarty/libs/plugins/function.fetch.php index eca1182d5..3506d4a8d 100644 --- a/library/Smarty/libs/plugins/function.fetch.php +++ b/library/Smarty/libs/plugins/function.fetch.php @@ -2,50 +2,53 @@ /** * Smarty plugin * - * @package Smarty + * @package Smarty * @subpackage PluginsFunction */ /** * Smarty {fetch} plugin - * * Type: function
* Name: fetch
* Purpose: fetch file, web or ftp data and display results * - * @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch} - * (Smarty online manual) + * @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch} + * (Smarty online manual) * @author Monte Ohrt + * * @param array $params parameters * @param Smarty_Internal_Template $template template object + * + * @throws SmartyException * @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable */ function smarty_function_fetch($params, $template) { if (empty($params['file'])) { - trigger_error("[plugin] fetch parameter 'file' cannot be empty",E_USER_NOTICE); + trigger_error("[plugin] fetch parameter 'file' cannot be empty", E_USER_NOTICE); + return; } - + // strip file protocol if (stripos($params['file'], 'file://') === 0) { $params['file'] = substr($params['file'], 7); } - + $protocol = strpos($params['file'], '://'); if ($protocol !== false) { $protocol = strtolower(substr($params['file'], 0, $protocol)); } - + if (isset($template->smarty->security_policy)) { if ($protocol) { // remote resource (or php stream, …) - if(!$template->smarty->security_policy->isTrustedUri($params['file'])) { + if (!$template->smarty->security_policy->isTrustedUri($params['file'])) { return; } } else { // local file - if(!$template->smarty->security_policy->isTrustedResourceDir($params['file'])) { + if (!$template->smarty->security_policy->isTrustedResourceDir($params['file'])) { return; } } @@ -54,53 +57,54 @@ function smarty_function_fetch($params, $template) $content = ''; if ($protocol == 'http') { // http fetch - if($uri_parts = parse_url($params['file'])) { + if ($uri_parts = parse_url($params['file'])) { // set defaults $host = $server_name = $uri_parts['host']; $timeout = 30; $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*"; - $agent = "Smarty Template Engine ". Smarty::SMARTY_VERSION; + $agent = "Smarty Template Engine " . Smarty::SMARTY_VERSION; $referer = ""; $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/'; $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : ''; $_is_proxy = false; - if(empty($uri_parts['port'])) { + if (empty($uri_parts['port'])) { $port = 80; } else { $port = $uri_parts['port']; } - if(!empty($uri_parts['user'])) { + if (!empty($uri_parts['user'])) { $user = $uri_parts['user']; } - if(!empty($uri_parts['pass'])) { + if (!empty($uri_parts['pass'])) { $pass = $uri_parts['pass']; } // loop through parameters, setup headers - foreach($params as $param_key => $param_value) { - switch($param_key) { + foreach ($params as $param_key => $param_value) { + switch ($param_key) { case "file": case "assign": case "assign_headers": break; case "user": - if(!empty($param_value)) { + if (!empty($param_value)) { $user = $param_value; } break; case "pass": - if(!empty($param_value)) { + if (!empty($param_value)) { $pass = $param_value; } break; case "accept": - if(!empty($param_value)) { + if (!empty($param_value)) { $accept = $param_value; } break; case "header": - if(!empty($param_value)) { - if(!preg_match('![\w\d-]+: .+!',$param_value)) { - trigger_error("[plugin] invalid header format '".$param_value."'",E_USER_NOTICE); + if (!empty($param_value)) { + if (!preg_match('![\w\d-]+: .+!', $param_value)) { + trigger_error("[plugin] invalid header format '" . $param_value . "'", E_USER_NOTICE); + return; } else { $extra_headers[] = $param_value; @@ -108,99 +112,104 @@ function smarty_function_fetch($params, $template) } break; case "proxy_host": - if(!empty($param_value)) { + if (!empty($param_value)) { $proxy_host = $param_value; } break; case "proxy_port": - if(!preg_match('!\D!', $param_value)) { + if (!preg_match('!\D!', $param_value)) { $proxy_port = (int) $param_value; } else { - trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE); + trigger_error("[plugin] invalid value for attribute '" . $param_key . "'", E_USER_NOTICE); + return; } break; case "agent": - if(!empty($param_value)) { + if (!empty($param_value)) { $agent = $param_value; } break; case "referer": - if(!empty($param_value)) { + if (!empty($param_value)) { $referer = $param_value; } break; case "timeout": - if(!preg_match('!\D!', $param_value)) { + if (!preg_match('!\D!', $param_value)) { $timeout = (int) $param_value; } else { - trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE); + trigger_error("[plugin] invalid value for attribute '" . $param_key . "'", E_USER_NOTICE); + return; } break; default: - trigger_error("[plugin] unrecognized attribute '".$param_key."'",E_USER_NOTICE); + trigger_error("[plugin] unrecognized attribute '" . $param_key . "'", E_USER_NOTICE); + return; } } - if(!empty($proxy_host) && !empty($proxy_port)) { + if (!empty($proxy_host) && !empty($proxy_port)) { $_is_proxy = true; - $fp = fsockopen($proxy_host,$proxy_port,$errno,$errstr,$timeout); + $fp = fsockopen($proxy_host, $proxy_port, $errno, $errstr, $timeout); } else { - $fp = fsockopen($server_name,$port,$errno,$errstr,$timeout); + $fp = fsockopen($server_name, $port, $errno, $errstr, $timeout); } - if(!$fp) { - trigger_error("[plugin] unable to fetch: $errstr ($errno)",E_USER_NOTICE); + if (!$fp) { + trigger_error("[plugin] unable to fetch: $errstr ($errno)", E_USER_NOTICE); + return; } else { - if($_is_proxy) { + if ($_is_proxy) { fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n"); } else { fputs($fp, "GET $uri HTTP/1.0\r\n"); } - if(!empty($host)) { + if (!empty($host)) { fputs($fp, "Host: $host\r\n"); } - if(!empty($accept)) { + if (!empty($accept)) { fputs($fp, "Accept: $accept\r\n"); } - if(!empty($agent)) { + if (!empty($agent)) { fputs($fp, "User-Agent: $agent\r\n"); } - if(!empty($referer)) { + if (!empty($referer)) { fputs($fp, "Referer: $referer\r\n"); } - if(isset($extra_headers) && is_array($extra_headers)) { - foreach($extra_headers as $curr_header) { - fputs($fp, $curr_header."\r\n"); + if (isset($extra_headers) && is_array($extra_headers)) { + foreach ($extra_headers as $curr_header) { + fputs($fp, $curr_header . "\r\n"); } } - if(!empty($user) && !empty($pass)) { - fputs($fp, "Authorization: BASIC ".base64_encode("$user:$pass")."\r\n"); + if (!empty($user) && !empty($pass)) { + fputs($fp, "Authorization: BASIC " . base64_encode("$user:$pass") . "\r\n"); } fputs($fp, "\r\n"); - while(!feof($fp)) { - $content .= fgets($fp,4096); + while (!feof($fp)) { + $content .= fgets($fp, 4096); } fclose($fp); - $csplit = preg_split("!\r\n\r\n!",$content,2); + $csplit = preg_split("!\r\n\r\n!", $content, 2); $content = $csplit[1]; - if(!empty($params['assign_headers'])) { - $template->assign($params['assign_headers'],preg_split("!\r\n!",$csplit[0])); + if (!empty($params['assign_headers'])) { + $template->assign($params['assign_headers'], preg_split("!\r\n!", $csplit[0])); } } } else { - trigger_error("[plugin fetch] unable to parse URL, check syntax",E_USER_NOTICE); + trigger_error("[plugin fetch] unable to parse URL, check syntax", E_USER_NOTICE); + return; } } else { $content = @file_get_contents($params['file']); if ($content === false) { - throw new SmartyException("{fetch} cannot read resource '" . $params['file'] ."'"); + throw new SmartyException("{fetch} cannot read resource '" . $params['file'] . "'"); } } @@ -210,5 +219,3 @@ function smarty_function_fetch($params, $template) return $content; } } - -?> \ No newline at end of file diff --git a/library/Smarty/libs/plugins/function.html_checkboxes.php b/library/Smarty/libs/plugins/function.html_checkboxes.php index fb9584bbd..d78680368 100644 --- a/library/Smarty/libs/plugins/function.html_checkboxes.php +++ b/library/Smarty/libs/plugins/function.html_checkboxes.php @@ -2,13 +2,12 @@ /** * Smarty plugin * - * @package Smarty + * @package Smarty * @subpackage PluginsFunction */ /** * Smarty {html_checkboxes} function plugin - * * File: function.html_checkboxes.php
* Type: function
* Name: html_checkboxes
@@ -32,15 +31,17 @@ * - escape (optional) - escape the content (not value), defaults to true * * - * @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes} - * (Smarty online manual) + * @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes} + * (Smarty online manual) * @author Christopher Kvarme - * @author credits to Monte Ohrt + * @author credits to Monte Ohrt * @version 1.0 - * @param array $params parameters + * + * @param array $params parameters * @param object $template template object + * * @return string - * @uses smarty_function_escape_special_chars() + * @uses smarty_function_escape_special_chars() */ function smarty_function_html_checkboxes($params, $template) { @@ -58,8 +59,8 @@ function smarty_function_html_checkboxes($params, $template) $extra = ''; - foreach($params as $_key => $_val) { - switch($_key) { + foreach ($params as $_key => $_val) { + switch ($_key) { case 'name': case 'separator': $$_key = (string) $_val; @@ -89,7 +90,7 @@ function smarty_function_html_checkboxes($params, $template) if (method_exists($_sel, "__toString")) { $_sel = smarty_function_escape_special_chars((string) $_sel->__toString()); } else { - trigger_error("html_checkboxes: selected attribute contains an object of class '". get_class($_sel) ."' without __toString() method", E_USER_NOTICE); + trigger_error("html_checkboxes: selected attribute contains an object of class '" . get_class($_sel) . "' without __toString() method", E_USER_NOTICE); continue; } } else { @@ -101,7 +102,7 @@ function smarty_function_html_checkboxes($params, $template) if (method_exists($_val, "__toString")) { $selected = smarty_function_escape_special_chars((string) $_val->__toString()); } else { - trigger_error("html_checkboxes: selected attribute is an object of class '". get_class($_val) ."' without __toString() method", E_USER_NOTICE); + trigger_error("html_checkboxes: selected attribute is an object of class '" . get_class($_val) . "' without __toString() method", E_USER_NOTICE); } } else { $selected = smarty_function_escape_special_chars((string) $_val); @@ -116,9 +117,27 @@ function smarty_function_html_checkboxes($params, $template) case 'assign': break; + case 'strict': + break; + + case 'disabled': + case 'readonly': + if (!empty($params['strict'])) { + if (!is_scalar($_val)) { + trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE); + } + + if ($_val === true || $_val === $_key) { + $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"'; + } + + break; + } + // omit break; to fall through! + default: - if(!is_array($_val)) { - $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"'; + if (!is_array($_val)) { + $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"'; } else { trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE); } @@ -126,76 +145,79 @@ function smarty_function_html_checkboxes($params, $template) } } - if (!isset($options) && !isset($values)) - return ''; /* raise error here? */ + if (!isset($options) && !isset($values)) { + return ''; + } /* raise error here? */ $_html_result = array(); if (isset($options)) { - foreach ($options as $_key=>$_val) { + foreach ($options as $_key => $_val) { $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape); } } else { - foreach ($values as $_i=>$_key) { + foreach ($values as $_i => $_key) { $_val = isset($output[$_i]) ? $output[$_i] : ''; $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape); } } - if(!empty($params['assign'])) { + if (!empty($params['assign'])) { $template->assign($params['assign'], $_html_result); } else { return implode("\n", $_html_result); } - } -function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape=true) { +function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape = true) +{ $_output = ''; - + if (is_object($value)) { if (method_exists($value, "__toString")) { $value = (string) $value->__toString(); } else { - trigger_error("html_options: value is an object of class '". get_class($value) ."' without __toString() method", E_USER_NOTICE); + trigger_error("html_options: value is an object of class '" . get_class($value) . "' without __toString() method", E_USER_NOTICE); + return ''; } } else { $value = (string) $value; } - + if (is_object($output)) { if (method_exists($output, "__toString")) { $output = (string) $output->__toString(); } else { - trigger_error("html_options: output is an object of class '". get_class($output) ."' without __toString() method", E_USER_NOTICE); + trigger_error("html_options: output is an object of class '" . get_class($output) . "' without __toString() method", E_USER_NOTICE); + return ''; } } else { $output = (string) $output; } - + if ($labels) { if ($label_ids) { $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value)); $_output .= '