diff --git a/BUGS b/BUGS
index 5c95e044..137a6a61 100644
--- a/BUGS
+++ b/BUGS
@@ -1,11 +1,17 @@
-There are no known bugs with Smarty, although there are some bugs in PHP that
-cause problems with Smarty. preg_replace() had a parameter added in 4.0.2 that
-is needed for Smarty. preg_grep() previous to 4.0.4 has a bug which Smarty has
-a built-in workaround for. PHP 4.0.4 has a bug with user callbacks which would
-cause this syntax in Smarty to crash PHP: {$varname|@modname} Use PHP 4.0.4pl1
-to fix this, or avoid using the "@" with modifiers. if you are passing variables
-to {include} statements, you will need PHP 4.0.4 or later, which requires the
-use of get_defined_vars() function. Some versions of Windows 2k have a problem
-with flock(). Comment out the flock() command in _write_file to get around this.
+There are some bugs in older versions of PHP that cause problems with Smarty.
+preg_replace() had a parameter added in 4.0.2 that is needed for Smarty.
+preg_grep() previous to 4.0.4 has a bug which Smarty has a built-in workaround
+for. PHP 4.0.4 has a bug with user callbacks which would cause this syntax in
+Smarty to crash PHP: {$varname|@modname} Use PHP 4.0.4pl1 to fix this, or avoid
+using the "@" with modifiers. if you are passing variables to {include}
+statements, you will need PHP 4.0.4 or later, which requires the use of
+get_defined_vars() function. Some versions of Windows 2k have a problem with
+flock(). Comment out the flock() command in _write_file to get around this.
To be absolutely safe, use 4.0.4pl or later with Smarty.
+
+Smarty versions previous to 2.0 require the PEAR libraries. Be sure to include
+the path to the PEAR libraries in your php include_path. Config_file.class.php
+uses the PEAR library for its error handling routines. PEAR comes with the PHP
+distribution. Unix users check /usr/local/lib/php, windows users check
+C:/php/pear.
diff --git a/FAQ b/FAQ
index 47b6b7c3..0a220325 100644
--- a/FAQ
+++ b/FAQ
@@ -72,18 +72,19 @@ A: Smarty reads the template files and creates PHP scripts from them. Once
know of their existance. (NOTE: you can turn off this compile checking step
in Smarty for increased performance.)
-Q: Why can't I just use APC (or Zend Cache)?
-A: You certainly can. Smarty's cache and these cache solutions have nothing in
- common. What APC does is caches compiled bytecode of your PHP scripts in
- shared memory or in a file. This speeds up server response and saves the
- compilation step. Smarty creates PHP scripts (which APC will cache nicely)
- and also has it's own internal caching mechanism for the output of the
- template contents. For example, if you have a template that requires several
- database queries, Smarty can cache this output, saving the need to call the
- database every time. APC cannot help you here. Smarty and APC (or Zend
- Cache) actually complement each other nicely. If performance is of the
- utmost importance, we would recommend using one of these with any PHP
- application, using Smarty or not.
+Q: Why can't I just use PHPA (http://php-accelerator.co.uk) or Zend Cache?
+A: You certainly can, and we highly recommend it! What PHPA does is caches
+ compiled bytecode of your PHP scripts in shared memory or in a file. This
+ speeds up server response and saves the compilation step. Smarty creates PHP
+ scripts, which PHPA will cache nicely. Now, Smarty's built-in cache is
+ something completely different. It caches the _output_ of the template
+ contents. For example, if you have a template that requires several database
+ queries, Smarty can cache this output, saving the need to call the database
+ every time. Smarty and PHPA (or Zend Cache) complement each other nicely. If
+ performance is of the utmost importance, we would recommend using one of
+ these with any PHP application, using Smarty or not. As you can see in the
+ benchmarks, Smartys performance _really_ excels in combination with a PHP
+ accelerator.
Q: Why does Smarty have a built in cache? Wouldn't it be better to handle this
in a separate class?
@@ -96,16 +97,12 @@ A: Smarty's caching functionality is tightly integrated with the template
depending on URL, cookies, etc.
Q: Is Smarty faster than ?
-A: It could be. One of the strengths of Smarty is that it does not need to
- parse the template files on every hit to the server. Version 1.3.1 has
- many noticable performance tune-ups, so your best bet is to try some
- benchmarks and compare for yourself.
-
- The above comparison assumes that you are not using Smarty's built-in
- ability to cache templates. If you are, that makes this comparison pretty
- unfair since Smarty will basically be displaying static content instead of
- generating templates, which will really speed things up especially for
- complicated tests.
+A: See the benchmark page for some performance comparisons. Smarty's approach
+ to templates is a bit different from some languages: it compiles templates
+ into PHP scripts instead of parsing them on each invocation. This usually
+ results in great performance gains, especially with complex templates.
+ Coupled with the built-in caching of Smarty templates, the performance is
+ outstanding.
Q: How can I be sure to get the best performance from Smarty?
A: Be sure you set $compile_check=false once your templates are initially
diff --git a/INSTALL b/INSTALL
index cfd94ee7..5a45d4b5 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,22 +1,24 @@
REQUIREMENTS:
Smarty requires PHP 4.0.4pl1 or later to fix all known problems Smarty has with
-PHP. Smarty was developed and tested with 4.0.4pl1. See the BUGS file for more
-info.
+PHP. Smarty was developed and tested with PHP versions >= 4.0.4pl1. See the
+BUGS file for more info.
INSTALLATION:
-* copy the Smarty.class.php, Smarty.addons.php, Smarty_Compile.class.php and
- Config_File.class.php scripts to a directory that is in your PHP include_path,
- or set the SMARTY_DIR constant and put your class files in this directory.
+* copy the Smarty.class.php, Smarty.addons.php, Smarty_Compile.class.php
+ Config_File.class.php scripts and the plugins directory to a directory that
+ is in your PHP include_path, or set the SMARTY_DIR constant and put your
+ class files in this directory.
-* create a "templates" directory, "configs" directory and a "templates_c"
- directory, be sure to set the appropriate directory settings in Smarty for
- them. If they are located in the same directory as your application, they
- shouldn't need to be modified. Be sure the "templates_c" directory is
- writable by your web server user (usually nobody). chown nobody:nobody
- templates_c; chmod 700 templates_c You can also chmod 777 this directory, but
- be aware of security issues for multi-user systems.
+* create a "templates", "configs", and a "templates_c" directory,
+ be sure to set the appropriate directory settings in Smarty for them. If they
+ are located in the same directory as your application, they shouldn't need to
+ be modified. Be sure the "templates_c" directory is writable by your web
+ server user (usually nobody). chown nobody:nobody templates_c; chmod 700
+ templates_c You can also chmod 777 this directory, but be aware of security
+ issues for multi-user systems. If you are using Smarty's built-in caching,
+ create a "cache" directory and also chown nobody:nobody.
* setup your php and template files. A good working example is included to get
you started. Also see the QUICKSTART guide for some more examples.
diff --git a/QUICKSTART b/QUICKSTART
index a65d3291..b52687ce 100644
--- a/QUICKSTART
+++ b/QUICKSTART
@@ -14,12 +14,12 @@ INSTALLATION
------------
Unpack the Smarty tarball. You will see four class files: Smarty.class.php,
-Smarty.addons.php, Smarty_Compiler.class.php and Config_File.class.php. You
-will need to have all four of these files somewhere in your PHP include path,
-so when you call require("Smarty.class.php") from within your application, it
-can find the class. Alternatively, you can set the SMARTY_DIR constant in your
-application, and Smarty will use that directory as the path to the Smarty
-class files. Be sure the path ends with a slash!
+Smarty.addons.php, Smarty_Compiler.class.php and Config_File.class.php and a
+"plugins" directory. You will need to have all four of these files somewhere in
+your PHP include path, so when you call require("Smarty.class.php") from within
+your application, it can find the class. Alternatively, you can set the
+SMARTY_DIR constant in your application, and Smarty will use that directory as
+the path to the Smarty class files. Be sure the path ends with a slash!
Now change directories somewhere inside of your web server document root. For
this guide, we'll create a directory under the document root named "Smarty",
diff --git a/README b/README
index ddfae0e4..37605312 100644
--- a/README
+++ b/README
@@ -2,7 +2,7 @@ NAME:
Smarty - the PHP compiling template engine
-VERSION: 1.5.2
+VERSION: 2.0
AUTHORS:
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index b39eb9c2..1535d41a 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -1,10 +1,34 @@
2.0
---
-This release removes PEAR dependency -- it was mainly a consequence of using
-Config_File class which was originally written with PEAR in mind but was
-never integrated into it.
+This release is a huge milestone for Smarty. Most notable new things are a
+plugin architecture, PEAR dependancies removed and optimizations that
+drastically improved the performance of Smarty in most cases.
+The plugin architecture allows modifiers, custom functions, compiler functions,
+prefilters, postfilters, resources an insert functions all to be added by
+simply dropping a file into the plugins directory. Once dropped in, they are
+automatically registered by the template engine. This makes user-contributed
+plugins easy to manage, as well as the internal workings of Smarty easy to
+control and customize. This new architecture depends on the __FILE__ constant,
+which contains the full path to the executing script. Some older versions of
+PHP incorrectly gave the script name and not the full filesystem path. Be sure
+your version of PHP populates __FILE__ correctly. If you use custom template
+resource functions, the format of these changed with the plugin architecture.
+Be sure to update your functions accordingly. See the template resource section
+of the documentation.
+
+The PEAR dependancy was removed from Smarty. The Config_File class that comes
+with Smarty was actually what needed PEAR for error handling which Smarty didn't
+use, but now everything is self-contained.
+
+Performance improvements are graphed on the benchmark page, you will see that
+overall performance has been sped up by as much as 80% in some cases.
+
+Smarty-cached pages now support If-Modified-Since headers, meaning that if a
+cached template page has not changed since the last request, a "304 Not
+Modified" header will be sent instead of resending the same page. This is
+disabled by default, change the setting of $cache_modified_check.
1.5.2
-----
diff --git a/RESOURCES b/RESOURCES
index 2414de00..7fa2a842 100644
--- a/RESOURCES
+++ b/RESOURCES
@@ -1,5 +1,5 @@
Smarty Resources on the Web:
-(if you have something to add, e-mail monte@ispi.net)
+(if you have something to add, e-mail monte at ispi dot net)
Home Page:
http://www.phpinsider.com/php/code/Smarty
@@ -13,4 +13,3 @@ http://www.mapledesign.co.uk/coding/smarty_table.php
Misc:
http://freshmeat.net/projects/smarty/
http://www.hotscripts.com/Detailed/8817.html
-
diff --git a/Smarty.class.php b/Smarty.class.php
index 699d89b5..18041a88 100644
--- a/Smarty.class.php
+++ b/Smarty.class.php
@@ -96,7 +96,7 @@ class Smarty
var $cache_handler_func = null; // function used for cached content. this is
// an alternative to using the built-in file
// based caching.
- var $check_if_modified = false; // respect If-Modified-Since headers on cached content
+ var $cache_modified_check = false; // respect If-Modified-Since headers on cached content
var $default_template_handler_func = ''; // function to handle missing templates
@@ -515,7 +515,7 @@ class Smarty
$_smarty_results .= $this->_generate_debug_output();
}
- if ($this->check_if_modified) {
+ if ($this->cache_modified_check) {
global $HTTP_IF_MODIFIED_SINCE;
$last_modified_date = substr($HTTP_IF_MODIFIED_SINCE, 0, strpos($HTTP_IF_MODIFIED_SINCE, 'GMT') + 3);
$gmt_mtime = gmdate('D, d M Y H:i:s', $this->_cache_info['timestamp']).' GMT';
diff --git a/docs.sgml b/docs.sgml
index de50d0c8..f294d431 100644
--- a/docs.sgml
+++ b/docs.sgml
@@ -2118,7 +2118,7 @@ email: zaphod@slartibartfast.com<br>
{$smarty} variable can be used to refer to 'section' and
'foreach' loop properties. See docs for
section and
- foreach.
+ foreach.
diff --git a/libs/Smarty.class.php b/libs/Smarty.class.php
index 699d89b5..18041a88 100644
--- a/libs/Smarty.class.php
+++ b/libs/Smarty.class.php
@@ -96,7 +96,7 @@ class Smarty
var $cache_handler_func = null; // function used for cached content. this is
// an alternative to using the built-in file
// based caching.
- var $check_if_modified = false; // respect If-Modified-Since headers on cached content
+ var $cache_modified_check = false; // respect If-Modified-Since headers on cached content
var $default_template_handler_func = ''; // function to handle missing templates
@@ -515,7 +515,7 @@ class Smarty
$_smarty_results .= $this->_generate_debug_output();
}
- if ($this->check_if_modified) {
+ if ($this->cache_modified_check) {
global $HTTP_IF_MODIFIED_SINCE;
$last_modified_date = substr($HTTP_IF_MODIFIED_SINCE, 0, strpos($HTTP_IF_MODIFIED_SINCE, 'GMT') + 3);
$gmt_mtime = gmdate('D, d M Y H:i:s', $this->_cache_info['timestamp']).' GMT';