CC-1695 Remove Campcaster Studio and make install easier
This commit is contained in:
parent
89a138b5f8
commit
81d499060b
|
@ -0,0 +1,7 @@
|
|||
Smarty is supported only in PHP 4.0.6 or later.
|
||||
|
||||
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.
|
|
@ -0,0 +1,458 @@
|
|||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,284 @@
|
|||
QUESTION INDEX
|
||||
--------------
|
||||
|
||||
GENERAL
|
||||
|
||||
Q: What is Smarty?
|
||||
Q: What's the difference between Smarty and other template engines?
|
||||
Q: What do you mean "Compiled PHP Scripts" ?
|
||||
Q: Why can't I just use PHPA (http://php-accelerator.co.uk) or Zend Cache?
|
||||
Q: Why does smarty have a built in cache? Wouldn't it be better to handle this
|
||||
in a separate class?
|
||||
Q: Is Smarty faster than <insert other PHP template engine>?
|
||||
Q: How can I be sure to get the best performance from Smarty?
|
||||
Q: Do you have a mailing list?
|
||||
Q: Can you change the mailing list so reply-to sends to the list and not the
|
||||
user?
|
||||
|
||||
TROUBLESHOOTING
|
||||
|
||||
Q: Smarty doesn't work.
|
||||
Q: I get the following error when running Smarty:
|
||||
Warning: Smarty error: problem creating directory "templates_c/239/239105369"
|
||||
in /path/to/Smarty.class.php on line 542
|
||||
Q: I get the following error when running Smarty:
|
||||
Warning: Wrong parameter count for preg_replace() in
|
||||
Smarty.class.php on line 371
|
||||
Q: I get this error when passing variables to {include}:
|
||||
Fatal error: Call to undefined function: get_defined_vars() in
|
||||
/path/to/Smarty/templates_c/index.tpl.php on line 8
|
||||
Q: I get PHP errors in my {if} tag logic.
|
||||
Q: I'm changing my php code and/or templates, and my results are not getting
|
||||
updated.
|
||||
Q: I'm running Windows 2000 and I get blank content. My compiled PHP files are
|
||||
also zero length.
|
||||
Q: The template goes into an infinite loop when I include included templates
|
||||
that pass local variables
|
||||
Q: Javascript is causing Smarty errors in my templates.
|
||||
Q: I get "SAFE MODE Restriction in effect. ..."-errors when running smarty.
|
||||
|
||||
MISC
|
||||
|
||||
Q: Can I use Macromedia's Dreamweaver to edit my templates?
|
||||
Q: Dreamweaver is urlencoding the template delimiters when they are in a SRC or
|
||||
HREF link. How do I get around this?
|
||||
|
||||
HOWTO
|
||||
|
||||
Q: How do I generate different cache files per template based on arguments
|
||||
passed to the page?
|
||||
Q: How do I pass a template variable as a parameter? {function param={$varname}}
|
||||
does not work.
|
||||
Q: How do I include cached template(s) within a non-cached template?
|
||||
|
||||
|
||||
GENERAL
|
||||
-------
|
||||
|
||||
Q: What is Smarty?
|
||||
A: Smarty is a template engine for PHP... but be aware this isn't just another
|
||||
PHP template engine. It's much more than that.
|
||||
|
||||
Q: What's the difference between Smarty and other template engines?
|
||||
A: Most other template engines for PHP provide basic variable substitution and
|
||||
dynamic block functionality. Smarty takes a step further to be a "smart"
|
||||
template engine, adding features such as configuration files, template
|
||||
functions, variable modifiers (see the docs!) and making all of this
|
||||
functionality as easy as possible to use for both programmers and template
|
||||
designers. Smarty also compiles the templates into PHP scripts, eliminating
|
||||
the need to parse the templates on every invocation, making Smarty extremely
|
||||
scalable and manageable for large application needs.
|
||||
|
||||
Q: What do you mean "Compiled PHP Scripts" ?
|
||||
A: Smarty reads the template files and creates PHP scripts from them. Once
|
||||
these PHP scripts are created, Smarty executes these, never having to parse
|
||||
the template files again. If you change a template file, Smarty will
|
||||
recreate the PHP script for it. All this is done automatically by Smarty.
|
||||
Template designers never need to mess with the generated PHP scripts or even
|
||||
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 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?
|
||||
A: Smarty's caching functionality is tightly integrated with the template
|
||||
engine, making it quite a bit more flexible than a simple caching wrapper.
|
||||
For instance, you can cache select portions of a template page. Let's say
|
||||
you have a polling box on your site. With Smarty, you can leave the poll
|
||||
dynamic and cache the rest of the page. You can also pass templates
|
||||
multiple cache ids, meaning that a template can have several caches
|
||||
depending on URL, cookies, etc.
|
||||
|
||||
Q: Is Smarty faster than <insert other PHP template engine>?
|
||||
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
|
||||
compiled. This will skip the unneeded step of testing if the template has
|
||||
changed since it was last compiled. If you have complex pages that don't
|
||||
change too often, turn on the caching engine and adjust your application so
|
||||
it doesn't do unnecessary work (like db calls) if a cached page is
|
||||
available. See the documentation for examples.
|
||||
|
||||
Q: Do you have a mailing list?
|
||||
A: We have a few mailing lists. "general" for you to share your ideas or ask
|
||||
questions, "dev" for those interested in the development efforts of Smarty,
|
||||
and "cvs" for those that would like to track the updates made in the cvs
|
||||
repository.
|
||||
|
||||
send a blank e-mail message to:
|
||||
smarty-general-subscribe@lists.php.net (subscribe to the general list)
|
||||
smarty-general-unsubscribe@lists.php.net (unsubscribe from the general list)
|
||||
smarty-general-digest-subscribe@lists.php.net (subscribe to digest)
|
||||
smarty-general-digest-unsubscribe@lists.php.net (unsubscribe from digest)
|
||||
smarty-dev-subscribe@lists.php.net (subscribe to the dev list)
|
||||
smarty-dev-unsubscribe@lists.php.net (unsubscribe from the dev list)
|
||||
smarty-cvs-subscribe@lists.php.net (subscribe to the cvs list)
|
||||
smarty-cvs-unsubscribe@lists.php.net (unsubscribe from the cvs list)
|
||||
You can also browse the mailing list archives at
|
||||
http://marc.theaimsgroup.com/?l=smarty&r=1&w=2
|
||||
|
||||
|
||||
|
||||
Q: Can you change the mailing list so Reply-To sends to the list and not the
|
||||
user?
|
||||
A: Yes we could, but no we won't. Use "Reply-All" in your e-mail client to send
|
||||
to the list. http://www.unicom.com/pw/reply-to-harmful.html
|
||||
|
||||
TROUBLESHOOTING
|
||||
---------------
|
||||
|
||||
Q: Smarty doesn't work.
|
||||
A: You must be using PHP 4.0.6 or later if you use any version of Smarty
|
||||
past 2.0.1. Read the BUGS file for more info.
|
||||
|
||||
Q: I get the following error when running Smarty:
|
||||
Warning: Smarty error: problem creating directory "templates_c/239/239105369"
|
||||
in /path/to/Smarty.class.php on line 542
|
||||
A: Your web server user does not have permission to write to the templates_c
|
||||
directory, or is unable to create the templates_c directory. Be sure the
|
||||
templates_c directory exists in the location defined in Smarty.class.php,
|
||||
and the web server user can write to it. If you do not know the web server
|
||||
user, chmod 777 the templates_c directory, reload the page, then check the
|
||||
file ownership of the files created in templates_c. Or, you can check the
|
||||
httpd.conf (usually in /usr/local/apache/conf) file for this setting:
|
||||
User nobody
|
||||
Group nobody
|
||||
|
||||
Q: I get the following error when running Smarty: Warning: Wrong parameter
|
||||
count for preg_replace() in Smarty.class.php on line 371
|
||||
A: preg_replace had a parameter added in PHP 4.0.2 that Smarty
|
||||
requires. Upgrade to at least 4.0.6 to fix all known PHP issues with
|
||||
Smarty.
|
||||
|
||||
Q: I get this error when passing variables to {include}:
|
||||
Fatal error: Call to undefined function: get_defined_vars() in
|
||||
/path/to/Smarty/templates_c/index.tpl.php on line 8
|
||||
A: get_defined_vars() was added to PHP 4.0.4. If you plan on passing
|
||||
variables to included templates, you will need PHP 4.0.6 or later.
|
||||
|
||||
Q: I get PHP errors in my {if} tag logic.
|
||||
A: All conditional qualifiers must be separated by spaces. This syntax will not
|
||||
work: {if $name=="Wilma"} You must instead do this: {if $name == "Wilma"}.
|
||||
The reason for this is syntax ambiguity. Both "==" and "eq" are equivalent
|
||||
in the template parser, so something like {if $nameeq"Wilma"} wouldn't be
|
||||
parsable by the tokenizer.
|
||||
|
||||
Q: I'm changing my php code and/or templates, and my results are not getting
|
||||
updated.
|
||||
A: This may be the result of your compile or cache settings. If you are
|
||||
changing your php code, your templates will not necessarily get recompiled
|
||||
to reflect the changes. Use $force_compile during develpment to avoid these
|
||||
situations. Also turn off caching during development when you aren't
|
||||
specifically testing it. You can also remove everything from your
|
||||
compile_dir and cache_dir and reload the page to be sure everything gets
|
||||
regenerated.
|
||||
|
||||
Q: I'm running Windows 2000 and I get blank content. My compiled PHP files are
|
||||
also zero length.
|
||||
A: There seems to be a problem with some W2k machines and exclusive file
|
||||
locking. Comment out the flock() call in _write_file to get around this,
|
||||
although be aware this could possibly cause a problem with simultaneous
|
||||
writes to a file, especially with caching turned on. NOTE: As of Smarty
|
||||
1.4.0, a workaround was put in place that should solve this.
|
||||
|
||||
Q: The template goes into an infinite loop when I include included templates
|
||||
that pass local variables
|
||||
A: This was fixed in 1.3.2 (new global attribute)
|
||||
|
||||
Q: Javascript is causing Smarty errors in my templates.
|
||||
A: Surround your javascript with {literal}{/literal} tags. See the docs.
|
||||
|
||||
Q: I get "SAFE MODE Restriction in effect. ..."-errors when running smarty.
|
||||
A: Use $smarty->use_sub_dirs = false when running php in safe mode.
|
||||
|
||||
MISC
|
||||
----
|
||||
|
||||
Q: Can I use Macromedia's Dreamweaver to edit my templates?
|
||||
A: Certainly. You might want to change your tag delimiters from {} to something
|
||||
that resembles valid HTML, like <!--{ }--> or <{ }> or something similar.
|
||||
This way the editor won't view the template tags as errors.
|
||||
|
||||
Q: Dreamweaver is urlencoding the template delimiters when they are in a SRC or
|
||||
HREF link. How do I get around this?
|
||||
A: In Edit - Properties - Rewrite HTML you can specify if Dreamweaver should
|
||||
change special letters to %-equivalent or not. The default is on which
|
||||
produces this error.
|
||||
|
||||
HOWTO
|
||||
-----
|
||||
|
||||
Q: How do I generate different cache files per template based on arguments
|
||||
passed to the page?
|
||||
A: Use your $REQUEST_URI as the cache_id when fetching the page:
|
||||
|
||||
global $REQUEST_URI; // if not already present
|
||||
$smarty->display('index.tpl',$REQUEST_URI);
|
||||
|
||||
This will create a separate cache file for each unique URL when you call
|
||||
index.tpl. See the documentation for display() and fetch()
|
||||
|
||||
Q: How do I pass a template variable as a parameter? {function param={$varname}}
|
||||
does not work.
|
||||
A: {function param=$varname} (You cannot nest template delimiters.)
|
||||
|
||||
Q: How do I include cached template(s) within a non-cached template?
|
||||
A: One way to do it:
|
||||
|
||||
$smarty->caching = true;
|
||||
$tpl1 = $smarty->fetch("internal1.tpl");
|
||||
$tpl2 = $smarty->fetch("internal2.tpl");
|
||||
$tpl3 = $smarty->fetch("internal3.tpl");
|
||||
|
||||
$smarty->assign("tpl1_contents",$tpl1);
|
||||
$smarty->assign("tpl2_contents",$tpl2);
|
||||
$smarty->assign("tpl3_contents",$tpl3);
|
||||
|
||||
$smarty->caching = false;
|
||||
$smarty->display('index.tpl');
|
||||
|
||||
index.tpl
|
||||
---------
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>{$tpl1_contents}</td>
|
||||
<td>{$tpl2_contents}</td>
|
||||
<td>{$tpl3_contents}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
|
||||
Another approach:
|
||||
|
||||
You could write a custom insert function to fetch your internal
|
||||
templates:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>{insert name=fetch_tpl tpl="internal1.tpl"}</td>
|
||||
<td>{insert name=fetch_tpl tpl="internal2.tpl"}</td>
|
||||
<td>{insert name=fetch_tpl tpl="internal3.tpl"}</td>
|
||||
</tr>
|
||||
</table>
|
|
@ -0,0 +1,29 @@
|
|||
REQUIREMENTS:
|
||||
|
||||
Smarty requires PHP 4.0.6 or later.
|
||||
See the on-line documentation for complete install instructions.
|
||||
|
||||
INSTALLATION (quick):
|
||||
|
||||
* copy the files under the libs/ directory to a directory that is in your PHP
|
||||
include_path, or set the SMARTY_DIR constant and put them in this directory.
|
||||
(if you upgrade from versions before 2.5.0 be aware that up to Smarty 2.4.2
|
||||
all necessary files where in the distribution's root directory, but are now
|
||||
in libs/.)
|
||||
|
||||
* for each application using Smarty, 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 in the on-line
|
||||
documentation.
|
||||
|
||||
* TECHNICAL NOTE: If you do not have access to the php.ini file, you can change
|
||||
non-server settings (such as your include_path) with the ini_set() command.
|
||||
example: ini_set("include_path",".:/usr/local/lib/php");
|
|
@ -0,0 +1,865 @@
|
|||
Version 2.6.6 (Oct 13, 2004)
|
||||
----------------------------
|
||||
|
||||
- fixed nocache-handling with nested includes (Lars Jankowfsky, messju)
|
||||
- moved /libs/core to /libs/internals (boots)
|
||||
- fixed more parsing problems (messju)
|
||||
|
||||
Version 2.6.5 (Sept 13, 2004)
|
||||
-----------------------------
|
||||
|
||||
- fixed some parsing problems with object calls introduced
|
||||
in 2.6.4 (Monte)
|
||||
- add $smarty->security_settings['ALLOW_CONSTANTS']. note: this
|
||||
defaults to false which means you have to allow them explicitly
|
||||
in your secured templates from now on! (messju)
|
||||
|
||||
Version 2.6.4 (Sept 7, 2004)
|
||||
----------------------------
|
||||
|
||||
- add $smarty.ldelim and $smarty.rdelim to smarty special var (Monte)
|
||||
- fall back to old uniqid()-behaviour when tempnam() fails in
|
||||
core.write_file.php (messju)
|
||||
- fix capitalize modifier, don't rely on buggy ucwords (Monte)
|
||||
- make html_select_date work with negative timestamps, also
|
||||
force year range to include given date unless explicitly
|
||||
set (Garo, Monte)
|
||||
- fix bug with {fetch}, passing user/pass in url did not work
|
||||
(Monte)
|
||||
- fix occasional wrong error messages on mismatched tags when
|
||||
{else}, {elseif}, {foreachelse} or {sectionelse} is involved (messju)
|
||||
- fix handling of methods arguments (messju, Manfred Wischin)
|
||||
- remove touch() call that made the compiled-template's timestamp the
|
||||
same as the source-template's one. (messju)
|
||||
- add assign attribute to html_checkboxes and html_radios
|
||||
(pcg, Monte)
|
||||
- remove non-xhtml conformant tag from mailto function
|
||||
(tacker, Monte)
|
||||
- handle date_format codes %e, %T and %D for windows (tip,
|
||||
Monte)
|
||||
- fix unnecessary call to smarty_core_get_include_path() inside
|
||||
Smarty::_get_auto_filename() (c960657, messju)
|
||||
- add error-messages when anything else than an identifier is passed
|
||||
to foreach's key- or item-attribute (messju)
|
||||
- fix handling of digits inside tagnames (messju)
|
||||
- fix escaping of backslashes in Smarty_Compiler::_quote_replace() (messju)
|
||||
|
||||
Version 2.6.3 (June 16, 2004)
|
||||
-----------------------------
|
||||
|
||||
- added escapement of '</' to '<\/' in escape:javascript
|
||||
modifier (c960657, Monte)
|
||||
- added obfuscation of protocol-string in {mailto} when using hex-
|
||||
encoding (bharat, messju)
|
||||
- enhanced auto-generated filenames for templates_c and cache (messju)
|
||||
- add 'nonstd' to escape modifier for escaping non-std chars,
|
||||
such as ms doc quote (Monte)
|
||||
- adjusted textformat to not output wrap chars after last para
|
||||
(Monte)
|
||||
- use tempnam() instead of unqid() to create better temporary files in
|
||||
smarty_core_write_file() (xces, messju)
|
||||
- add 'mail' to escape modifier for safe display of e-mail
|
||||
addresses (Monte)
|
||||
- add cycle function attribute "reset" to english docs (Monte)
|
||||
- enhanced support of numeric constants as variable-expressions (messju)
|
||||
- add case decentity to smarty_modifier_escape() (Konstantin A. Pelepelin,
|
||||
messju)
|
||||
- make smarty_core_write_compiled_include() php5-aware (messju)
|
||||
- removed unused functionality to load a subset of lines from a file (messju)
|
||||
- fix is_secure() should only check if a file is_readable, not if
|
||||
the directory where it is in is readable (sagi, messju)
|
||||
- fix problem displaying debug console when $default_resource_type
|
||||
is not "file:" (c960657, Monte)
|
||||
- fix permission handling with security and config_load (messju)
|
||||
- removed '.' from the list of default template locations in
|
||||
_parse_resource_name() (messju)
|
||||
- fix avoid warning with template_exists() on an absolute paths (messju)
|
||||
- fix parameters passed to resource's secure()-function (messju)
|
||||
- fix handling of integer values like width and delay im
|
||||
smarty_function_popup() (messju)
|
||||
|
||||
Version 2.6.2 (Feb 17, 2004)
|
||||
----------------------------
|
||||
|
||||
- fix allow empty years, months and days in html_select_date's
|
||||
time-attribute (messju)
|
||||
- fix YES and NO should not be booleanized inside triple-quotes in a
|
||||
config-file (messju)
|
||||
- fix accidently slurped line following a triple-quoted value in a
|
||||
config-file (messju)
|
||||
- change default for use_sub_dirs to false (messju)
|
||||
- fix quoting of values in smarty_function_popup() (messju)
|
||||
- fix handling of hidden sections in Config_File (messju)
|
||||
- add handling of resources for {config_load} (messju)
|
||||
- fix bug when using arrays with tr_attr and td_attr in {html_table} (messju)
|
||||
- add unit testing to cvs core (Monte)
|
||||
|
||||
Version 2.6.1 (Jan 16, 2004)
|
||||
----------------------------
|
||||
|
||||
- rename $smarty->tpl_error_reporting to $smarty->error_reporting
|
||||
(messju)
|
||||
- fix interpretation of $smarty->security in {html_image} (messju)
|
||||
- add caching of requested paths to _assemble_plugin_filepath() (messju)
|
||||
- fix handling of comments inside {php}- and {literal}-blocks (messju)
|
||||
- fix bug handling triple-quotes in config-files (BRDude, messju)
|
||||
- change default of request_use_auto_globals to true - $_SERVER is
|
||||
now preferred over $HTTP_SERVER_VARS (messju)
|
||||
- re-add support for $SCRIPT_NAME (messju)
|
||||
- reactivate $smarty->default_modifiers (messju)
|
||||
- add cookie persistance to debug console (Monte)
|
||||
- allow single-digit days and months without smarty_make_timestamp()
|
||||
in html_select_date (messju)
|
||||
- fix headers sent erroneously with cache_modified_check and fetch()
|
||||
(wphilips, messju)
|
||||
- fix config_file path bug (Marc Cabadas, Monte)
|
||||
- fix 'is even by' and 'is odd by' logic (Monte)
|
||||
- add day_empty, month_empty, year_empty and all_empty attributes to
|
||||
html_select_date (messju)
|
||||
- add table of explanation for {if} qualifiers in docs (boots)
|
||||
- fix bug when comparing array-keys to "selected" in html_options
|
||||
and html_checkboxes (messju)
|
||||
- add better checks for correctly nested tags when compiling (messju)
|
||||
- remove {$SCRIPT_NAME}. use {$smarty.server.SCRIPT_NAME} instead (messju)
|
||||
- remove $global_assign. assign global variables explicitly instead (messju)
|
||||
- fix example for count_characters in docs (boots)
|
||||
- add section new basic syntax section "Escaping Smarty Parsing" in docs (boots)
|
||||
- fix error handler call in config_load (boots)
|
||||
- remove warning in debug_print_var on php-resources (messju)
|
||||
- move function.assign.php to compiler.assign.php (messju)
|
||||
- add property $tpl_error_reporting (messju)
|
||||
- remove property $undefined. "null" is used literally instead (messju)
|
||||
|
||||
Version 2.6.0 (Nov 19, 2003)
|
||||
----------------------------
|
||||
|
||||
- move Smarty::quote_replace() to Smarty_Compiler::_quote_replace() (messju)
|
||||
- remove import of of attributes of {include_php} to php's namespace.
|
||||
use $params[name] instead (messju)
|
||||
|
||||
Version 2.6.0-RC3 (Nov 13, 2003)
|
||||
--------------------------------
|
||||
|
||||
- fix handling of $var.key inside [] (messju)
|
||||
- fix handling of assign inside {insert}-tags (messju)
|
||||
- fix handling if [...] inside triple-quotes in config-files (messju)
|
||||
- fix handling of simple-math-operators inside modifiers (Dominik, messju)
|
||||
- fix handling of trailing-slashes in open_basedir in
|
||||
smarty_core_create_dir_structure() (packman, messju)
|
||||
|
||||
Version 2.6.0-RC2 (Oct 8, 2003)
|
||||
-------------------------------
|
||||
|
||||
- apply modifiers only once to section-loop and foreach-from attrs (messju)
|
||||
- remove use of _smarty_cached_paths-files (messju)
|
||||
- remove Smarty::_plugin_implementation_exists() - use is_callable() (messju)
|
||||
- ignore {strip}/{/strip) inside {strip}-blocks (messju)
|
||||
- fixed removal of leading/trailing newlines in {strip}-blocks (messju)
|
||||
- fixed proper escaping of " and ' with escape:javascript (messju)
|
||||
- fixed bug in traversal of $smarty->plugins_dir-array. now the
|
||||
first matching plugin is taken (messju)
|
||||
- moved {strip} back into the compiler (messju)
|
||||
- fixed config_load: handling of section-attribute and use of
|
||||
multiple config-files in one template (atu, messju)
|
||||
|
||||
Version 2.6.0-RC1 (August 11, 2003)
|
||||
-----------------------------------
|
||||
|
||||
- fixed status-header for cache_modified_check under cgi-sapi (messju)
|
||||
- added optional parameter $cache_attrs to register_function() and
|
||||
register_block(). $cache_attrs is an array containing attribute-
|
||||
names that should be cached on calls to functions that have
|
||||
$cacheable set to false. (messju)
|
||||
- enabled registration of class-methods as callbacks for the register_*-
|
||||
functions (use: array('classname', 'method_name')) as callback) (messju)
|
||||
- added filepath caching (Monte)
|
||||
- added optional assign-attribute to {capture}-tag (messju)
|
||||
- added $cacheable-parameter to register_compiler_function() (messju)
|
||||
- added $cacheable-parameter with default=true to register_function()
|
||||
and register_block() (messju)
|
||||
- add math speedup to core (Dominik, Monte)
|
||||
- fix newlines for tags without template output (Monte)
|
||||
- added config-option "request_use_auto_globals" to make auto-globals be
|
||||
used as request vars instead of HTTP_*_VARS (messju)
|
||||
- speed up config_load, simplify compiling (Monte)
|
||||
- added block-methods for registered objects (Bharat Mediratta, messju)
|
||||
- ignore one char resource names like c:foo.tpl (Monte)
|
||||
- added default_resource_type feature (Monte)
|
||||
- fix bug where config file starts with hidden section (boots, Monte)
|
||||
- add discrete error checking pertaining to $cache_dir
|
||||
and $compile_dir, their existance and writability (Monte)
|
||||
- fixed behaviour of start=... for {counter} (messju)
|
||||
- fixed assign for {counter} (messju)
|
||||
- added params vdir, hdir and inner to html_table to allow looping
|
||||
over the data in various directions (messju)
|
||||
- allow spaces in literal tags (Paul Lockaby, Monte)
|
||||
- speed up compiled templates, hardcode plugin filepaths
|
||||
instead of dynamically calculate at runtime. (Monte)
|
||||
- abstract many core components from Smarty.class.php,
|
||||
speeding up core class instantiation (Monte)
|
||||
- fixed bug in _create_dir_structure() when used with open_basedir-
|
||||
restriction and relative paths (messju)
|
||||
- use DIRECTORY_SEPARATOR exclusively, keep DIR_SEP for BC (Monte)
|
||||
- changed "link" to "href" in html_image. "link" is still working
|
||||
but deprecated (messju)
|
||||
- html_image always renders an alt-tag now (default alt="") (messju)
|
||||
- fixed assign attribute for multiple counters (messju)
|
||||
- added simple math operators to variables (Monte)
|
||||
- enabled array(&$obj. 'source', 'timestamp', 'secure', 'trusted')
|
||||
as callback for register_resource() (messju);
|
||||
- enabled array(&$obj, 'method') as callback for
|
||||
$default_template_handler_func (messju)
|
||||
- remove unnecessary close/open tags from compiled templates
|
||||
(Monte)
|
||||
- fixed errornous creation of '//' in image_path in html_image (messju)
|
||||
- fix escapement of special chars for key vals in debug
|
||||
console (Monte)
|
||||
- fixed debug timing logic for config_load (Tom Sommer, Monte)
|
||||
- all in-code doc comments converted to phpDocumentor format (Greg)
|
||||
- moved strip from smarty core to plugin (Monte)
|
||||
- moved config_load from smarty core to plugin (Monte)
|
||||
- added &$repeat-parameter to block-functions (messju)
|
||||
- enabled hex-constants in function.math.php (messju)
|
||||
- enabled hex-constants (0x...) as function-attributes, inside if-statements
|
||||
and as modifier-parameters (messju)
|
||||
- fixed bug with passing $smarty as reference in Smarty.compiler.class
|
||||
(messju)
|
||||
- corrected output with {strip} and PHP tag newlines (Monte)
|
||||
- added possibility to register function-callbacks as "array(&$obj, 'method)"
|
||||
this affects register_function(), -block, -compiler_function, -modifier,
|
||||
-prefilter, -postfilter, -outputfilter-functions() and $cache_handler_func
|
||||
(messju)
|
||||
- added <labels> to html_checkboxes and html_radios (Philippe, messju)
|
||||
- added "labels"-options to turn off labels in html_checkboxes and _radios
|
||||
(messju)
|
||||
|
||||
Version 2.5.0 (April 11, 2003)
|
||||
------------------------------
|
||||
|
||||
- fixed bug with default modifier when passing integer 0
|
||||
(Monte)
|
||||
- change backtic syntax from $`foo` to `$foo` (Monte)
|
||||
- recognize $foo[][] syntax inside embedded quotes without
|
||||
backtics (Monte)
|
||||
- name=123 is passed as an integer (not a string) to plugins now (messju)
|
||||
- $length is now propagated to sub-values in debug_print_var (messju)
|
||||
|
||||
Version 2.5.0-RC2 (March 26, 2003)
|
||||
----------------------------------
|
||||
|
||||
- made clear_cache() ignore compile_id, when clearing cache-groups (this
|
||||
is when no $tpl_file is supplied) (messju)
|
||||
- made onmouseout XHTML-compliant in function.popup.php (messju)
|
||||
- applied local-var-naming-scheme to fetch() (messju)
|
||||
- renamed $localvars to $_localvars in cache-file-handling-functions,
|
||||
added _get_auto_id()-function (messju)
|
||||
- swapped compile_id and cache_id in read_cache_file and write_cache_file
|
||||
(messju)
|
||||
- reverted patch for cache-file-handling (messju)
|
||||
- made html_radios and html_checkboxes accept "selected" instead
|
||||
of "checked" optionally. (messju)
|
||||
- made compile_id ignored in clear_cache, made order of
|
||||
auto_file_name $cache_id.$compile_id again, applied the the new
|
||||
variable-naming-scheme for cache_file_handing functions (messju)
|
||||
- removed notice of undefined var in _rm_auto() (messju)
|
||||
- added warning message when an array is passed as
|
||||
the "checked" value of html_radios (Monte)
|
||||
- fixed errormessage in _compile_smarty_ref() (messju)
|
||||
- updated docs for html_image "name" -> "file" (messju)
|
||||
- fixed bug with html_options-optgroups (Nichlas Löfdahl, messju)
|
||||
- cleaned up calls to readdir() (messju)
|
||||
- fixed bug with passing multiple modifiers to a parameter
|
||||
(Monte)
|
||||
- updated docs for html_checkboxes, html_options and html_radios (messju)
|
||||
- fixed wrong default "name" attribute for html_options (messju)
|
||||
- html_checkboxes now expect the options as attribute "options" instead
|
||||
of "checkboxes. html_radios expect "options" instead of "radios".
|
||||
cleaned up indentiation (messju)
|
||||
- fixed too greedy str_replace in trimwhitespace outputfilter (messju)
|
||||
- html_checkboxes and html_radios passthru all unknown paramters now
|
||||
additionally their output is now XHTML compliant (messju)
|
||||
- html_options passthru all unknown paramters now (messju)
|
||||
- fix link functionality of html_image, also make
|
||||
output XHTML compatible (Hinrich Donner, Monte)
|
||||
- append "@" to default modifier vars/args
|
||||
supress possible warnings (Monte)
|
||||
- fix problem with escaped double quotes (Monte)
|
||||
- fix html_radios to not return an array (Monte)
|
||||
- fixed length in modifier.truncate.php (messju)
|
||||
- fixed handling of '$'-signs in trimwhitespace outputfilter (messju)
|
||||
- fix bug that makes config files recompile every time
|
||||
(Nagger, Monte)
|
||||
- add dpi functionality to html_image, change "name"
|
||||
parameter to "file" (Thomas Shulz, Monte)
|
||||
- fix height/width parameter index in html_image (Gerard,
|
||||
Monte)
|
||||
- get rid of unsetting name and script attributes
|
||||
to insert tag (Thomas Schulz, Monte)
|
||||
- changed argument order of string_format modifier back,
|
||||
was right in the first place (Monte)
|
||||
|
||||
Version 2.5.0-RC1 (March 5, 2003)
|
||||
---------------------------------
|
||||
|
||||
- fixed notice in popup function (Nagger, Monte)
|
||||
- fix "once" var compiling for include_php (Monte)
|
||||
- added nl2br modifier to distribution (Monte)
|
||||
- added html_image to distribution (Monte)
|
||||
- added cat modifier to distribution (Monte)
|
||||
- added html_table to distribution (Monte)
|
||||
- added << >> <> support to if statments (SMK, Monte)
|
||||
- fix _assign_smarty_interface to not overwrite keys
|
||||
other than 'request' (Jerome Poudevigne, Monte)
|
||||
- added html_checkboxes to distribution (Christopher Kvarme, Monte)
|
||||
- added html_radios to distribution (Christopher Kvarme, Monte)
|
||||
- fixed string_format modifier args (wrong order) (Paul
|
||||
Lockaby, Monte)
|
||||
- use tmp file for file writes, avoid file lock race (Monte)
|
||||
- support syntax "$`smarty.config.foo`.tpl" for embedded
|
||||
vars in quotes, and allow full dollar var syntax (Monte)
|
||||
- add $smarty.config.varname variable for accessing config vars (Paul
|
||||
Lockaby, Monte)
|
||||
- silence PHP warnings in function.fetch.php (Eduardo,
|
||||
Monte)
|
||||
- added get_config_vars(), same basic functionality as
|
||||
get_template_vars() (Monte)
|
||||
- update get_template_vars() to be able to get
|
||||
individual vars (Monte)
|
||||
- fix minor logic in _fetch_template_info (Dennis Gearon,
|
||||
Monte)
|
||||
- fix cache groups with compile_id set (Monte)
|
||||
- add support for merging appended vars (messju, Monte)
|
||||
- allow null as function attribute value
|
||||
(André Rabold, Monte)
|
||||
- support $foo->bar[index] syntax (Monte)
|
||||
- add get_registered_object function (messju, Monte)
|
||||
- treat unrecognized param attribute syntax as string (Monte)
|
||||
- support $smarty.const.$foo syntax (messju, Monte)
|
||||
- remove E_NOTICE warnings from debug.tpl,
|
||||
escape modifier (Kanstantin, Monte)
|
||||
- don't count non-ascii chars in count_words modifier
|
||||
(Kanstantin, Monte)
|
||||
- clean up param calls to _parse_var and _parse_attrs (Monte)
|
||||
- define $template_source var, elude possible warning
|
||||
(Monte)
|
||||
- fix syntax problem with evaluating PHP constants (Monte)
|
||||
- add @ and === as valid if statement tokens (Monte)
|
||||
- enable error messages for config_load errors,
|
||||
use $this->config_class for loading class name (Monte)
|
||||
- fix html_options to not escape already escaped entities (Monte)
|
||||
- send Last-Modified header on cache creation (Monte)
|
||||
- check strict syntax of function attributes (Monte)
|
||||
- dropped support for modifers on object parameters,
|
||||
added support for objects as modifier parameters (Monte)
|
||||
- fixed bug with decimal numbers in if statements (Monte)
|
||||
|
||||
Version 2.4.2 (Feb 11, 2003)
|
||||
----------------------------
|
||||
- support embedded variables in objects (Monte)
|
||||
- fix bug with objects with no properties (M Mohr, Monte)
|
||||
- support full dollar var syntax in quoted text (Monte)
|
||||
- fixed bug in $smarty.const.FOO introduced in 2.4.1 (M
|
||||
Mohr, Monte)
|
||||
|
||||
Version 2.4.1 (Feb 6, 2003)
|
||||
---------------------------
|
||||
|
||||
- ignore case in IF statements (Rainer Collet, Monte)
|
||||
- treat undefined constants as null (Ferdinand Beyer, Monte)
|
||||
- fix problem with inserts and nested fetches
|
||||
(Rainer Collet, Monte)
|
||||
- added support for passing params to include_php
|
||||
(Tim Riley, Monte)
|
||||
- added support for math operators in if statements (Monte)
|
||||
- added support for $foo->bar[$x].blah syntax (Monte)
|
||||
|
||||
Version 2.4.0 (Feb 2, 2003)
|
||||
---------------------------
|
||||
|
||||
- fix known problems with php tag handling in templates
|
||||
(recursion, echoing xml tags) (Monte)
|
||||
- add support for object registration (Monte)
|
||||
- add debug template to secure_dir, add template_dir
|
||||
to secure_dir by default (Ferdinand Beyer, Monte)
|
||||
- added support for assigned object access (Monte)
|
||||
- fixed bug with directories named '0' (Frank Bauer, Monte)
|
||||
- add javascript parameter to escape modifier (Monte)
|
||||
- added calling function line numbers to syntax error
|
||||
messages in compiler (Monte)
|
||||
- added support for modifiers to function calls (Monte)
|
||||
- support return value for custom functions
|
||||
instead of echoing (but echo still works) (Monte)
|
||||
- added direct access to constants
|
||||
via $smarty.const.FOO (Monte)
|
||||
- added support for passing modifiers
|
||||
to static values (Monte)
|
||||
- fix up regex code in compiler, more accurate and
|
||||
maintainable (Monte)
|
||||
- added day_value_format to html_select_date (Marcus
|
||||
Bointon, Monte)
|
||||
- assigned variables are no longer in global
|
||||
namespace, saving extract() calls and speeding
|
||||
up fetch() and display() linearly with no. of
|
||||
assigned variables (Monte)
|
||||
- added trimwhitespace output filter to dist. (Monte)
|
||||
- fix popup function to allow newlines in text (Monte)
|
||||
- escape html entities in html_options (Monte)
|
||||
- fixed bug with label for html_options (Monte)
|
||||
- added config_load API function (Monte)
|
||||
- added caching to config file loading (Monte)
|
||||
- added "extra" parameter to mailto function (Monte,
|
||||
Massimiliano Perantoni)
|
||||
- added mailto plugin to dist. (Monte)
|
||||
|
||||
Version 2.3.1 (Nov 19, 2002)
|
||||
----------------------------
|
||||
|
||||
- added optgroup support to html_options (Monte, Robert
|
||||
Amos)
|
||||
- set mtime on compile files so they match source
|
||||
files (Monte, Peter Bowen)
|
||||
- added proper support for open_basedir setting
|
||||
(Monte, Alessandro Astarita)
|
||||
- added strip variable modifier, updated docs (Monte)
|
||||
- fixed access to $smarty.x variables as arrays. (Andrei)
|
||||
- fixed errors with example setup docs (Monte, Matthew
|
||||
Hagerty)
|
||||
- added textformat block function (Monte)
|
||||
|
||||
Version 2.3.0 (Aug 7, 2002)
|
||||
---------------------------
|
||||
|
||||
- added assign_by_ref() and append_by_ref() functions
|
||||
(Bob Silva, Monte)
|
||||
- changed default warning type for plugin errors from
|
||||
E_USER_WARNING to E_USER_ERROR (Monte)
|
||||
- added $all_extra, $hour_extra, $minute_extra,
|
||||
$second_extra and $meridian_extra parameters to
|
||||
html_select_time function (Rainer Collet, Monte)
|
||||
- update debug console to print objects (Simon Willison,
|
||||
Monte)
|
||||
- fix Config_File class to not error when there are no
|
||||
sections (Peter Kmet, Monte)
|
||||
- add default modifier logic (Monte)
|
||||
- updated popup_init to be xhtml compliant (Tom Oram, Monte)
|
||||
- fix filename bug with windows (Gary Loescher, Monte)
|
||||
- add ability to supply expire time in seconds when clearing
|
||||
cache or compile files (Monte)
|
||||
- add {debug} plugin to distribution (Monte)
|
||||
- fixed bug with insert tags, loading from "script" attribute
|
||||
when caching is enabled (Monte)
|
||||
- fix bug with debug_tpl file path with Windows (.SMK., Monte)
|
||||
- fix append() function with string/array problem (Monte)
|
||||
|
||||
Version 2.2.0 (July 11, 2002)
|
||||
-----------------------------
|
||||
|
||||
- make debug.tpl work with any delimiter (Monte)
|
||||
- change logic in assign() and append() to test var names
|
||||
against != '' instead of empty() (Monte)
|
||||
- fix PHP notice in append() function (Monte)
|
||||
- allow $plugins_dir to be an array of directories
|
||||
(Andreas Kossmeier, Monte)
|
||||
- move debug.tpl to SMARTY_DIR, add to constructor (Monte)
|
||||
- fixed warning message in function.assign_debug_info (Monte)
|
||||
- fixed $template_dir, $compile_dir, $cache_dir, $config_dir,
|
||||
$plugin_dir to respect include_path (Monte)
|
||||
- fixed warning message with output filter array (Monte)
|
||||
- add optional 2nd parameter to date_format, used as
|
||||
the default date if the passed date is empty (Monte)
|
||||
- gave $reset a default value in cycle plugin (Monte)
|
||||
- fixed warnings with html_select_date and timestamp
|
||||
functions (Monte)
|
||||
- added support for sub directory exlusion format (Monte)
|
||||
- added support for grouping by cache_id, compile_id
|
||||
and segments thereof (Monte)
|
||||
- changed cache and compile files to human readable
|
||||
format (Monte)
|
||||
- remove overlib.js file from distribution (Monte)
|
||||
- fixed bug with 304 Not Modified response sending
|
||||
content (Monte)
|
||||
- fixed cycle function to respect delimiter after
|
||||
initial setting (Monte)
|
||||
- update $GLOBALS references to work properly with
|
||||
track_globals settings (Michal Prinke, Monte)
|
||||
- fixed bug in math function with call to assign
|
||||
(Grigory V. Kareev, Monte)
|
||||
- optimized for loops with count() function calls (Monte)
|
||||
- add month_value_format attribute to html_select_date
|
||||
plugin (Gary Loescher, Monte)
|
||||
- made it possible to use simple variables inside [] for
|
||||
indexing. (Andrei)
|
||||
- added "once" attribute to {include_php}. (Monte)
|
||||
|
||||
Version 2.1.1
|
||||
-------------
|
||||
- added cycle function. (Monte)
|
||||
- fixed bug with resource testing, and include_path. (Monte)
|
||||
- fixed a bug with register_outputfilter function. (Monte)
|
||||
|
||||
Version 2.1.0
|
||||
-------------
|
||||
|
||||
- introduced output filters. (Andrei)
|
||||
- changed the way filters are loaded, added load_filter()
|
||||
API function and $autoload_filters variable. (Andrei)
|
||||
- added caching logic for expire times per cache file
|
||||
(Norbert Rocher, Monte)
|
||||
- fixed html_select_date when field separator is "/"
|
||||
(Roberto Berto, Monte)
|
||||
- added YYYY-MM-DD format support to html_select_date
|
||||
(Jan Rosier, Monte)
|
||||
- fixed cache_lifetime logic bug, also made -1 = never
|
||||
expire (Monte)
|
||||
- fixed directory separator issue for Windows. (Andrei)
|
||||
- added ability to use simple variables as array indices or
|
||||
object properties. (Andrei)
|
||||
- added ability to unregister pre/postfilters plugins at
|
||||
runtime. (Andrei)
|
||||
- added 'htmlall' attribute to escape modifier. (Monte)
|
||||
- added template_exists() API function. (Andrei)
|
||||
- fixed a problem with using dynamic values for 'file'
|
||||
attribute of {include_php} tag. (Andrei)
|
||||
- added $smarty.template variable. (Andrei)
|
||||
- fixed several plugins that would not work if the plugin
|
||||
directory was not the default one. (Andrei)
|
||||
- implemented support for block functions. (Andrei)
|
||||
- made it possible to assign variables in pre/postfilter
|
||||
plugins. (Andrei)
|
||||
|
||||
Version 2.0.1
|
||||
-------------
|
||||
- rename plugin .make_timestamp.php to shared.make_timestamp.php.
|
||||
(Monte)
|
||||
- changed crc32() generated values, replace '-' with 'N'. (Monte)
|
||||
- added support for +/- N syntax in html_select_date year values.
|
||||
(Monte)
|
||||
- fixed behavior of inserts with script attribute. (Andrei)
|
||||
- fixed bug with $smarty.cookies and $smarty.server. (Andrei)
|
||||
- wordwrap and indent are missing from 2.0 release, now fixed.
|
||||
(Monte)
|
||||
- removed show_info_header and show_info_include variables. (Monte)
|
||||
|
||||
Version 2.0.0
|
||||
-------------
|
||||
- added "eval" function plugin for evaluating variables as
|
||||
templates. (Monte)
|
||||
- removed $tpl_file_ext class variable, no longer used. (Monte)
|
||||
- added "hex" and "hexentity" escape types to escape modifier.
|
||||
(Monte)
|
||||
- removed dependency on PEAR. (Andrei)
|
||||
- update popup_init to accept src attribute. (Monte, Duncan Forrest)
|
||||
- implemented several optimizations, speeding up Smarty
|
||||
significantly in most cases. (Andrei,Monte)
|
||||
- implemented plugin architecture. (Andrei)
|
||||
- added wordwrap and indent modifiers. (Monte)
|
||||
- added support for 'If-Modified-Since' headers for cached content.
|
||||
(Monte)
|
||||
- removed insert_tag_check class variable, no longer needed. (Monte)
|
||||
- optimized cache fetches by scanning for insert tags only if they
|
||||
exist. (Monte)
|
||||
- fixed bugs in overlib. (Monte, Duncan Forrest)
|
||||
- fixed a problem with compile_id usage. (Andrei)
|
||||
- fixed problem with using assigned vars with {include_php ...}
|
||||
filepath. (Monte)
|
||||
|
||||
Version 1.5.2
|
||||
-------------
|
||||
- added Smarty object as fifth argument for template resource functions.
|
||||
(Monte)
|
||||
- fixed a bug with incorrectly combined cache and compile id in
|
||||
clear_cache(). (Andrei)
|
||||
- fixed bug in smarty_make_timestamp introduced in PHP 4.1.0. (Monte)
|
||||
- fixed bug with cached insert debug timing. (Monte)
|
||||
- added 'script' attribute to {insert..} which specifies the script that
|
||||
the insert function can be found in. (Andrei)
|
||||
- added default template function handler. (Monte)
|
||||
|
||||
Version 1.5.1
|
||||
-------------
|
||||
- removed error message from the generic _read_file() method, the caller
|
||||
should take care of that. (Andrei)
|
||||
- fixed a bug with incorrectly combined cache and compile id. (Andrei)
|
||||
|
||||
Version 1.5.0
|
||||
-------------
|
||||
- added include_php built-in function, documented. (Monte)
|
||||
- added trusted_dir functionality, documented. (Monte)
|
||||
- consolidated secure_dir tests to one function. (Monte)
|
||||
- prepended _smarty_ to variable names in fetch() class function to avoid
|
||||
namespace conflicts. (Monte)
|
||||
- introduced $compile_id class variable that can be used to set persistent
|
||||
compile identifier across multiple display calls, documented. (Andrei)
|
||||
- fixed bug with concatenated null cache and compile identifiers. (Andrei)
|
||||
- added $smarty.section.* syntax for accessing section properties,
|
||||
documented. (Andrei)
|
||||
- added custom cache handling function ability, documented. (Monte)
|
||||
- added assign attribute to include, include_php, insert, fetch, math, and
|
||||
counter functions, documented. (Monte)
|
||||
- fixed bug with fetch testing for local file when http address. (Monte)
|
||||
- fixed bug with counter and skipval setting. (Monte)
|
||||
- made {config_load ...} merge globals from each config file only once per
|
||||
scope, thus avoiding several problems. (Andrei)
|
||||
- added {foreach ...} tag that can be used to iterate through
|
||||
non-sequential and associative arrays, documented. (Andrei)
|
||||
- speeded up section property access a bit. (Andrei)
|
||||
- removed $smarty variable from storage used by normal template variables,
|
||||
to prevent any problems. (Andrei)
|
||||
- fixed a bug that could cause parse error with quotes inside literal
|
||||
blocks. (Andrei, Alexander Belonosov)
|
||||
- added 'field_array' attribute to html_select_time function, documented.
|
||||
(Andrei, Michael Caplan)
|
||||
- documented {section} "max" attribute. (Monte)
|
||||
- fixed notice message in Smarty_Compiler.class.php. (Monte)
|
||||
- fixed bug with clear_cache introduced in 1.4.6, third parameter should
|
||||
default to null. (Monte)
|
||||
- updated Config_File class to support '\' path separator in OS/2. (Monte,
|
||||
Francesco Cipriani)
|
||||
- removed secure_ext setting (not used). (Monte)
|
||||
- made cache reading process more efficient. (Monte)
|
||||
- fixed bug, is_cached() now supports new 1.4.6 caching behavior. (Monte)
|
||||
- update FAQ with mailing list Reply-To header FAQ. (Monte)
|
||||
- supress error messages for fopen(), fix cache to regenerate if cache
|
||||
file is not available (i.e. cluster race condition). (Monte)
|
||||
- added index key example to QUICKSTART guide. (Monte)
|
||||
|
||||
Version 1.4.6
|
||||
-------------
|
||||
- fixed bug with {assign ...} when passing an empty value. (Monte)
|
||||
- add more warning message fixes. (Monte, Tara Johnson)
|
||||
- documentation updates. (Monte)
|
||||
- update fetch function to give proper warning when fetching a non-readable
|
||||
or non-existant file. (Monte)
|
||||
- fixed problem with newline at the end of included templates (Monte, Andrei)
|
||||
- added feature to regenerate cache if compile_check is enabled and an
|
||||
involved template or config file gets modified. (Monte)
|
||||
- added DEBUG execution times to included files: REQUIRES updated debug.tpl
|
||||
file! (Monte)
|
||||
- added support for hidden config variables that cannot be read by
|
||||
templates. (Andrei)
|
||||
- added execution time to DEBUG console, total and inserts. (Monte)
|
||||
- fixed bug where DEBUG console would not appear with cached content. (Monte)
|
||||
- added support for postfilter functions that are applied to compiled
|
||||
template right after compilation. (Andrei)
|
||||
- fixed the name of clear_compile_tpl() API function to clear_compiled_tpl.
|
||||
(Andrei)
|
||||
- added fix for removing comments so that the line numbers are reported
|
||||
correctly in case of errors. (patch from Anders Janson)
|
||||
- made html_options output xhtml compatible code. (Monte, Arnaud Limbourg)
|
||||
|
||||
Version 1.4.5
|
||||
-------------
|
||||
- update FAQ with index of questions at the top
|
||||
- update overlib to 3.50, adjust addon code so that the overlib.js
|
||||
file isn't modified, and not using the mini one. (Monte)
|
||||
- added many more options to html_select_date. (Alexander Skwar, Andrei)
|
||||
- added support for generating different compiled templates from the same
|
||||
source template. (Hans-Peter Oeri, Andrei)
|
||||
- modified Smarty to pass itself to insert functions as the second
|
||||
parameter. (Andrei)
|
||||
- modified Smarty to pass itself to prefilter functions as the second
|
||||
parameter. (Andrei)
|
||||
- fixed syntax error when including a non-existant template with security
|
||||
enabled. (Monte)
|
||||
- fixed comments handling to allow commenting out template blocks. (Andrei)
|
||||
- implemented named capture buffers, with results accessible via
|
||||
$smarty.capture.<name>. (Andrei)
|
||||
- added ability to index arrays directly by numbers. (Andrei)
|
||||
- fixed bug with SMARTY_DIR not prepended to Config_File include. (Monte)
|
||||
|
||||
Version 1.4.4
|
||||
-------------
|
||||
- fixed problem with including insecure templates with security enabled.
|
||||
(Monte)
|
||||
- numerous documentation updates. (Monte)
|
||||
- added ENT_QUOTES to escapement of html. (Monte, Sam Beckwith)
|
||||
- implemented access to request variables via auto-assigned $smarty
|
||||
template variable. (Andrei)
|
||||
- fixed a bug with parsing function arguments inside {if} tags if a comma
|
||||
was present. (Andrei)
|
||||
- updated debug console with config file vars. (Monte)
|
||||
- added SMARTY_DIR constant as an alternative to relying on include_path.
|
||||
(Monte)
|
||||
- added popup_init and popup functions (requires overlib.js). (Monte)
|
||||
- updated debug console with config file vars. (Monte)
|
||||
- added debugging url control. (Monte)
|
||||
- added 'quotes' type to escape modifier. (Monte, Mike Krus)
|
||||
- added 'total' and 'iteration' section properties. (Andrei)
|
||||
- added 'start', 'max', and 'step' section attributes/properties. (Andrei)
|
||||
- fixed a bug with security checking of functions inside {if} tags.
|
||||
(Andrei)
|
||||
- fixed a bug in Config_File that would incorrectly booleanize values that
|
||||
weren't really booleans. (Andrei)
|
||||
|
||||
Version 1.4.3
|
||||
-------------
|
||||
- added regex_replace modifier, documented. (Monte)
|
||||
- added debugging console feature and custom function assign_debug_info,
|
||||
documented. (Monte)
|
||||
- added 'scope' attribute for {config_load}, 'global' is now deprecated but
|
||||
is still supported. (Andrei)
|
||||
- reduced template symbol table pollution by moving config array into the
|
||||
class itself. (Andrei)
|
||||
- fixed a bug with passing quoted arguments to modifiers inside {if}
|
||||
statements. (Andrei, Sam Beckwith)
|
||||
- added security features for third party template editing, documented
|
||||
(Monte)
|
||||
- added assign custom function, documented. (Monte)
|
||||
- fixed bug with template header using version instead of _version. (Monte)
|
||||
- fixed a problem with putting $ followed by numbers inside {strip} and
|
||||
{/strip} tags. (Andrei)
|
||||
- fixed Config_File class to allow empty config paths (defaults to current
|
||||
directory). (Andrei)
|
||||
|
||||
Version 1.4.2
|
||||
-------------
|
||||
- move $version to internal variable, remove from docs. (Monte)
|
||||
- cleaned up compiled templates global scope by moving some variables into
|
||||
the class itself. (Andrei)
|
||||
- fixed a bug that would not allow referring to a section in the including
|
||||
file from the included file. (Andrei)
|
||||
- configs directory missing from 1.4.1 release, added back in. (Monte)
|
||||
- added windows include_path setup instructions to FAQ & QUICKSTART.
|
||||
(Monte)
|
||||
|
||||
Version 1.4.1
|
||||
-------------
|
||||
- fix LOCK_EX logic for all windows platforms (Monte)
|
||||
- fixed indexing by section properties with the new syntax. (Andrei)
|
||||
- updated Smarty to use absolute paths when requiring/including Smarty
|
||||
components. (Andrei, John Lim)
|
||||
|
||||
Version 1.4.0
|
||||
-------------
|
||||
- added {capture}{/capture} function, documented (Monte)
|
||||
- added {counter} function, documented (Monte)
|
||||
|
||||
Version 1.4.0b2
|
||||
---------------
|
||||
- fixed issue in Config_File.class with referencing blank sections (Andrei)
|
||||
- fixed problem with passing variables to included files (Andrei)
|
||||
- fixed resource path recognition for windows (Monte)
|
||||
|
||||
Version 1.4.0b1
|
||||
---------------
|
||||
- added "componentized templates" tip into documentation (Monte)
|
||||
- added {php}{/php} tags for embedding php code into templates (Monte)
|
||||
- changed default value of $show_info_header to false (Monte)
|
||||
- implemented '->' syntax for accessing properties of objects passed to the
|
||||
template. (Andrei)
|
||||
- allowed custom functions to receive Smarty object as the second
|
||||
parameter; this can be used to dynamically change template variables, for
|
||||
example. (Andrei)
|
||||
- added custom compiler functions support, register_compiler_function() and
|
||||
unregister_compiler_function() API functions. (Andrei, Ivo Jansch).
|
||||
- updated GLOBAL_ASSIGN to take SCRIPT_NAME from HTTP_SERVER_VARS
|
||||
instead of global variable. You can also assign several variables
|
||||
in one shot with an array. (Monte, Roman Neuhauser)
|
||||
- added template prefilters, register_prefilter() and
|
||||
unregister_prefilter() API functions. (Monte)
|
||||
- added RELEASE_NOTES file to distribution. (Monte)
|
||||
- moved CREDITS out of manual into its own file. (Monte)
|
||||
- added register_resource() and unregister_resource() API functions. (Monte)
|
||||
- changed the syntax of indexing template variables, thus supporting
|
||||
structures of arbitrary complexity; supplied fix_vars.php script to fix
|
||||
old syntax. (Andrei)
|
||||
- added $insert_tag_check to speed up cached pages if {insert ...} is not
|
||||
used. (Monte)
|
||||
- added $compiler_class variable to allow specifying a different compiler
|
||||
class. (Andrei)
|
||||
- changed Smarty to compile templates at runtime, allowing for arbitrary
|
||||
template resources. (Monte)
|
||||
- added fix for LOCK_EX under Windows and changed a couple of file
|
||||
permissions for security. (Monte, Fernando Nunes)
|
||||
- allow arbitrary date strings to date_format, html_select_date and
|
||||
html_select_time (Monte)
|
||||
|
||||
Version 1.3.2
|
||||
-------------
|
||||
- fixed a bug that caused some nested includes to loop infinitely. (Andrei)
|
||||
- added optional HTML header to output. (Monte)
|
||||
- significantly improved config_load performance. (Andrei)
|
||||
- added format attribute to math function. (Monte)
|
||||
- added html_select_time custom function. (Andrei)
|
||||
- fixed minor PHP warning when attempting to unset an unset variable
|
||||
(Monte)
|
||||
- added count_characters, count_words, count_sentences, count_paragraphs
|
||||
modifiers (Monte)
|
||||
|
||||
Version 1.3.1pl1
|
||||
--------------
|
||||
- bug fix, recovered missing _syntax_error function (Monte)
|
||||
|
||||
Version 1.3.1
|
||||
-------------
|
||||
- document first, last, index_prev, index_next (Monte)
|
||||
- added 'first' and 'last' section properties. (Andrei)
|
||||
- split out compiling code to separate class for faster template execution
|
||||
time (Monte)
|
||||
- fixed a couple of minor PHP warnings (Monte)
|
||||
- added and documented unregister_modifier() and unregister_function() API
|
||||
calls. (Monte)
|
||||
- added and documented 'fetch' and 'math' functions. (Monte)
|
||||
- added ability to index looped variables by section properties, e.g.
|
||||
$foo.index_prev/bar. (Andrei)
|
||||
- added index_prev and index_next section properties. (Andrei)
|
||||
- fixed issue with php executing in literal blocks. (Monte)
|
||||
|
||||
Version 1.3.0
|
||||
-------------
|
||||
- moved license from GPL to LGPL (Monte)
|
||||
- implemented workaround for PHP "feature" that eats carriage returns
|
||||
if the PHP tag is at the end of the line. (Andrei)
|
||||
- removed $allow_php, added $php_handling logic (Monte)
|
||||
- added file locking to prevent reader/writer problem. (Andrei)
|
||||
- made Smarty catch unimplemented modifiers and custom functions and output
|
||||
error messages during compilation instead of failing during run time.
|
||||
(Andrei)
|
||||
- removed short-tags at the top of the smarty scripts (Monte)
|
||||
- added register_function() and register_modifier() API calls to make
|
||||
registering stuff easier. (Andrei)
|
||||
- added template results caching capability. (Monte, Andrei)
|
||||
- added optional 'options' attribute to html_options custom function
|
||||
that allows passing associative arrays for values/output. (Andrei)
|
||||
- modifier arguments can now contain '|' and ':' characters inside quoted
|
||||
strings. (Andrei)
|
||||
|
||||
Version 1.2.2
|
||||
-------------
|
||||
- fixed bug that would not respect nested template directories and would
|
||||
put all compiled files into top-level one. (Andrei)
|
||||
- fixed bug using $PHP_VERSION instead of environment var PHP_VERSION.
|
||||
(Monte)
|
||||
- a couple small warning fixes. (Monte)
|
||||
|
||||
Version 1.2.1
|
||||
-------------
|
||||
- added $compile_dir, removed $compile_dir_ext, simplified usage. (Monte)
|
||||
- added tips & tricks chapter to documentation. (Monte)
|
||||
- misc documentation updates. (Monte)
|
||||
|
||||
Version 1.2.0
|
||||
-------------
|
||||
- updated documentation (Monte)
|
||||
- added file and line number information to syntax error messages. (Andrei)
|
||||
- added ability to index template vars by a key. (Andrei)
|
||||
|
||||
Version 1.1.0
|
||||
-------------
|
||||
- misc documentation changes, official stable release
|
||||
|
||||
Version 1.0b
|
||||
------------
|
||||
- fixed the bug that prevented using non-array values for 'loop' attribute.
|
||||
(Andrei)
|
||||
- many misc documentation changes & additions (Monte)
|
||||
|
||||
Version 1.0a
|
||||
------------
|
||||
- fixed bug that caused templates to recompile every time (Monte)
|
||||
|
||||
Version 1.0
|
||||
------------
|
||||
- initial release
|
||||
|
||||
/* vim: set et tw=64 ft=changelog: */
|
|
@ -0,0 +1,80 @@
|
|||
NAME:
|
||||
|
||||
Smarty - the PHP compiling template engine
|
||||
|
||||
VERSION: 2.6.0
|
||||
|
||||
AUTHORS:
|
||||
|
||||
Monte Ohrt <monte@ispi.net>
|
||||
Andrei Zmievski <andrei@php.net>
|
||||
|
||||
MAILING LISTS:
|
||||
|
||||
We have a few mailing lists. "general" for you to share your ideas or ask
|
||||
questions, "dev" for those interested in the development efforts of Smarty,
|
||||
and "cvs" for those that would like to track the updates made in the cvs
|
||||
repository.
|
||||
|
||||
send a blank e-mail message to:
|
||||
smarty-general-subscribe@lists.php.net (subscribe to the general list)
|
||||
smarty-general-unsubscribe@lists.php.net (unsubscribe from the general list)
|
||||
smarty-general-digest-subscribe@lists.php.net (subscribe to digest)
|
||||
smarty-general-digest-unsubscribe@lists.php.net (unsubscribe from digest)
|
||||
smarty-dev-subscribe@lists.php.net (subscribe to the dev list)
|
||||
smarty-dev-unsubscribe@lists.php.net (unsubscribe from the dev list)
|
||||
smarty-cvs-subscribe@lists.php.net (subscribe to the cvs list)
|
||||
smarty-cvs-unsubscribe@lists.php.net (unsubscribe from the cvs list)
|
||||
You can also browse the mailing list archives at
|
||||
http://marc.theaimsgroup.com/?l=smarty&r=1&w=2
|
||||
|
||||
SYNOPSIS:
|
||||
|
||||
require("Smarty.class.php");
|
||||
|
||||
$smarty = new Smarty;
|
||||
|
||||
$smarty->assign("Title","My Homepage");
|
||||
$smarty->assign("Names",array("John","Gary","Gregg","James"));
|
||||
|
||||
$smarty->display("index.tpl");
|
||||
|
||||
|
||||
DESCRIPTION:
|
||||
|
||||
What is Smarty?
|
||||
|
||||
Smarty is a template engine for PHP. Many other template engines for PHP
|
||||
provide basic variable substitution and dynamic block functionality.
|
||||
Smarty takes a step further to be a "smart" template engine, adding
|
||||
features such as configuration files, template functions, and variable
|
||||
modifiers, and making all of this functionality as easy as possible to
|
||||
use for both programmers and template designers. Smarty also converts
|
||||
the templates into PHP scripts, eliminating the need to parse the
|
||||
templates on every invocation. This makes Smarty extremely scalable and
|
||||
manageable for large application needs.
|
||||
|
||||
Some of Smarty's features:
|
||||
|
||||
* it is extremely fast
|
||||
* no template parsing overhead, only compiles once.
|
||||
* it is smart about recompiling only the template files that have
|
||||
changed.
|
||||
* the template language is remarkably extensible via the plugin
|
||||
architecture.
|
||||
* configurable template delimiter tag syntax, so you can use
|
||||
{}, {{}}, <!--{}-->, or whatever you like.
|
||||
* built-in caching of template output.
|
||||
* arbitrary template sources (filesystem, databases, etc.)
|
||||
* template if/elseif/else/endif constructs are passed to the PHP parser,
|
||||
so the if syntax can be as simple or as complex as you like.
|
||||
* unlimited nesting of sections, conditionals, etc. allowed
|
||||
* it is possible to embed PHP code right in your template files,
|
||||
although not recommended and doubtfully needed since the engine
|
||||
is so customizable.
|
||||
* and many more.
|
||||
|
||||
COPYRIGHT:
|
||||
Copyright (c) 2001,2002 ispi of Lincoln, Inc. All rights reserved.
|
||||
This software is released under the GNU Lesser General Public License.
|
||||
Please read the disclaimer at the top of the Smarty.class.php file.
|
|
@ -0,0 +1,423 @@
|
|||
2.5.0
|
||||
-----
|
||||
|
||||
Very minor adjustments since RC2, see the NEWS file for details.
|
||||
|
||||
2.5.0-RC2
|
||||
---------
|
||||
|
||||
Many fixes since the RC1 release. This one is as close to production quality as
|
||||
they come, so this will be the last release before 2.5.0. The SGML documentation
|
||||
files have also been removed from the tarball. If you want them, get them from
|
||||
the CVS repository.
|
||||
|
||||
2.5.0-RC1
|
||||
---------
|
||||
|
||||
Release Candidate 1. All $smarty vars can now be dynamic, such as
|
||||
$smarty.get.$foo. A new class function get_function_object() gets you a
|
||||
reference to an assigned object, useful within your own custom functions.
|
||||
append() can now merge as well as append with a third optional attribute. A new
|
||||
class function get_config_vars() was added, and get_template_vars() can now be
|
||||
used to get individual vars. Full variable syntax is now supported within
|
||||
double quotes via a backtick (`) syntax. Files created by smarty are now
|
||||
written to a tmp file then renamed to avoid file lock retention. html_radios,
|
||||
html_checkboxes, html_table, html_image, nl2br functions added, see the NEWS
|
||||
file for full details.
|
||||
|
||||
2.4.2
|
||||
-----
|
||||
Another point release. Added support for dynamic object reference syntax
|
||||
($foo->$bar), support for full variable syntax within quotes ("$foo[0].bar"),
|
||||
and other minor fixes. See the NEWS file for full details.
|
||||
|
||||
2.4.1
|
||||
-----
|
||||
|
||||
This is basically a point release, cleaning up a few things caught
|
||||
in the 2.4.0 release. See the NEWS file for full details.
|
||||
|
||||
2.4.0
|
||||
-----
|
||||
|
||||
Smarty now supports the ability to access objects within the templates. Two
|
||||
methods are available, one which closely follows Smartys conventions, and
|
||||
another that follows more traditional object syntax for those familiar with
|
||||
PHP.
|
||||
|
||||
The internal compiling engine has also undergone some major work. The regex
|
||||
parsing was rewritten to be much more strict, more secure and more
|
||||
maintainable. Config files are now compiled, which can speed up pages quite a
|
||||
bit that use config files extensively. Assigned variables are no longer
|
||||
extracted to PHP namespace, saving an extract call for every template. There is
|
||||
now support for applying modifiers to static values and functions. You can now
|
||||
access constants with $smarty.const.VAR. See the NEWS file for complete
|
||||
changes.
|
||||
|
||||
2.3.1
|
||||
-----
|
||||
|
||||
The mtime on compiled files will now match the source files, in the case where
|
||||
the source file may not get the current timestamp, recompiling will still work
|
||||
as expected. Proper support for open_basedir has been added, so Smarty should
|
||||
work correctly in safe mode. Added a few new features such as textformat block
|
||||
function, strip variable modifier and optgroup support for html_options. Also
|
||||
other minor bug fixes, see the Change Log.
|
||||
|
||||
2.3.0
|
||||
-----
|
||||
|
||||
Smarty now has a {debug} template function that brings up the debugging console
|
||||
right where {debug} is called, regardless of $debugging settings. This works a
|
||||
little different than turning on $debugging in the sense that it shows all the
|
||||
template variables available at the time {debug} is called, including local
|
||||
scope vars. It does not show the templates names however, since this
|
||||
executed during runtime of the template.
|
||||
|
||||
You can now supply an expire time when clearing cache or compile files. This is
|
||||
mostly useful for removing stale files via the API.
|
||||
|
||||
Plugins now stop execution upon error, instead of outputting a warning and
|
||||
continuing.
|
||||
|
||||
Two new API functions, assign_by_ref() and append_by_ref() were added. They
|
||||
allow assigning template variables by reference. This can make a significant
|
||||
performance gain, especially if you are assigning large arrays of data. PHP 5.0
|
||||
will do this implicitly, so these functions are basically workarounds.
|
||||
|
||||
Several misc bug fixes, see the Change Log for information.
|
||||
|
||||
|
||||
2.2.0
|
||||
-----
|
||||
|
||||
Smarty now allows an array of paths for the $plugin_dir class variable. The
|
||||
directories will be searched in the order they are given, so for efficiency keep
|
||||
the most-used plugins at the top. Also, absolute paths to the plugin directories are
|
||||
more efficient than relying on the PHP include_path.
|
||||
|
||||
Cache files can now be grouped with the cache_id. See the documentation under
|
||||
the new "Caching" section for details. compile_id also respects the same
|
||||
grouping syntax. The cache/compile file structure changed, so be sure to clear
|
||||
out all your cache and compile files when upgrading Smarty. Also if you are
|
||||
using PHP-accelerator, restart apache. I've seen some quirky things happen if
|
||||
the phpa files do not get cleared (known issue with phpa and parent
|
||||
class-member changes, so just clear 'em.)
|
||||
|
||||
Smarty now correctly respects the PHP include_path for $template_dir, $compile_dir,
|
||||
$cache_dir, $config_dir and $plugin_dir. Be aware that relying on the
|
||||
include_path is an overhead, try to use absolute pathnames when possible
|
||||
(or relative to working directory.)
|
||||
|
||||
Documentation has been updated and rearranged a bit. Most notably, the
|
||||
installation instructions are completely revamped, and a new Caching section
|
||||
explains Smarty's caching in detail along with the new grouping functionality.
|
||||
|
||||
Many misc. bug fixes and enhancements, see the full ChangeLog (NEWS file) for
|
||||
details.
|
||||
|
||||
2.1.1
|
||||
-----
|
||||
|
||||
There was a bug with template paths and the include_path, this has been fixed.
|
||||
Also register_outputfilter() did not work, this is fixed. A new template
|
||||
function named "cycle" has been added to the distribution, nice for cycling
|
||||
through a list (or array) of values.
|
||||
|
||||
2.1.0
|
||||
-----
|
||||
|
||||
This release has quite a few new features and fixes. Most notable are the
|
||||
introduction of block functions, so you can write plugins that work on a block
|
||||
of text with {func}{/func} notation. Also output filters were added, so you can
|
||||
apply a function against the output of your templates. This differs from the
|
||||
postfilter function, which works on the compiled template at compile time, and
|
||||
output filters work on the template output at runtime.
|
||||
|
||||
Many other features and bug fixes are noted in the NEWS file.
|
||||
|
||||
|
||||
2.0.1
|
||||
-----
|
||||
|
||||
This is a point release, fixing a few bugs and cleaning things up. A plugin
|
||||
was renamed, the dash "-" was removed from compiled template and cached file
|
||||
names. If you're upgrading, you might want to clear them out first. See the
|
||||
ChangeLog for details.
|
||||
|
||||
2.0.0
|
||||
-----
|
||||
|
||||
This release is a huge milestone for Smarty. Most notable new things are a
|
||||
plugin architecture, removal of PEAR dependency, and optimizations that
|
||||
drastically improve the performance of Smarty in most cases.
|
||||
|
||||
The plugin architecture allows modifiers, custom functions, compiler functions,
|
||||
prefilters, postfilters, resources, and insert functions 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
|
||||
-----
|
||||
|
||||
Mostly bug fixes, added a default template resource handler.
|
||||
|
||||
|
||||
1.5.1
|
||||
-----
|
||||
|
||||
Critical bug fix release. If you use caching, you'll need to upgrade.
|
||||
|
||||
|
||||
1.5.0
|
||||
-----
|
||||
|
||||
Several feature enhancements were made to this version, most notably the
|
||||
{foreach ...} command which is an alternative to {section ...} with an easier
|
||||
syntax for looping through a single array of values. Several functions were
|
||||
enhanced so that the output can be automatically assigned to a template
|
||||
variable instead of displayed (assign attribute). Cache files can now be
|
||||
controlled with a custom function as an alternative to the built-in file based
|
||||
method. Many code cleanups and bug fixed went into this release as well.
|
||||
|
||||
|
||||
1.4.6
|
||||
-----
|
||||
|
||||
The behavior with caching and compile_check has been slightly enhanced. If
|
||||
caching is enabled AND compile_check is enabled, the cache will immediately get
|
||||
regenerated if _any_ involved template or config file is updated. This imposes
|
||||
a slight performance hit because it must check all the files for changes, so be
|
||||
sure to run live sites with caching enabled and compile_check disabled for best
|
||||
performance. If you update a template or config file, simply turn on
|
||||
compile_check, load the page, then turn it back off. This will update the cache
|
||||
file with the new content. This is accomplished by maintaining a list of
|
||||
included/loaded templates and config files at the beginning of the cache file.
|
||||
Therefore it is advisable to remove all cache files after upgrading to 1.4.6
|
||||
(although not absolutely necessary, old cache files will regenerate)
|
||||
|
||||
The debug console now has script timing and array values printed. You MUST
|
||||
update your debug.tpl file with this version of Smarty. Also, the new debug.tpl
|
||||
will not work with older versions of Smarty.
|
||||
|
||||
|
||||
1.4.5
|
||||
-----
|
||||
|
||||
Mostly bug fixes and minor improvements. Added compile id for separate compiled
|
||||
versions of the same script. The directory format and filename convention for
|
||||
the files in templates_c has changed, so you may want to remove all of the
|
||||
existing ones before you upgrade.
|
||||
|
||||
|
||||
1.4.4
|
||||
-----
|
||||
|
||||
A few bug fixes, new section looping attributes and properties, debugging
|
||||
console function for control via URL, and overLib integration and access
|
||||
to request variables from within the template.
|
||||
|
||||
|
||||
1.4.3
|
||||
-----
|
||||
|
||||
This release has a few bug fixes and several enhancements. Smarty now supports
|
||||
template security for third-party template editing. These features disallow the
|
||||
ability for someone to execute commands or PHP code from the template language.
|
||||
Smarty also now has a built-in debugging console, which is a javascript pop-up
|
||||
window that displays all the included template names and assigned variables.
|
||||
|
||||
|
||||
1.4.2
|
||||
-----
|
||||
|
||||
This was mostly one bug fix with variable scoping within included templates
|
||||
and a few documentation changes and updates. See the ChangeLog file for full
|
||||
details.
|
||||
|
||||
|
||||
1.4.1
|
||||
-----
|
||||
|
||||
It seems that the EX_LOCK logic from the previous release didn't fix all the
|
||||
problems with windows platforms. Hopefully this one does. It basically
|
||||
disables file locking on windows, so there is a potential that two programs
|
||||
could write over the same file at the same time, fyi.
|
||||
|
||||
The reset is minor bug fixes, please refer to the ChangeLog file.
|
||||
|
||||
|
||||
1.4.0
|
||||
-----
|
||||
|
||||
IMPORTANT NOTICE
|
||||
|
||||
Smarty now has a new syntax for accessing elements within section loops. The
|
||||
new syntax is easier to use and nicely handles data structures of any
|
||||
complexity. Consequently, this breaks the old syntax.
|
||||
|
||||
Here is an example of the syntax change:
|
||||
|
||||
old syntax:
|
||||
{$sec1/sec2/sec3/customer.phone}
|
||||
|
||||
new syntax:
|
||||
{$customer[$sec1][$sec2][$sec3].phone}
|
||||
|
||||
The section names used to come first, followed by the variable name. Now the
|
||||
variable name always comes first, followed by the section names in brackets.
|
||||
You can access variable indexes anywhere, depending on how you passed the
|
||||
variables in.
|
||||
|
||||
To fix your current templates, we have provided a script that will adjust the
|
||||
syntax for you. Located in misc/fix_vars.php, run this script from the the
|
||||
command line, giving each template as an argument. Be sure to use absolute
|
||||
pathnames, or pathnames relative to the executing script. Probably the easiest
|
||||
way to do this is to copy the fix_vars.php script into your template directory
|
||||
and run 'php -q fix_vars.php *.tpl' Be sure you have proper write permission,
|
||||
and backup your scripts first to be safe! The examples in the 1.4.0
|
||||
documentation have been updated to reflect the changes.
|
||||
|
||||
cd /path/to/templates
|
||||
cp /path/to/fix_vars.php .
|
||||
find . -name "*.tpl" -exec php -q ./fix_vars.php {} \;
|
||||
|
||||
NEW AND IMPROVED COMPILATION PROCESS
|
||||
|
||||
Smarty 1.4.0 also has a new compilation process. Instead of compiling all the
|
||||
templates up front, it now compiles them at runtime. This has several
|
||||
advantages. First of all, there is no longer a need to have a single template
|
||||
directory. You can now have arbitrary template sources, such as multiple
|
||||
directories or even database calls. This also speeds the performance of Smarty
|
||||
when $compile_check is enabled, since it is only checking the template that is
|
||||
being executed instead of everything found in the template directory. The
|
||||
$tpl_file_ext is no longer needed, but kept for backward compatability.
|
||||
Templates can now be named anything you like with any extension.
|
||||
|
||||
MINOR FIXES
|
||||
|
||||
A workaround for LOCK_EX on Windows systems was added, and changed a couple of
|
||||
file permissions for better security on public servers.
|
||||
|
||||
$show_info_header is now defaulted to false instead of true. This header causes
|
||||
problems when displaying content other than HTML, so now you must explicitly
|
||||
set this flag to true to show the header information (or change the default in
|
||||
your copy of Smarty.)
|
||||
|
||||
Documentation is written in docbook format. I updated the docbook -> HTML
|
||||
generating software & style-sheets, and consequently the examples are no longer
|
||||
in a different background color. If anyone wants to contribute a better
|
||||
stylesheet or help with documentation, drop me a line. <monte@ispi.net>
|
||||
|
||||
CHANGES/ENHANCEMENTS/UPDATES
|
||||
|
||||
date_format, html_select_date and html_select_time used to require a unix
|
||||
timestamp as the format of the date passed into the template. Smarty is now a
|
||||
bit smarter at this. It will take a unix timestamp, a mysql timestamp, or any
|
||||
date string that is parsable by strtotime, such as 10/01/2001 or 2001-10-01,
|
||||
etc. Just give some formats a try and see what works.
|
||||
|
||||
Smarty now has template prefilters, meaning that you can run your templates
|
||||
through custom functions before they are compiled. This is good for things like
|
||||
removing unwanted comments, keeping an eye on words or functionality people are
|
||||
putting in templates, translating XML -> HTML, etc. See the register_prefilter
|
||||
documentation for more info.
|
||||
|
||||
Another addition are the so-called compiler functions. These are custom
|
||||
functions registered by the user that are executed at compilation time of the
|
||||
template. They can be used to inject PHP code or time-sensitive static content
|
||||
into the compiled template.
|
||||
|
||||
The run-time custom functions are now passed the Smarty object as the second
|
||||
parameter. This can be used, for example, to assign or clear template variables
|
||||
from inside the custom function.
|
||||
|
||||
clear_compile_dir() was added for clearing out compiled versions of your
|
||||
templates. Not something normally needed, but you may have a need for this if
|
||||
you have $compile_check set to false and you periodically update templates via
|
||||
some automated process. As of 1.4.0, uncompiled templates _always_ get
|
||||
compiled regardless of $compile_check setting, although they won't be checked
|
||||
for recompile if $compile_check is set to false.
|
||||
|
||||
You can now refer to properties of objects assigned from PHP by using the '->'
|
||||
symbol and specifying the property name after it, e.g. $foo->bar.
|
||||
|
||||
{php}{/php} tags were added to embed php into the templates. Not normally
|
||||
needed, but some circumstances may call for it. Check out the "componentized
|
||||
templates" tip in the documentation for an example.
|
||||
|
||||
{capture}{/capture} and {counter} functions were added. See the documentation
|
||||
for a complete description and examples.
|
||||
|
||||
UPGRADE NOTES
|
||||
|
||||
The format of the files created in the $compile_dir are now a bit different.
|
||||
The compiled template filename is the template resource name url-encoded.
|
||||
Therefore, all compiled files are now in the top directory of $compile_dir.
|
||||
This was done to make way for arbitrary template resources. Each compiled
|
||||
template also has a header that states what template resource was used to
|
||||
create it. From a unix command prompt, you can use "head -2 *" to see the first
|
||||
two lines of each file.
|
||||
|
||||
When upgrading to 1.4.0, you will want to clear out all your old files in the
|
||||
$compile_dir. If you have $compile_check set to false and the compiled template
|
||||
does not yet exist, it will compile it regardless of this setting. This way you
|
||||
can clear out the $compile_dir and not worry about setting $compile_check to
|
||||
true to get the inital compilation under way.
|
||||
|
||||
|
||||
1.3.2
|
||||
-----
|
||||
|
||||
Smarty now has (an optional) header prepended to the output of the Smarty
|
||||
templates. This displays the Smarty version and the date/time when the page was
|
||||
generated. This is useful for debugging your cache routines, and purely
|
||||
informational so there is evidence that the page was generated by Smarty. Set
|
||||
$show_info_header to false to disable it.
|
||||
|
||||
{config_load ...} performance was tuned by placing the loaded variables into a
|
||||
global array, so basically a config file is read from the file system and
|
||||
placed into a php array structure only once, no matter how many times it is
|
||||
called in any of the templates. The scope of the loaded variables has changed a
|
||||
bit as well. Variables loaded by config_load used to be treated as global
|
||||
variables, meaning that parent templates (templates that included the current
|
||||
template) could see them. Now the default behavior is such that loaded
|
||||
variables are only visible by the current template and child templates (all
|
||||
templates included after the {config_load ...} is called.) To mimic the
|
||||
original behavior, provide the attribute "global=yes" like so: {config_load
|
||||
file="mystuff.conf" global=yes}. Now when you load in mystuff.conf, the
|
||||
variables will be visible to parent templates (merged with any existing config
|
||||
variables.)
|
||||
|
||||
A formatting attribute was added to the {math ...} function, adding the ability
|
||||
to control the format of the output. Use the same formatting syntax as the PHP
|
||||
function sprintf().
|
||||
|
||||
{html_select_time ...} was added, a custom function that works much like
|
||||
{html_select_date ...} except it displays time elements instead of dates.
|
||||
|
||||
A few custom modifiers were added: count_characters, count_words,
|
||||
count_sentences, count_paragraphs. All pretty self-explanatory.
|
||||
|
||||
/* vim: set et: */
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue