===== 3.1.29 ===== (21.12.2015) 21.12.2015 - optimization improve speed of filetime checks on extends and extendsall resource 20.12.2015 - bugfix failure when the default resource type was set to 'extendsall' https://github.com/smarty-php/smarty/issues/123 - update compilation of Smarty special variables - bugfix add addition check for OS type on normalizaition of file path https://github.com/smarty-php/smarty/issues/134 - bugfix the source uid of the extendsall resource must contain $template_dir settings https://github.com/smarty-php/smarty/issues/123 19.12.2015 - bugfix using $smarty.capture.foo in expressions could fail https://github.com/smarty-php/smarty/pull/138 - bugfix broken PHP 5.2 compatibility https://github.com/smarty-php/smarty/issues/139 - remove no longer used code - improvement make sure that compiled and cache templates never can contain a trailing '?>? 18.12.2015 - bugfix regression when modifier parameter was follow by math https://github.com/smarty-php/smarty/issues/132 17.12.2015 - bugfix {$smarty.capture.nameFail} did lowercase capture name https://github.com/smarty-php/smarty/issues/135 - bugfix using {block append/prepend} on same block in multiple levels of inheritance templates could fail (forum topic 25827) - bugfix text content consisting of just a single '0' like in {if true}0{/if} was suppressed (forum topic 25834) 16.12.2015 - bugfix {foreach} did fail if from atrribute is a Generator class https://github.com/smarty-php/smarty/issues/128 - bugfix direct access $smarty->template_dir = 'foo'; should call Smarty::setTemplateDir() https://github.com/smarty-php/smarty/issues/121 15.12.2015 - bugfix {$smarty.cookies.foo} did return the $_COOKIE array not the 'foo' value https://github.com/smarty-php/smarty/issues/122 - bugfix a call to clearAllCache() and other should clear all internal template object caches (forum topic 25828) 14.12.2015 - bugfix {$smarty.config.foo} broken in 3.1.28 https://github.com/smarty-php/smarty/issues/120 - bugfix multiple calls of {section} with same name droped E_NOTICE error https://github.com/smarty-php/smarty/issues/118 ===== 3.1.28 ===== (13.12.2015) 13.12.2015 - bugfix {foreach} and {section} with uppercase characters in name attribute did not work (forum topic 25819) - bugfix $smarty->debugging_ctrl = 'URL' did not work (forum topic 25811) - bugfix Debug Console could display incorrect data when using subtemplates 09.12.2015 - bugfix Smarty did fail under PHP 7.0.0 with use_include_path = true; 09.12.2015 - bugfix {strip} should exclude some html tags from stripping, related to fix for https://github.com/smarty-php/smarty/issues/111 08.12.2015 - bugfix internal template function data got stored in wrong compiled file https://github.com/smarty-php/smarty/issues/114 05.12.2015 -bugfix {strip} should insert a single space https://github.com/smarty-php/smarty/issues/111 25.11.2015 -bugfix a left delimter like '[%' did fail on [%$var_[%$variable%]%] (forum topic 25798) 02.11.2015 - bugfix {include} with variable file name like {include file="foo_`$bar`.tpl"} did fail in 3.1.28-dev https://github.com/smarty-php/smarty/issues/102 01.11.2015 - update config file processing 31.10.2015 - bugfix add missing $trusted_dir property to SmartyBC class (forum topic 25751) 29.10.2015 - improve template scope handling 24.10.2015 - more optimizations of template processing - bugfix Error when using {include} within {capture} https://github.com/smarty-php/smarty/issues/100 21.10.2015 - move some code into runtime extensions 18.10.2015 - optimize filepath normalization - rework of template inheritance - speed and size optimizations - bugfix under HHVM temporary cache file must only be created when caches template was updated - fix compiled code for new {block} assign attribute - update code generated by template function call handler 18.09.2015 - bugfix {if $foo instanceof $bar} failed to compile if 2nd value is a variable https://github.com/smarty-php/smarty/issues/92 17.09.2015 - bugfix {foreach} first attribute was not correctly reset since commit 05a8fa2 of 02.08.2015 https://github.com/smarty-php/smarty/issues/90 16.09.2015 - update compiler by moving no longer needed properties, code optimizations and other 14.09.2015 - optimize autoloader - optimize subtemplate handling - update template inheritance processing - move code of {call} processing back into Smarty_Internal_Template class - improvement invalidate OPCACHE for cleared compiled and cached template files (forum topic 25557) - bugfix unintended multiple debug windows (forum topic 25699) 30.08.2015 - size optimization move some runtime functions into extension - optimize inline template processing - optimization merge inheritance child and parent templates into one compiled template file 29.08.2015 - improvement convert template inheritance into runtime processing - bugfix {$smarty.block.parent} did always reference the root parent block https://github.com/smarty-php/smarty/issues/68 23.08.2015 - introduce Smarty::$resource_cache_mode and cache template object of {include} inside loop - load seldom used Smarty API methods dynamically to reduce memory footprint - cache template object of {include} if same template is included several times - convert debug console processing to object - use output buffers for better performance and less memory usage - optimize nocache hash processing - remove not really needed properties - optimize rendering - move caching to Smarty::_cache - remove properties with redundant content - optimize Smarty::templateExists() - optimize use_include_path processing - relocate properties for size optimization - remove redundant code - bugfix compiling super globals like {$smarty.get.foo} did fail in the master branch https://github.com/smarty-php/smarty/issues/77 06.08.2015 - avoid possible circular object references caused by parser/lexer objects - rewrite compileAll... utility methods - commit several internal improvements - bugfix Smarty failed when compile_id did contain "|" 03.08.2015 - rework clear cache methods - bugfix compileAllConfig() was broken since 3.1.22 because of the changes in config file processing - improve getIncludePath() to return directory if no file was given 02.08.2015 - optimization and code cleanup of {foreach} and {section} compiler - rework {capture} compiler 01.08.2015 - update DateTime object can be instance of DateTimeImmutable since PHP5.5 https://github.com/smarty-php/smarty/pull/75 - improvement show resource type and start of template source instead of uid on eval: and string: resource (forum topic 25630) 31.07.2015 - optimize {foreach} and {section} compiler 29.07.2015 - optimize {section} compiler for speed and size of compiled code 28.07.2015 - update for PHP 7 compatibility 26.07.2015 - improvement impement workaround for HHVM PHP incompatibillity https://github.com/facebook/hhvm/issues/4797 25.07.2015 - bugfix parser did hang on text starting fetch('foo.tpl') https://github.com/smarty-php/smarty/issues/70 - improvement Added $limit parameter to regex_replace modifier #71 - new feature multiple indices on file: resource 06.07.2015 - optimize {block} compilation - optimization get rid of __get and __set in source object 01.07.2015 - optimize compile check handling - update {foreach} compiler - bugfix debugging console did not display string values containing \n, \r or \t correctly https://github.com/smarty-php/smarty/issues/66 - optimize source resources 28.06.2015 - move $smarty->enableSecurity() into Smarty_Security class - optimize security isTrustedResourceDir() - move auto load filter methods into extension - move $smarty->getTemplateVars() into extension - move getStreamVariable() into extension - move $smarty->append() and $smarty->appendByRef() into extension - optimize autoloader - optimize file path normalization - bugfix PATH_SEPARATOR was replaced by mistake in autoloader - remove redundant code 27.06.2015 - bugfix resolve naming conflict between custom Smarty delimiter '<%' and PHP ASP tags https://github.com/smarty-php/smarty/issues/64 - update $smarty->_realpath for relative path not starting with './' - update Smarty security with new realpath handling - update {include_php} with new realpath handling - move $smarty->loadPlugin() into extension - minor compiler optimizations - bugfix allow function plugins with name ending with 'close' https://github.com/smarty-php/smarty/issues/52 - rework of $smarty->clearCompiledTemplate() and move it to its own extension 19.06.2015 - improvement allow closures as callback at $smarty->registerFilter() https://github.com/smarty-php/smarty/issues/59 ===== 3.1.27===== (18.06.2015) 18.06.2015 - bugfix another update on file path normalization failed on path containing something like "/.foo/" https://github.com/smarty-php/smarty/issues/56 ===== 3.1.26===== (18.06.2015) 18.06.2015 - bugfix file path normalization failed on path containing something like "/.foo/" https://github.com/smarty-php/smarty/issues/56 17.06.2015 - bugfix calling a plugin with nocache option but no other attributes like {foo nocache} caused call to undefined function https://github.com/smarty-php/smarty/issues/55 ===== 3.1.25===== (15.06.2015) 15.06.2015 - optimization of smarty_cachereource_keyvaluestore.php code 14.06.2015 - bugfix a relative sub template path could fail if template_dir path did contain /../ https://github.com/smarty-php/smarty/issues/50 - optimization rework of path normalization - bugfix an output tag with variable, modifier followed by an operator like {$foo|modifier+1} did fail https://github.com/smarty-php/smarty/issues/53 13.06.2015 - bugfix a custom cache resource using smarty_cachereource_keyvaluestore.php did fail if php.ini mbstring.func_overload = 2 (forum topic 25568) 11.06.2015 - bugfix the lexer could hang on very large quoted strings (forum topic 25570) 08.06.2015 - bugfix using {$foo} as array index like $bar.{$foo} or in double quoted string like "some {$foo} thing" failed https://github.com/smarty-php/smarty/issues/49 04.06.2015 - bugfix possible error message on unset() while compiling {block} tags https://github.com/smarty-php/smarty/issues/46 01.06.2015 - bugfix including template variables broken since 3.1.22 https://github.com/smarty-php/smarty/issues/47 27.05.2015 - bugfix {include} with variable file name must not create by default individual cache file (since 3.1.22) https://github.com/smarty-php/smarty/issues/43 24.05.2015 - bugfix if condition string 'neq' broken due to a typo https://github.com/smarty-php/smarty/issues/42 ===== 3.1.24===== (23.05.2015) 23.05.2015 - improvement on php_handling to allow very large PHP sections, better error handling - improvement allow extreme large comment sections (forum 25538) 21.05.2015 - bugfix broken PHP 5.2 compatibility when compiling 1 did compile into wrong code https://github.com/smarty-php/smarty/issues/41 19.05.2015 - bugfix compiler did overwrite existing variable value when setting the nocache attribute https://github.com/smarty-php/smarty/issues/39 - bugfix output filter trimwhitespace could run into the pcre.backtrack_limit on large output (code.google issue 220) - bugfix compiler could run into the pcre.backtrack_limit on larger comment or {php} tag sections (forum 25538) 18.05.2015 - improvement introduce shortcuts in lexer/parser rules for most frequent terms for higher compilation speed 16.05.2015 - bugfix {php}{/php} did work just for single lines https://github.com/smarty-php/smarty/issues/33 - improvement remove not needed ?> handling from parser to new compiler module 05.05.2015 - bugfix code could be messed up when {tags} are used in multiple attributes https://github.com/smarty-php/smarty/issues/23 04.05.2015 - bugfix Smarty_Resource::parseResourceName incompatible with Google AppEngine (https://github.com/smarty-php/smarty/issues/22) - improvement use is_file() checks to avoid errors suppressed by @ which could still cause problems (https://github.com/smarty-php/smarty/issues/24) 28.04.2015 - bugfix plugins of merged subtemplates not loaded in 3.1.22-dev (forum topic 25508) 2nd fix 28.04.2015 - bugfix plugins of merged subtemplates not loaded in 3.1.22-dev (forum topic 25508) 23.04.2015 - bugfix a nocache template variable used as parameter at {insert} was by mistake cached 20.04.2015 - bugfix at a template function containing nocache code a parmeter could overwrite a template variable of same name 27.03.2015 - bugfix Smarty_Security->allow_constants=false; did also disable true, false and null (change of 16.03.2015) - improvement added a whitelist for trusted constants to security Smarty_Security::$trusted_constants (forum topic 25471) 20.03.2015 - bugfix make sure that function properties get saved only in compiled files containing the fuction definition {forum topic 25452} - bugfix correct update of global variable values on exit of template functions. (reported under Smarty Developers) 16.03.2015 - bugfix problems with {function}{/function} and {call} tags in different subtemplate cache files {forum topic 25452} - bugfix Smarty_Security->allow_constants=false; did not disallow direct usage of defined constants like {SMARTY_DIR} {forum topic 25457} - bugfix {block}{/block} tags did not work inside double quoted strings https://github.com/smarty-php/smarty/issues/18 15.03.2015 - bugfix $smarty->compile_check must be restored before rendering of a just updated cache file {forum 25452} 14.03.2015 - bugfix {nocache} {/nocache} tags corrupted code when used within a nocache section caused by a nocache template variable. - bugfix template functions defined with {function} in an included subtemplate could not be called in nocache mode with {call... nocache} if the subtemplate had it's own cache file {forum 25452} 10.03.2015 - bugfix {include ... nocache} whith variable file or compile_id attribute was not executed in nocache mode. 12.02.2015 - bugfix multiple Smarty::fetch() of same template when $smarty->merge_compiled_includes = true; could cause function already defined error 11.02.2015 - bugfix recursive {includes} did create E_NOTICE message when $smarty->merge_compiled_includes = true; (github issue #16) 22.01.2015 - new feature security can now control access to static methods and properties see also NEW_FEATURES.txt 21.01.2015 - bugfix clearCompiledTemplates(), clearAll() and clear() could try to delete whole drive at wrong path permissions because realpath() fail (forum 25397) - bugfix 'self::' and 'parent::' was interpreted in template syntax as static class 04.01.2015 - push last weeks changes to github - different optimizations - improvement automatically create different versions of compiled templates and config files depending on property settings. - optimization restructure template processing by moving code into classes it better belongs to - optimization restructure config file processing 31.12.2014 - bugfix use function_exists('mb_get_info') for setting Smarty::$_MBSTRING. Function mb_split could be overloaded depending on php.ini mbstring.func_overload 29.12.2014 - new feature security can now limit the template nesting level by property $max_template_nesting see also NEW_FEATURES.txt (forum 25370) 29.12.2014 - new feature security can now disable special $smarty variables listed in property $disabled_special_smarty_vars see also NEW_FEATURES.txt (forum 25370) 27.12.2014 - bugfix clear internal _is_file_cache when plugins_dir was modified 13.12.2014 - improvement optimization of lexer and parser resulting in a up to 30% higher compiling speed 11.12.2014 - bugfix resolve parser ambiguity between constant print tag {CONST} and other smarty tags after change of 09.12.2014 09.12.2014 - bugfix variables $null, $true and $false did not work after the change of 12.11.2014 (forum 25342) - bugfix call of template function by a variable name did not work after latest changes (forum 25342) 23.11.2014 - bugfix a plugin with attached modifier could fail if the tag was immediately followed by another Smarty tag (since 3.1.21) (forum 25326) 13.11.2014 - improvement move autoload code into Autoloader.php. Use Composer autoloader when possible 12.11.2014 - new feature added support of namespaces to template code 08.11.2014 - 10.11.2014 - bugfix subtemplate called in nocache mode could be called with wrong compile_id when it did change on one of the calling templates - improvement add code of template functions called in nocache mode dynamically to cache file (related to bugfix of 01.11.2014) - bugfix Debug Console did not include all data from merged compiled subtemplates 04.11.2014 - new feature $smarty->debugging = true; => overwrite existing Debug Console window (old behaviour) $smarty->debugging = 2; => individual Debug Console window by template name 03.11.2014 - bugfix Debug Console did not show included subtemplates since 3.1.17 (forum 25301) - bugfix Modifier debug_print_var did not limit recursion or prevent recursive object display at Debug Console (ATTENTION: parameter order has changed to be able to specify maximum recursion) - bugfix Debug consol did not include subtemplate information with $smarty->merge_compiled_includes = true - improvement The template variables are no longer displayed as objects on the Debug Console - improvement $smarty->createData($parent = null, $name = null) new optional name parameter for display at Debug Console - addition of some hooks for future extension of Debug Console 01.11.2014 - bugfix and enhancement on subtemplate {include} and template {function} tags. * Calling a template which has a nocache section could fail if it was called from a cached and a not cached subtemplate. * Calling the same subtemplate cached and not cached with the $smarty->merge_compiled_includes enabled could cause problems * Many smaller related changes 30.10.2014 - bugfix access to class constant by object like {$object::CONST} or variable class name {$class::CONST} did not work (forum 25301) 26.10.2014 - bugfix E_NOTICE message was created during compilation when ASP tags '<%' or '%>' are in template source text - bugfix merge_compiled_includes option failed when caching enables and same subtemplate was included cached and not cached ===== 3.1.21 ===== (18.10.2014) 18.10.2014 - composer moved to github 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 "