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