===== SVN trunk  =====
===== Smarty 3.0.8  =====
29/05/2011
- bugfix <?xml ...> in templates did break "cache modified check"

14/05/2011
- bugfix error handling at stream resources

13/05/2011
- bugfix condition starting with "-" did fail at {if} and {while} tags

22/04/2011
- bugfix allow only fixed string as file attribute at {extends} tag
- workaround for PHP 5.2.13 bug in method_exists()

01/04/2011
- bugfix do not run filters and default modifier when displaying the debug template
- bugfix of embedded double quotes within multi line strings (""")

29/03/2011
- bugfix on error message in smarty_internal_compile_block.php
- bugfix mb handling in strip modifier
- bugfix for Smarty2 style registered compiler function on unnamed attribute passing like {tag $foo $bar}

17/03/2011
- bugfix on default {function} parameters when {function} was used in nocache sections
- bugfix on compiler object destruction. compiler_object property was by mistake unset.

09/03/2011
-bugfix a variable filter should run before modifers on an output tag (see change of 23/07/2010)

08/03/2011
- bugfix loading config file without section should load only defaults

03/03/2011
- bugfix "smarty" template variable was not recreated when cached templated had expired
- bugfix internal rendered_content must be cleared after subtemplate was included

01/03/2011
- bugfix replace modifier did not work in 3.0.7 on systems without multibyte support
- bugfix {$smarty.template} could return in 3.0.7 parent template name instead of 
         child name when it needed to compile

25/02/2011
- bugfix for Smarty2 style compiler plugins on unnamed attribute passing like {tag $foo $bar}

24/02/2011
- bugfix $smarty->clearCache('some.tpl') did by mistake cache the template object

18/02/2011
- bugfix removed possible race condition when isCached() was called for an individually cached subtemplate
- bugfix force default debug.tpl to be loaded by the file resource when default_resource_type was modified

17/02/2011
-improvement not to delete files starting with '.' from cache and template_c folders on clearCompiledTemplate() and clearCache()

16/02/2011
-fixed typo in exception message of Smarty_Internal_Template
-improvement allow leading spaces on } tag closing if auto_literal is enabled

13/02/2011
- bugfix replace $smarty->triggerError() by exception in smarty_internal_resource_extends.php
- removed obsolete {popup_init..} plugin from demo templates

===== Smarty 3.0.7  =====
09/02/2011
- patched vulnerability when using {$smarty.template}

01/02/2011
- removed assert() from config and template parser

31/01/2011
- bugfix the lexer/parser did fail on special characters like VT

16/01/2011
-bugfix of ArrayAccess object handling in internal _count() method
-bugfix of Iterator object handling in internal _count() method

14/01/2011
-bugfix removed memory leak while processing compileAllTemplates

12/01/2011
- bugfix in {if} and {while} tag compiler when using assignments as condition and nocache mode

10/01/2011
- bugfix when using {$smarty.block.child} and name of {block} was in double quoted string
- bugfix updateParentVariables() was called twice when leaving {include} processing

- bugfix mb_str_replace in replace and escape modifiers work with utf8

31/12/2010
- bugfix dynamic configuration of $debugging_crtl did not work
- bugfix default value of $config_read_hidden changed to false
- bugfix format of attribute array on compiler plugins
- bugfix getTemplateVars() could return value from wrong scope

28/12/2010
- bugfix multiple {append} tags failed to compile.

22/12/2010
- update do not clone the Smarty object an internal createTemplate() calls to increase performance

21/12/2010
- update html_options to support class and id attrs

17/12/2010
- bugfix added missing support of $cache_attrs for registered plugins

15/12/2010
- bugfix assignment as condition in {while} did drop an E_NOTICE

14/12/2010
- bugfix when passing an array as default parameter at {function} tag

13/12/2010
- bugfix {$smarty.template} in child template did not return right content
- bugfix Smarty3 did not search the PHP include_path for template files

===== Smarty 3.0.6  =====

12/12/2010
- bugfix fixed typo regarding yesterdays change to allow streamWrapper

11/12/2010
- bugfix nested block tags in template inheritance child templates did not work correctly
- bugfix {$smarty.current_dir} in child template did not point to dir of child template
- bugfix changed code when writing temporary compiled files to allow stream_wrapper

06/12/2010
- bugfix getTemplateVars() should return 'null' instead dropping E_NOTICE on an unassigned variable

05/12/2010
- bugfix missing declaration of $smarty in Smarty class
- bugfix empty($foo) in {if} did drop a notice when $foo was not assigned

01/12/2010
- improvement of {debug} tag output

27/11/2010
-change run output filter before cache file is written. (same as in Smarty2)

24/11/2011
-bugfix on parser at  !$foo|modifier
-change parser logic when assignments used as condition in {if] and {while} to allow assign to array element

23/11/2011
-bugfix allow integer as attribute name in plugin calls
-change  trimm whitespace from error message, removed long list of expected tokens

22/11/2010
- bugfix on template inheritance when an {extends} tag was inserted by a prefilter
- added error message for illegal variable file attributes at {extends...} tags

===== Smarty 3.0.5  =====


19/11/2010
- bugfix on block plugins with modifiers

18/11/2010
- change on handling of unassigned template variable -- default will drop E_NOTICE
- bugfix on Smarty2 wrapper load_filter() did not work

17/11/2010
- bugfix on {call} with variable function name
- bugfix on {block} if name did contain '-'
- bugfix in function.fetch.php , referece to undefined $smarty

16/11/2010
- bugfix whitespace in front of "<?php" in smarty_internal_compile_private_block_plugin.php
- bugfix {$smarty.now} did compile incorrectly
- bugfix on reset(),end(),next(),prev(),current() within templates
- bugfix on default parameter for {function}

15/11/2010
- bugfix when using {$smarty.session} as object
- bugfix scoping problem on $smarty object passed to filters
- bugfix captured content could not be accessed globally
- bugfix Smarty2 wrapper functions could not be call from within plugins

===== Smarty 3.0.4  =====

14/11/2010
- bugfix isset() did not allow multiple parameter
- improvment of some error messages
- bugfix html_image did use removed property $request_use_auto_globals
- small performace patch in Smarty class

13/11/2010
- bugfix  overloading problem when $smarty->fetch()/display() have been used in plugins
				(introduced with 3.0.2)
- code cleanup
								
===== Smarty 3.0.3  =====

13/11/2010
- bugfix on {debug}
- reverted location of loadPlugin() to Smarty class
- fixed comments in plugins
- fixed internal_config (removed unwanted code line)
- improvement  remove last linebreak from {function} definition

===== Smarty 3.0.2  =====

12/11/2010
- reactivated $error_reporting property handling
- fixed typo in compile_continue
- fixed security in {fetch} plugin
- changed back plugin parameters to two. second is template object 
  with transparent access to Smarty object
- fixed {config_load} scoping form compile time to run time

===== Smarty 3.0.0  =====



11/11/2010
- major update including some API changes

10/11/2010
- observe compile_id also for config files

09/11/2010
-bugfix on  complex expressions as start value for {for} tag
request_use_auto_globals
04/11/2010
- bugfix do not allow access of dynamic and private object members of assigned objects when
  security is enabled.

01/11/2010
- bugfix related to E_NOTICE change.  {if empty($foo)} did fail when $foo contained a string 

28/10/2010
- bugfix on compiling modifiers within $smarty special vars like {$smarty.post.{$foo|lower}}

27/10/2010
- bugfix default parameter values did not work for template functions included with {include}

25/10/2010
- bugfix for E_NOTICE change, array elements did not work as modifier parameter

20/10/2010
- bugfix for the E_NOTICE change

19/10/2010
- change Smarty does no longer mask out E_NOTICE by default during template processing

13/10/2010
- bugfix removed ambiguity between ternary and stream variable in template syntax
- bugfix use caching properties of template instead of smarty object when compiling child {block}
- bugfix {*block}...{/block*} did throw an exception in template inheritance
- bugfix on template inheritance using nested eval or string resource in {extends} tags
- bugfix on output buffer handling in isCached() method

=====  RC4 =====

01/10/2010
- added {break} and {continue} tags for flow control of {foreach},{section},{for} and {while} loops
- change of 'string' resource. It's no longer evaluated and compiled files are now stored
- new 'eval' resource which evaluates a template without saving the compiled file
- change in isCached() method to allow multiple calls for the same template

25/09/2010
- bugfix on some compiling modifiers

24/09/2010
- bugfix merge_compiled_includes flag was not restored correctly in {block} tag

22/09/2010
- bugfix on default modifier

18/09/2010
- bugfix untility compileAllConfig() did not create sha1 code for compiled template file names if template_dir was defined with no trailing DS
- bugfix on templateExists() for extends resource

17/09/2010
- bugfix {$smarty.template} and {$smarty.current_dir} did not compile correctly within {block} tags
- bugfix corrected error message on missing template files in extends resource
- bugfix untility compileAllTemplates() did not create sha1 code for compiled template file names if template_dir was defined with no trailing DS

16/09/2010
- bugfix when a doublequoted modifier parameter did contain Smarty tags and ':'

15/09/2010
- bugfix resolving conflict between '<%'/'%>' as custom Smarty delimiter and ASP tags
- use ucfirst for resource name on internal resource class names

12/09/2010
- bugfix for change of 08/09/2010 (final {block} tags in subtemplates did not produce correct results)

10/09/2010
- bugfix for change of 08/09/2010 (final {block} tags in subtemplates did not produce correct results)

08/09/2010
- allow multiple template inheritance branches starting in subtemplates

07/09/2010
- bugfix {counter} and {cycle} plugin assigned result to smarty variable not in local(template) scope
- bugfix templates containing just {strip} {/strip} tags did produce an error


23/08/2010
- fixed E_STRICT errors for uninitialized variables

22/08/2010
- added attribute cache_id to {include} tag

13/08/2010
- remove exception_handler property from Smarty class
- added Smarty's own exceptions SmartyException and SmartyCompilerException

09/08/2010
- bugfix on modifier with doublequoted strings as parameter containing embedded tags

06/08/2010
- bugfix when cascading some modifier like |strip|strip_tags modifier

05/08/2010
- added plugin type modifiercompiler to produce compiled modifier code
- changed standard modifier plugins to the compiling versions whenever possible
- bugfix in nocache sections {include} must not cache the subtemplate

02/08/2010
- bugfix strip did not work correctly in conjunction with comment lines

31/07/2010
- bugfix on nocache attribute at {assign} and {append}

30/07/2010
- bugfix passing scope attributes in doublequoted strings did not work at {include} {assign} and {append}

25/07/2010
- another bugfix of change from 23/07/2010 when compiling modifer

24/07/2010
- bugfix of change from 23/07/2010 when compiling modifer

23/07/2010
- changed execution order. A variable filter does now run before modifiers on output of variables
- bugfix use always { and } as delimiter for debug.tpl


22/07/2010
- bugfix in templateExists() methode

20/07/2010
- fixed handling of { strip } tag with whitespaces

15/07/2010
- bufix  {$smarty.template} does include now the relative path, not just filename

=====  RC3 =====




15/07/2010
- make the date_format modifier work also on objects of the DateTime class
- implementation of parsetrees in the parser to close security holes and remove unwanted empty line in HTML output

08/07/2010
- bugfix on assigning multidimensional arrays within templates
- corrected bugfix for truncate modifier

07/07/2010
- bugfix the truncate modifier needs to check if the string is utf-8 encoded or not
- bugfix support of script files relative to trusted_dir

06/07/2010
- create exception on recursive {extends} calls
- fixed reported line number at "unexpected closing tag " exception
- bugfix on escape:'mail' modifier
- drop exception if 'item' variable is equal 'from' variable in {foreach} tag

01/07/2010
- removed call_user_func_array calls for optimization of compiled code when using registered modifiers and plugins

25/06/2010
- bugfix escaping " when block tags are used within doublequoted strings

24/06/2010
- replace internal get_time() calls with standard PHP5 microtime(true) calls in Smarty_Internal_Utility
- added $smarty->register->templateClass() and $smarty->unregister->templateClass() methods for supporting static classes with namespace


22/06/2010
- allow spaces between typecast and value in template syntax
- bugfix get correct count of traversables in {foreach} tag

21/06/2010
- removed use of PHP shortags SMARTY_PHP_PASSTHRU mode
- improved speed of cache->clear() when a compile_id was specified and use_sub_dirs is true 

20/06/2010
- replace internal get_time() calls with standard PHP5 microtime(true) calls
- closed security hole when php.ini asp_tags = on

18/06/2010
- added __toString method to the Smarty_Variable class


14/06/2010
- make handling of Smarty comments followed by newline BC to Smarty2


=====  RC2 =====



13/06/2010
- bugfix Smarty3 did not handle hexadecimals like 0x0F as numerical value
- bugifx Smarty3 did not accept numerical constants like .1 or 2. (without a leading or trailing digit)

11/06/2010
- bugfix the lexer did fail on larger {literal} ... {/literal} sections

03/06/2010
- bugfix on calling template functions like Smarty tags

01/06/2010
- bugfix on template functions used with template inheritance
- removed /* vim: set expandtab: */ comments
- bugfix of auto literal problem introduce with fix of 31/05/2010

31/05/2010
- bugfix the parser did not allow some smarty variables with special name like $for, $if, $else and others.

27/05/2010
- bugfix on object chaining using variable properties
- make scope of {counter} and {cycle} tags again global as in Smarty2

26/05/2010
- bugfix removed decrepated register_resource call in smarty_internal_template.php

25/05/2010
- rewrite of template function handling to improve speed
- bugfix on file dependency when merge_compiled_includes = true


16/05/2010
- bugfix when passing parameter with numeric name like {foo 1='bar' 2='blar'}

14/05/2010
- bugfix compile new config files if compile_check and force_compile = false
- added variable static classes names to template syntax

11/05/2010
- bugfix  make sure that the cache resource is loaded in all conditions when template methods getCached... are called externally
- reverted the change 0f 30/04/2010. With the exception of forward references template functions can be again called by a standard tag.

10/05/2010
- bugfix on {foreach} and {for} optimizations of 27/04/2010 

09/05/2010
- update of template and config file parser because of minor parser generator bugs 

07/05/2010
- bugfix on {insert} 

06/05/2010
- bugfix when merging compiled templates and objects are passed as parameter of the {include} tag

05/05/2010
- bugfix on {insert} to cache parameter
- implementation of $smarty->default_modifiers as in Smarty2
- bugfix on getTemplateVars method 

01/05/2010
- bugfix on handling of variable method names at object chaning

30/04/2010
- bugfix when comparing timestamps in sysplugins/smarty_internal_config.php
- work around of a substr_compare bug in older PHP5 versions
- bugfix on template inheritance for tag names starting with "block"
- bugfix on {function} tag with name attribute in doublequoted strings
- fix to make calling of template functions unambiguously by madatory usage of the {call} tag

=====  RC1 =====

27/04/2010
- change default of $debugging_ctrl to 'NONE'
- optimization of compiled code of {foreach} and {for} loops
- change of compiler for config variables

27/04/2010
- bugfix in $smarty->cache->clear() method. (do not cache template object)


17/04/2010
- security fix in {math} plugin


12/04/2010
- bugfix in smarty_internal_templatecompilerbase (overloaded property)
- removed parser restrictions in using true,false and null as ID

07/04/2010
- bugfix typo in smarty_internal_templatecompilerbase 

31/03/2010
- compile locking by touching old compiled files to avoid concurrent compilations

29/03/2010
- bugfix allow array definitions as modifier parameter
- bugfix observe compile_check property when loading config files
- added the template object as third filter parameter

25/03/2010
- change of utility->compileAllTemplates() log messages
- bugfix on nocache code in {function} tags 
- new method utility->compileAllConfig() to compile all config files

24/03/2010
- bugfix on register->modifier() error messages

23/03/2010
- bugfix on template inheritance when calling multiple child/parent relations
- bugfix on caching mode SMARTY_CACHING_LIFETIME_SAVED and cache_lifetime = 0

22/03/2010
- bugfix make directory separator operating system independend in compileAllTemplates()

21/03/2010
- removed unused code in compileAllTemplates()

19/03/2010
- bugfix for multiple {/block} tags on same line

17/03/2010
- bugfix make $smarty->cache->clear() function independent from caching status

16/03/2010
- bugfix on assign attribute at registered template objects
- make handling of modifiers on expression BC to Smarty2
 
15/03/2010
- bugfix on block plugin calls

11/03/2010
- changed parsing of <?php and ?> back to Smarty2 behaviour

08/03/2010
- bugfix on uninitialized properties in smarty_internal_template
- bugfix on $smarty->disableSecurity()

04/03/2010
- bugfix allow uppercase chars in registered resource names
- bugfix on accessing chained objects of static classes

01/03/2010
- bugfix on nocache code in {block} tags if child template was included by {include}

27/02/2010
- allow block tags inside double quoted string 

26/02/2010
- cache modified check implemented
- support of access to a class constant from an object (since PHP 5.3)

24/02/2010
- bugfix on expressions in doublequoted string enclosed in backticks
- added security property $static_classes for static class security

18/02/2010
- bugfix on parsing Smarty tags inside <?xml ... ?>
- bugfix on truncate modifier

17/02/2010
- removed restriction that modifiers did require surrounding parenthesis in some cases
- added {$smarty.block.child} special variable for template inheritance

16/02/2010
- bugfix on <?xml ... ?> tags for all php_handling modes
- bugfix on parameter of variablefilter.htmlspecialchars.php plugin

14/02/2010
- added missing _plugins property in smarty.class.php
- bugfix $smarty.const... inside doublequoted strings and backticks was compiled into wrong PHP code

12/02/2010
- bugfix on nested {block} tags
- changed Smarty special variable $smarty.parent to $smarty.block.parent
- added support of nested {bock} tags

10/02/2010
- avoid possible notice on $smarty->cache->clear(...), $smarty->clear_cache(....)
- allow Smarty tags inside <? ... ?> tags in SMARTY_PHP_QUOTE and SMARTY_PHP_PASSTHRU mode
- bugfix at new "for" syntax like {for $x=1 to 10 step 2}

09/02/2010
- added $smarty->_tag_stack for tracing block tag hierarchy

08/02/2010
- bugfix  use template fullpath at §smarty->cache->clear(...), $smarty->clear_cache(....)
- bugfix of cache filename on extended templates when force_compile=true

07/02/2010
- bugfix on changes of 05/02/2010
- preserve line endings type form template source
- API changes (see README file)

05/02/2010
- bugfix on modifier and block plugins with same name

02/02/2010
- retaining newlines at registered functions and function plugins

01/25/2010
- bugfix cache resource was not loaded when caching was globally off but enabled at a template object
- added test that $_SERVER['SCRIPT_NAME'] does exist in Smarty.class.php

01/22/2010
- new method $smarty->createData([$parent]) for creating a data object (required for bugfixes below)
- bugfix config_load() method now works also on a data object
- bugfix get_config_vars() method now works also on a data and template objects
- bugfix clear_config() method now works also on a data and template objects

01/19/2010
- bugfix on plugins if same plugin was called from a nocache section first and later from a cached section


###beta 7###


01/17/2010
- bugfix on $smarty.const... in double quoted strings

01/16/2010
- internal change of config file lexer/parser on handling of section names
- bugfix on registered objects (format parameter of register_object was not handled correctly)

01/14/2010
- bugfix on backslash within single quoted strings
- bugfix allow absolute filepath for config files
- bugfix on special Smarty variable $smarty.cookies
- revert handling of newline on no output tags like {if...} 
- allow special characters in config file section names for Smarty2 BC

01/13/2010
- bugfix on {if} tags 

01/12/2010
- changed back modifer handling in parser. Some restrictions still apply:
    if modifiers are used in side {if...} expression or in mathematical expressions 
    parentheses must be used.
- bugfix the {function..} tag did not accept the name attribute in double quotes
- closed possible security hole at <?php ... ?> tags
- bugfix of config file parser on large config files


###beta 6####

01/11/2010
- added \n to the compiled code of the {if},{else},{elseif},{/if} tags to get output of newlines as expected by the template source
- added missing support of insert plugins
- added optional nocache attribute to {block} tags in parent template
- updated <?php...?> handling supporting now heredocs and newdocs. (thanks to Thue Jnaus Kristensen)

01/09/2010
- bugfix on nocache {block} tags in parent templates

01/08/2010
- bugfix on variable filters. filter/nofilter attributes did not work on output statements

01/07/2010
- bugfix on file dependency at template inheritance
- bugfix on nocache code at template inheritance

01/06/2010
- fixed typo in smarty_internal_resource_registered
- bugfix for custom delimiter at extends resource and {extends} tag

01/05/2010
- bugfix sha1() calculations at extends resource and some general improvments on sha1() handling 


01/03/2010
- internal change on building cache files

01/02/2010
- update cached_timestamp at the template object after cache file is written to avoid possible side effects
- use internally always SMARTY_CACHING_LIFETIME_* constants

01/01/2010
- bugfix for obtaining plugins which must be included (related to change of 12/30/2009)
- bugfix for {php} tag (trow an exception if allow_php_tag = false)

12/31/2009
- optimization of generated code for doublequoted strings containing variables
- rewrite of {function} tag handling
  - can now be declared in an external subtemplate
  - can contain nocache sections (nocache_hash handling)
  - can be called in noccache sections (nocache_hash handling)
  - new {call..} tag to call template functions with a variable name {call name=$foo}
- fixed nocache_hash handling in merged compiled templates

12/30/2009
- bugfix for plugins defined in the script as smarty_function_foo

12/29/2009
- use sha1() for filepath encoding
- updates on nocache_hash handling
- internal change on merging some data
- fixed cache filename for custom resources 

12/28/2009
- update for security fixes
- make modifier plugins always trusted
- fixed bug loading modifiers in child template at template inheritance

12/27/2009
--- this is a major update with a couple of internal changes ---
- new config file lexer/parser (thanks to Thue Jnaus Kristensen)
- template lexer/parser fixes for PHP and {literal} handing (thanks to Thue Jnaus Kristensen)
- fix on registered plugins with different type but same name
- rewrite of plugin handling (optimized execution speed)
- closed a security hole regarding PHP code injection into cache files
- fixed bug in clear cache handling
- Renamed a couple of internal classes
- code cleanup for merging compiled templates
- couple of runtime optimizations (still not all done)
- update of getCachedTimestamp()
- fixed bug on modifier plugins at nocache output

12/19/2009
- bugfix on comment lines in config files

12/17/2009
- bugfix of parent/global variable update at included/merged subtemplates
- encode final template filepath into filename of compiled and cached files
- fixed {strip} handling in auto literals

12/16/2009
- update of changelog
- added {include file='foo.tpl' inline}  inline option to merge compiled code of subtemplate into the calling template

12/14/2009
- fixed sideefect of last modification (objects in array index did not work anymore)

12/13/2009
- allow boolean negation ("!") as operator on variables outside {if} tag

12/12/2009
- bugfix on single quotes inside {function} tag
- fix short append/prepend attributes in {block} tags

12/11/2009
- bugfix on clear_compiled_tpl (avoid possible warning)

12/10/2009
- bugfix on {function} tags and template inheritance

12/05/2009
- fixed problem when a cached file was fetched several times
- removed unneeded lexer code

12/04/2009
- added max attribute to for loop
- added security mode allow_super_globals

12/03/2009
- template inheritance: child templates can now call functions defined by the {function} tag in the parent template
- added {for $foo = 1 to 5 step 2}  syntax
- bugfix for {$foo.$x.$y.$z}

12/01/2009
- fixed parsing of names of special formated tags like if,elseif,while,for,foreach
- removed direct access to constants in templates because of some syntax problems
- removed cache resource plugin for mysql from the distribution
- replaced most hard errors (exceptions) by softerrors(trigger_error) in plugins
- use $template_class property for template class name when compiling {include},{eval} and {extends} tags

11/30/2009
- map 'true' to SMARTY_CACHING_LIFETIME_CURRENT for the $smarty->caching parameter
- allow {function} tags within {block} tags

11/28/2009
- ignore compile_id at debug template
- added direct access to constants in templates
- some lexer/parser optimizations

11/27/2009
- added cache resource MYSQL plugin

11/26/2009
- bugfix on nested doublequoted strings
- correct line number on unknown tag error message
- changed {include} compiled code
- fix on checking dynamic varibales with error_unassigned = true

11/25/2009
- allow the following writing for boolean: true, TRUE, True, false, FALSE, False
- {strip} tag functionality rewritten

11/24/2009
- bugfix for $smarty->config_overwrite = false

11/23/2009
- suppress warnings on unlink caused by race conditions
- correct line number on unknown tag error message

------- beta 5
11/23/2009
- fixed configfile parser for text starting with a numeric char
- the default_template_handler_func may now return a filepath to a template source

11/20/2009
- bugfix for empty config files
- convert timestamps of registered resources to integer

11/19/2009
- compiled templates are no longer touched with the filemtime of template source

11/18/2009
- allow integer as attribute name in plugin calls

------- beta 4
11/18/2009
- observe umask settings when setting file permissions
- avoide unneeded cache file creation for subtemplates which did occur in some situations
- make $smarty->_current_file available during compilation for Smarty2 BC

11/17/2009
- sanitize compile_id and cache_id (replace illegal chars with _)
- use _dir_perms and _file_perms properties at file creation
- new constant SMARTY_RESOURCE_DATE_FORMAT (default '%b %e, %Y') which is used as default format in modifier date_format
- added {foreach $array as $key=>$value} syntax
- renamed extend tag and resource to extends: {extends file='foo.tol'} , $smarty->display('extends:foo.tpl|bar.tpl);
- bugfix cycle plugin

11/15/2009
- lexer/parser optimizations on quoted strings

11/14/2009
- bugfix on merging compiled templates when source files got removed or renamed.
- bugfix modifiers on registered object tags
- fixed locaion where outputfilters are running
- fixed config file definitions at EOF
- fix on merging compiled templates with nocache sections in nocache includes
- parser could run into a PHP error on wrong file attribute

11/12/2009
- fixed variable filenames in {include_php} and {insert}
- added scope to Smarty variables in the {block} tag compiler
- fix on nocache code in child {block} tags

11/11/2009
- fixed {foreachelse}, {forelse}, {sectionelse} compiled code at nocache variables
- removed checking for reserved variables
- changed debugging handling

11/10/2009
- fixed preg_qoute on delimiters

11/09/2009
- lexer/parser bugfix 
- new SMARTY_SPL_AUTOLOAD constant to control the autoloader option
- bugfix for {function} block tags in included templates

11/08/2009
- fixed alphanumeric array index 
- bugfix on complex double quoted strings

11/05/2009
- config_load method can now be called on data and template objects

11/04/2009
- added typecasting support for template variables
- bugfix on complex indexed special Smarty variables

11/03/2009
- fixed parser error on objects with special smarty vars
- fixed file dependency for {incude} inside {block} tag
- fixed not compiling on non existing compiled templates when compile_check = false
- renamed function names of autoloaded Smarty methods to Smarty_Method_....
- new security_class property (default is Smarty_Security)

11/02/2009
- added neq,lte,gte,mod as aliases to if conditions 
- throw exception on illegal Smarty() constructor calls

10/31/2009
- change of filenames in sysplugins folder for internal spl_autoload function
- lexer/parser changed for increased compilation speed

10/27/2009
- fixed missing quotes in include_php.php

10/27/2009
- fixed typo in method.register_resource
- pass {} through as literal

10/26/2009
- merge only compiled subtemplates into the compiled code of the main template

10/24/2009
- fixed nocache vars at internal block tags
- fixed merging of recursive includes

10/23/2009
- fixed nocache var problem

10/22/2009
- fix trimwhitespace outputfilter parameter

10/21/2009
- added {$foo++}{$foo--} syntax
- buxfix changed PHP "if (..):" to "if (..){" because of possible bad code when concenating PHP tags
- autoload Smarty internal classes
- fixed file dependency for config files 
- some code optimizations
- fixed function definitions on some autoloaded methodes
- fixed nocache variable inside if condition of {if} tag

10/20/2009
- check at compile time for variable filter to improve rendering speed if no filter is used
- fixed bug at combination of {elseif} tag and {...} in double quoted strings of static class parameter

10/19/2009
- fixed compiled template merging on variable double quoted strings as name
- fixed bug in caching mode 2 and cache_lifetime -1 
- fixed modifier support on block tags

10/17/2009
- remove ?>\n<?php and ?><?php sequences from compiled template

10/15/2009
- buxfix on assigning array elements inside templates
- parser bugfix on array access

10/15/2009
- allow bit operator '&' inside {if} tag
- implementation of ternary operator

10/13/2009
- do not recompile evaluated templates if reused just with other data
- recompile config files when config properties did change
- some lexer/parser otimizations

10/11/2009
- allow {block} tags inside included templates
- bugfix for resource plugins in Smarty2 format
- some optimizations of internal.template.php

10/11/2009
- fixed bug when template with same name is used with different data objects
- fixed bug with double quoted name attribute at {insert} tag
- reenabled assign_by_ref and append_by_ref methodes

10/07/2009
- removed block nesting checks for {capture}

10/05/2009
- added support of "isinstance" to {if} tag

10/03/2009
- internal changes to improve performance
- fix registering of filters for classes

10/01/2009
- removed default timezone setting
- reactivated PHP resource for simple PHP templates. Must set allow_php_templates = true to enable
- {PHP} tag can be enabled by allow_php_tag = true

09/30/2009
- fixed handling template_exits methode for all resource types
- bugfix for other cache resources than file
- the methodes assign_by_ref is now wrapped to assign, append_by_ref to append
- allow arrays of variables pass in display, fetch and createTemplate calls
  $data = array('foo'=>'bar','foo2'=>'blar');
  $smarty->display('my.tpl',$data);

09/29/2009
- changed {php} tag handling
- removed support of Smarty::instance()
- removed support of PHP resource type
- improved execution speed of {foreach} tags
- fixed bug in {section} tag

09/23/2009
- improvements and bugfix on {include} tag handling
NOTICE: existing compiled template and cache files must be deleted

09/19/2009
- replace internal "eval()" calls by "include" during rendering process
- speed improvment for templates which have included subtemplates
    the compiled code of included templates is merged into the compiled code of the parent template
- added logical operator "xor" for {if} tag
- changed parameter ordering for Smarty2 BC
    fetch($template, $cache_id = null, $compile_id = null, $parent = null)
    display($template, $cache_id = null, $compile_id = null, $parent = null)
    createTemplate($template, $cache_id = null, $compile_id = null, $parent = null)
- property resource_char_set is now replaced by constant SMARTY_RESOURCE_CHAR_SET
- fixed handling of classes in registered blocks
- speed improvement of lexer on text sections

09/01/2009
- dropped nl2br as plugin
- added '<>' as comparission operator in {if} tags
- cached caching_lifetime property to cache_liftime for backward compatibility with Smarty2.
  {include} optional attribute is also now cache_lifetime
- fixed trigger_error methode (moved into Smarty class)
- version is now  Beta!!!


08/30/2009
- some speed optimizations on loading internal plugins


08/29/2009
- implemented caching of registered Resources
- new property 'auto_literal'. if true(default)  '{ ' and ' }' interpreted as literal, not as Smarty delimiter


08/28/2009
- Fix on line breaks inside {if} tags

08/26/2009
- implemented registered resources as in Smarty2. NOTE: caching does not work yet
- new property 'force_cache'. if true it forces the creation of a new cache file
- fixed modifiers on arrays
- some speed optimization on loading internal classes


08/24/2009
- fixed typo in lexer definition for '!==' operator
- bugfix - the ouput of plugins was not cached
- added global variable SCRIPT_NAME

08/21/2009
- fixed problems whitespace in conjuction with custom delimiters
- Smarty tags can now be used as value anywhere

08/18/2009
- definition of template class name moded in internal.templatebase.php
- whitespace parser changes

08/12/2009
- fixed parser problems

08/11/2009
- fixed parser problems with custom delimiter

08/10/2009
- update of mb support in plugins


08/09/2009
- fixed problems with doublequoted strings at name attribute of {block} tag
- bugfix at scope attribute of {append} tag

08/08/2009
- removed all internal calls of Smarty::instance()
- fixed code in double quoted strings

08/05/2009
- bugfix mb_string support
- bugfix of \n.\t etc in double quoted strings

07/29/2009
- added syntax for variable config vars  like  #$foo#

07/28/2009
- fixed parsing of $smarty.session vars containing objects

07/22/2009
- fix of "$" handling in double quoted strings

07/21/2009
- fix that {$smarty.current_dir} return correct value within {block} tags.

07/20/2009
- drop error message on unmatched {block} {/block} pairs

07/01/2009
- fixed smarty_function_html_options call in plugin function.html_select_date.php (missing ,)

06/24/2009
- fixed smarty_function_html_options call in plugin function.html_select_date.php

06/22/2009
- fix on \n and spaces inside smarty tags
- removed request_use_auto_globals propert as it is no longer needed because Smarty 3 will always run under PHP 5


06/18/2009
- fixed compilation of block plugins when caching enabled
- added $smarty.current_dir  which returns the current working directory

06/14/2009
- fixed array access on super globals
- allow smarty tags within xml tags

06/13/2009
- bugfix at extend resource: create unique files for compiled template and cache for each combination of template files
- update extend resource to handle appen and prepend block attributes
- instantiate classes of plugins instead of calling them static

06/03/2009
- fixed repeat at block plugins

05/25/2009
- fixed problem with caching of compiler plugins

05/14/2009
- fixed directory separator handling

05/09/2009
- syntax change for stream variables
- fixed bug when using absolute template filepath and caching

05/08/2009
- fixed bug of {nocache}  tag in included templates

05/06/2009
- allow that plugins_dir folder names can end without directory separator

05/05/2009
- fixed E_STRICT incompabilities
- {function} tag bug fix 
- security policy definitions have been moved from plugins folder to file Security.class.php in libs folder
- added allow_super_global configuration to security

04/30/2009
- functions defined with the {function} tag now always have global scope

04/29/2009
- fixed problem with directory setter methodes
- allow that cache_dir can end without directory separator

04/28/2009
- the {function} tag can no longer overwrite standard smarty tags
- inherit functions defined by the {fuction} tag into subtemplates
- added {while <statement>} sytax to while tag

04/26/2009
- added trusted stream checking to security
- internal changes at file dependency check for caching

04/24/2009
- changed name of {template} tag to {function}
- added new {template} tag

04/23/2009
- fixed access of special smarty variables from included template

04/22/2009
- unified template stream syntax with standard Smarty resource syntax  $smarty->display('mystream:mytemplate')

04/21/2009
- change of new style syntax for forach. Now:  {foreach $array as $var}  like in PHP

04/20/2009
- fixed "$foo.bar  ..." variable replacement in double quoted strings
- fixed error in {include} tag with variable file attribute

04/18/2009
- added stream resources  ($smarty->display('mystream://mytemplate'))
- added stream variables  {$mystream:myvar}

04/14/2009
- fixed compile_id handling on {include} tags
- fixed append/prepend attributes in {block} tag
- added  {if  'expression' is in 'array'}  syntax
- use crc32 as hash for compiled config files.

04/13/2009
- fixed scope problem with parent variables when appending variables within templates.
- fixed code for {block} without childs (possible sources for notice errors removed)

04/12/2009
- added append and prepend attribute to {block} tag

04/11/2009
- fixed variables in 'file' attribute of {extend} tag
- fixed problems in modifiers (if mb string functions not present)

04/10/2009
- check if mb string functions available otherwise fallback to normal string functions
- added global variable scope SMARTY_GLOBAL_SCOPE 
- enable 'variable' filter by default
- fixed {$smarty.block.parent.foo} 
- implementation of a 'variable' filter as replacement for default modifier

04/09/2009
- fixed execution of filters defined by classes
- compile the always the content of {block} tags to make shure that the filters are running over it
- syntax corrections on variable object property
- syntax corrections on array access in dot syntax

04/08/2009
- allow variable object property

04/07/2009
- changed variable scopes to SMARTY_LOCAL_SCOPE, SMARTY_PARENT_SCOPE, SMARTY_ROOT_SCOPE to avoid possible conflicts with user constants
- Smarty variable global attribute replaced with scope attribute

04/06/2009
- variable scopes LOCAL_SCOPE, PARENT_SCOPE, ROOT_SCOPE
- more getter/setter methodes

04/05/2009
- replaced new array looping syntax {for $foo in $array} with {foreach $foo in $array} to avoid confusion
- added append array for short form of assign  {$foo[]='bar'} and allow assignments to nested arrays {$foo['bla']['blue']='bar'}

04/04/2009
- make output of template default handlers cachable and save compiled source
- some fixes on yesterdays update

04/03/2006
- added registerDefaultTemplateHandler methode and functionallity
- added registerDefaultPluginHandler methode and functionallity
- added {append} tag to extend Smarty array variabled

04/02/2009
- added setter/getter methodes
- added $foo@first and $foo@last properties at {for} tag
- added $set_timezone (true/false) property to setup optionally the default time zone

03/31/2009
- bugfix smarty.class and internal.security_handler
- added compile_check configuration 
- added setter/getter methodes

03/30/2009
- added all major setter/getter methodes

03/28/2009
- {block} tags can be nested now
- md5 hash function replace with crc32 for speed optimization
- file order for exted resource inverted
- clear_compiled_tpl and clear_cache_all will not touch .svn folder any longer

03/27/2009
- added extend resource

03/26/2009
- fixed parser not to create error on `word` in double quoted strings
- allow PHP  array(...)
- implemented  $smarty.block.name.parent to access parent block content
- fixed smarty.class


03/23/2009
- fixed {foreachelse} and {forelse} tags

03/22/2009
- fixed possible sources for notice errors
- rearrange SVN into distribution and development folders

03/21/2009
- fixed exceptions in function plugins
- fixed notice error in Smarty.class.php
- allow chained objects to span multiple lines
- fixed error in modifers 

03/20/2009
- moved /plugins folder into /libs folder
- added noprint modifier
- autoappend a directory separator if the xxxxx_dir definition have no trailing one

03/19/2009
- allow array definition as modifer paramter
- changed modifier to use multi byte string funktions. 

03/17/2009
- bugfix 

03/15/2009
- added {include_php} tag for BC
- removed @ error suppression 
- bugfix fetch did always repeat output of first call when calling same template several times
- PHPunit tests extended

03/13/2009
- changed block syntax to be Smarty like  {block:titel} -> {block name=titel}
- compiling of {block} and {extend} tags rewriten for better performance
- added special Smarty variable block  ($smarty.block.foo} returns the parent definition of block foo
- optimization of {block} tag compiled code.
- fixed problem with escaped double quotes in double quoted strings

03/12/2009
- added support of template inheritance by {extend } and {block } tags.
- bugfix comments within literals
- added scope attribuie to {include} tag

03/10/2009
- couple of bugfixes and improvements
- PHPunit tests extended

03/09/2009
- added support for global template vars.  {assign_global...}  $smarty->assign_global(...)
- added direct_access_security
- PHPunit tests extended
- added missing {if} tag conditions like "is div by" etc.

03/08/2009
- splitted up the Compiler class to make it easier to use a coustom compiler
- made default plugins_dir relative to Smarty root and not current working directory
- some changes to make the lexer parser better configurable
- implemented {section} tag for Smarty2 BC

03/07/2009
- fixed problem with comment tags
- fixed problem with #xxxx in double quoted string
- new {while} tag implemented
- made lexer and paser class configurable as $smarty property
- Smarty method get_template_vars implemented
- Smarty method get_registered_object implemented
- Smarty method trigger_error implemented
- PHPunit tests extended

03/06/2009
- final changes on config variable handling
- parser change - unquoted strings will by be converted into single quoted strings
- PHPunit tests extended
- some code cleanup
- fixed problem on catenate strings with expression
- update of count_words modifier
- bugfix on comment tags


03/05/2009
- bugfix on <?xml...> tag with caching enabled
- changes on exception handling (by Monte)

03/04/2009
- added support for config variables
- bugfix on <?xml...> tag

03/02/2009
- fixed unqouted strings within modifier parameter
- bugfix parsing of mofifier parameter

03/01/2009
- modifier chaining works now as in Smarty2

02/28/2009
- changed handling of unqouted strings

02/26/2009
- bugfix
- changed $smarty.capture.foo to be global for Smarty2 BC.

02/24/2009
- bugfix {php} {/php} tags for backward compatibility
- bugfix for expressions on arrays
- fixed usage of "null" value
- added $smarty.foreach.foo.first and $smarty.foreach.foo.last

02/06/2009
- bugfix for request variables without index  for example $smarty.get
- experimental solution for variable functions in static class

02/05/2009
- update of popup plugin
- added config variables to template parser (load config functions still missing)
- parser bugfix for empty quoted strings

02/03/2009
- allow array of objects as static class variabales.
- use htmlentities at source output at template errors.

02/02/2009
- changed search order on modifiers to look at plugins folder first
- parser bug fix for modifier on array elements  $foo.bar|modifier
- parser bug fix on single quoted srings
- internal: splitted up compiler plugin files 

02/01/2009
- allow method chaining on static classes
- special Smarty variables  $smarty.... implemented
- added {PHP} {/PHP} tags for backward compatibility

01/31/2009
- added {math} plugin for Smarty2 BC
- added template_exists method
- changed Smarty3 method enable_security() to enableSecurity() to follow camelCase standards

01/30/2009
- bugfix in single quoted strings
- changed syntax for variable property access from $foo:property to $foo@property because of ambiguous syntax at modifiers

01/29/2009
- syntax for array definition changed from (1,2,3) to [1,2,3] to remove ambiguous syntax
- allow  {for $foo in [1,2,3]} syntax
- bugfix in double quoted strings
- allow <?xml...?> tags in template even if short_tags are enabled

01/28/2009
- fixed '!==' if condition.

01/28/2009
- added support of {strip} {/strip} tag.

01/27/2009
- bug fix on backticks in double quoted strings at objects

01/25/2009
- Smarty2 modfiers added to SVN

01/25/2009
- bugfix allow arrays at object properties in Smarty syntax
- the template object is now passed as additional parameter at plugin calls
- clear_compiled_tpl methode completed

01/20/2009
- access to class constants implemented  ( class::CONSTANT )
- access to static class variables implemented ( class::$variable )
- call of static class methodes implemented ( class::methode() )

01/16/2009
- reallow leading _ in variable names  {$_var}
- allow array of objects  {$array.index->methode()} syntax
- finished work on clear_cache and clear_cache_all methodes

01/11/2009
- added support of {literal} tag
- added support of {ldelim} and {rdelim} tags
- make code compatible to run with E_STRICT error setting

01/08/2009
- moved clear_assign and clear_all_assign to internal.templatebase.php
- added assign_by_ref, append and append_by_ref methodes

01/02/2009
- added load_filter methode
- fished work on filter handling
- optimization of plugin loading

12/30/2008
- added compiler support of registered object 
- added backtick support in doubled quoted strings for backward compatibility
- some minor bug fixes and improvments

12/23/2008
- fixed problem of not working "not" operator in if-expressions
- added handling of compiler function plugins
- finished work on (un)register_compiler_function methode
- finished work on (un)register_modifier methode
- plugin handling from plugins folder changed for modifier plugins
  deleted - internal.modifier.php
- added modifier chaining to parser 

12/17/2008
- finished (un)register_function methode
- finished (un)register_block methode
- added security checking for PHP functions in PHP templates
- plugin handling from plugins folder rewritten
  new - internal.plugin_handler.php
  deleted - internal.block.php
  deleted - internal.function.php
- removed plugin checking from security handler

12/16/2008

- new start of this change_log file
