sync with en

This commit is contained in:
messju
2005-12-11 13:13:38 +00:00
parent 95861c7804
commit 8bcf265ae3
5 changed files with 335 additions and 283 deletions

View File

@@ -1,85 +1,112 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: andreas Status: ready --> <!-- EN-Revision: 1.1 Maintainer: andreas Status: ready -->
<sect1 id="advanced.features.objects"> <sect1 id="advanced.features.objects">
<title>Objekte</title> <title>Objekte</title>
<para> <para>
Smarty erlaubt es, auf PHP Objekt durch das Template zuzugreifen. Daf&uuml;r gibt es Smarty erlaubt es, auf <ulink
zwei Wege. Der erste ist, Objekte zu registrieren und wie auf eine eigene Funktion zuzugreifen. url="&url.php-manual;object">PHP-Objekte</ulink> durch das Template
Der andere Weg ist, das Objekt dem Template zuzuweisen und darauf wie auf andere Variablen zuzugreifen. Daf<61>r gibt es zwei Wege. Der erste ist, Objekte zu
zuzugreifen. Die erste Methode hat eine nettere Template Syntax und ist sicherer da der Zugriff <link linkend="api.register.object">registrieren</link> und wie auf
auf ein registriertes Objekt mit Sicherheitseinstellungen kontrolliert werden kann. Der Nachteil eine <link linkend="language.custom.functions">eigene
ist, dass registrierte Objekte nicht in Loops verwendet werden k&ouml;nnen. Welchen Weg Sie einschlagen Funktion</link> zuzugreifen. Der andere Weg ist, das Objekt dem
wird von Ihren Bed&uuml;rfnissen definiert, die erste Methode ist jedoch zu bevorzugen. Template mit <link linkend="api.assign">assign()</link> zuzuweisen
</para> und darauf wie auf andere Variablen zuzugreifen. Die erste Methode
<para> hat eine nettere Template Syntax und ist sicherer da der Zugriff auf
Wenn die Sicherheitsfunktionen eingeschaltet sind, k&ouml;nnen keine private Methoden (solche die einen '_'-Prefix tragen) ein registriertes Objekt mit Sicherheitseinstellungen kontrolliert
aufgerufen werden. Wenn eine Methode und eine Eigeschaft mit dem gleichen Namen existieren wird die Methode werden kann. Der Nachteil ist, dass <20>ber registrierte Objekte nicht
verwendet. in einer Schlaufe gelaufen werden kann und, dass es nicht m<>glich
</para> ist, Arrays registrierten Objekten anzulegen. Welchen Weg Sie
<para> einschlagen wird von Ihren Bed<65>rfnissen definiert, die erste Methode
Sie k&ouml;nnen den Zugriff auf Methoden und Eigenschaften einschr&auml;nken ist jedoch zu bevorzugen.
indem Sie sie als Array als dritten Registrationsparameter &uuml;bergeben. </para>
</para> <para>
<para> Wenn die <link
Normalerweise werden Parameter welche einem Objekt via Template &uuml;bergeben linkend="variable.security">Sicherheitsfunktionen</link>
werden genau so &uuml;bergeben wie dies bei normalen eigenen Funktionen der Fall ist. eingeschaltet sind, k<>nnen keine private Methoden (solche die einen
Das erste Objekt ist ein assoziatives Array und das zweite das Smarty Objekt selbst. '_'-Prefix tragen) aufgerufen werden. Wenn eine Methode und eine
Wenn Sie die Parameter einzeln erhalten m&ouml;chten k&ouml;nnen Sie den vierten Eigeschaft mit dem gleichen Namen existieren wird die Methode
Parameter auf FALSE setzen. verwendet.
</para> </para>
<para> <para>
Der optionale f&uuml;nfte Parameter hat nur einen Effekt wenn Sie k<>nnen den Zugriff auf Methoden und Eigenschaften
<parameter>format</parameter> = <literal>true</literal> ist und eine Liste von einschr<EFBFBD>nken indem Sie sie als Array als dritten
Methoden enth&auml;lt die als Block verarbeitet werden sollen. Registrationsparameter <20>bergeben.
Das bedeutet, dass solche Methoden ein schliessendes Tag im Template </para>
enthalten m&uuml;ssen (<literal>{foobar->meth2}...{/foobar->meth2}</literal>) <para>
und die Parameter zu den Funktionen die selbe Syntax haben wie block-function-plugins: Normalerweise werden Parameter welche einem Objekt via Template
sie erhalten also die 4 Parameter <EFBFBD>bergeben werden genau so <20>bergeben wie dies bei normalen <link
<parameter>$params</parameter>, linkend="language.custom.functions">eigenen Funktionen</link> der
<parameter>$content</parameter>, Fall ist. Das erste Objekt ist ein assoziatives Array und das
<parameter>&amp;$smarty</parameter> und zweite das Smarty Objekt selbst. Wenn Sie die Parameter einzeln
<parameter>&amp;$repeat</parameter>, erhalten m<>chten k<>nnen Sie den vierten Parameter auf
und verhalten sich auch sonst wie block-function-plugins. <literal>false</literal> setzen.
</para> </para>
<example> <para>
<title>registierte oder zugewiesene Objekte verwenden</title> Der optionale f<>nfte Parameter hat nur einen Effekt wenn
<programlisting> <parameter>format</parameter> = <literal>true</literal> ist und eine
&lt;?php Liste von Methoden enth<74>lt die als Block verarbeitet werden sollen.
// das objekt Das bedeutet, dass solche Methoden ein schliessendes Tag im Template
enthalten m<>ssen
(<literal>{foobar->meth2}...{/foobar->meth2}</literal>) und die
Parameter zu den Funktionen die selbe Syntax haben wie
block-function-plugins: sie erhalten also die 4 Parameter
<parameter>$params</parameter>,
<parameter>$content</parameter>,
<parameter>&amp;$smarty</parameter> und
<parameter>&amp;$repeat</parameter>,
und verhalten sich auch sonst wie block-function-plugins.
</para>
<example>
<title>registierte oder zugewiesene Objekte verwenden</title>
<programlisting role="php">
<![CDATA[
<?php
// Das Objekt
class My_Object { class My_Object {
function meth1($params, &amp;$smarty_obj) { function meth1($params, &$smarty_obj) {
return "meine meth1"; return "meine meth1";
} }
} }
$myobj = new My_Object; $myobj = new My_Object;
// objekt registrieren (referenz) // Objekt registrieren (referenz)
$smarty->register_object("foobar",$myobj); $smarty->register_object("foobar",$myobj);
// zugriff auf methoden und eigeschaften einschr&auml;nken // Zugriff auf Methoden und Eigeschaften einschr<EFBFBD>nken
$smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1')); $smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1'));
// wenn wir das traditionelle parameter format verwenden wollen, &uuml;bergeben wir false f&uuml;r den parameter format // wenn wir das traditionelle Parameterformat verwenden wollen, <EFBFBD>bergeben wir false f<EFBFBD>r den Parameter format
$smarty->register_object("foobar",$myobj,null,false); $smarty->register_object("foobar",$myobj,null,false);
// objekte zuweisen (auch via referenz m&ouml;glich) // Objekte zuweisen (auch via Referenz m<EFBFBD>glich)
$smarty->assign_by_ref("myobj", $myobj); $smarty->assign_by_ref("myobj", $myobj);
$smarty->display("index.tpl"); $smarty->display('index.tpl');
?&gt; ?>
]]>
TEMPLATE: </programlisting>
<para>
{* zugriff auf ein registriertes objekt *} Und hier das dazugeh<65>rige index.tpl:
</para>
<programlisting>
<![CDATA[
{* Zugriff auf ein registriertes objekt *}
{foobar->meth1 p1="foo" p2=$bar} {foobar->meth1 p1="foo" p2=$bar}
{* ausgabe zuweisen *} {* Ausgabe zuweisen *}
{foobar->meth1 p1="foo" p2=$bar assign="output"} {foobar->meth1 p1="foo" p2=$bar assign="output"}
ausgabe war: {$output} ausgabe war: {$output}
{* auf unser zugewiesenes objekt zugreiffen *} {* auf unser zugewiesenes Objekt zugreifen *}
{$myobj->meth1("foo",$bar)}</programlisting> {$myobj->meth1("foo",$bar)}
</example> ]]>
</programlisting>
</example>
<para>
Siehe auch <link
linkend="api.register.object">register_object()</link> und <link
linkend="api.assign">assign()</link>
</para>
</sect1> </sect1>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
Local variables: Local variables:

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: andreas Status: ready --> <!-- EN-Revision: 1.2 Maintainer: andreas Status: ready -->
<sect1 id="advanced.features.outputfilters"> <sect1 id="advanced.features.outputfilters">
<title>Ausgabefilter</title> <title>Ausgabefilter</title>
<para> <para>
@@ -19,29 +19,31 @@
Smarty &uuml;bergibt der Funktion als ersten Parameter die Template-Ausgabe und erwartet Smarty &uuml;bergibt der Funktion als ersten Parameter die Template-Ausgabe und erwartet
als R&uuml;ckgabewert die bearbeitete Ausgabe. als R&uuml;ckgabewert die bearbeitete Ausgabe.
</para> </para>
<example> <example>
<title>Ausgabefilter verwenden</title> <title>Ausgabefilter verwenden</title>
<programlisting> <programlisting role="php">
&lt;?php <![CDATA[
<?php
// f&uuml;gen Sie folgende Zeilen in Ihre Applikation ein
function protect_email($tpl_output, &amp;$smarty)
{
$tpl_output =
preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
'$1%40$2', $tpl_output);
return $tpl_output;
}
// Ausgabefilter registrieren
$smarty->register_outputfilter("protect_email");
$smarty->display("index.tpl");
// von nun an erhalten alle ausgegebenen e-mail Adressen einen // f<>gen Sie folgende Zeilen in Ihre Applikation ein
// einfach Schutz vor Spambots. function protect_email($tpl_output, &$smarty)
?&gt;</programlisting> {
</example> $tpl_output = preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
'$1%40$2', $tpl_output);
return $tpl_output;
}
// Ausgabefilter registrieren
$smarty->register_outputfilter("protect_email");
$smarty->display("index.tpl");
// von nun an erhalten alle ausgegebenen e-mail Adressen einen
// einfach Schutz vor Spambots.
?>
]]>
</programlisting>
</example>
</sect1> </sect1>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
Local variables: Local variables:

View File

@@ -1,38 +1,46 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: andreas Status: ready --> <!-- EN-Revision: 1.4 Maintainer: andreas Status: ready -->
<sect1 id="advanced.features.postfilters"> <sect1 id="advanced.features.postfilters">
<title>'post'-Filter</title> <title>Postfilter</title>
<para> <para>
Template 'post'-Filter sind Filter, welche auf das Template nach dessen Kompilierung Template Postfilter sind Filter, welche auf das Template nach dessen Kompilierung
angewendet werden. 'post'-Filter k&ouml;nnen auf verschiedene Arten angewendet werden. Postfilter k<EFBFBD>nnen auf verschiedene Arten
geladen werden. Man kann sie <link linkend="api.register.prefilter">registrieren</link>, geladen werden. Man kann sie <link linkend="api.register.prefilter">registrieren</link>,
aus dem Plugin-Verzeichnis mit <link linkend="api.load.filter">load_filter()</link> laden aus dem Plugin-Verzeichnis mit <link linkend="api.load.filter">load_filter()</link> laden
oder <link linkend="variable.autoload.filters">$autoload_filters</link> verwenden. oder <link linkend="variable.autoload.filters">$autoload_filters</link> verwenden.
Smarty &uuml;bergibt der Funktion als ersten Parameter den Template-Quellcode und erwartet Smarty <EFBFBD>bergibt der Funktion als ersten Parameter den Template-Quellcode und erwartet
als R&uuml;ckgabewert den bearbeiteten Quellcode. als R<EFBFBD>ckgabewert den bearbeiteten Quellcode.
</para> </para>
<example> <example>
<title>Template 'post'-Filter verwenden</title> <title>Template Postfilter verwenden</title>
<programlisting> <programlisting>
&lt;?php <![CDATA[
<?php
// f&uuml;gen Sie folgende Zeilen in Ihre Applikation ein
function add_header_comment($tpl_source, &amp;$smarty) // f<>gen Sie folgende Zeilen in Ihre Applikation ein
{ function add_header_comment($tpl_source, &$smarty)
return "&lt;?php echo \"&lt;!-- Created by Smarty! --&gt;\n\" ?&gt;\n".$tpl_source; {
} return "<?php echo \"<!-- Created by Smarty! -->\n\" ?>\n".$tpl_source;
}
// registrieren Sie den 'post'-Filter // registrieren Sie den Postfilter
$smarty->register_postfilter("add_header_comment"); $smarty->register_postfilter("add_header_comment");
$smarty->display("index.tpl"); $smarty->display("index.tpl");
?&gt; ?>
{* kompiliertes Smarty Template 'index.tpl' *} {* kompiliertes Smarty Template 'index.tpl' *}
&lt;!-- Created by Smarty! --&gt; <!-- Created by Smarty! -->
{* Rest des Template Inhalts... *}</programlisting> {* Rest des Template Inhalts... *}
</example> ]]>
</programlisting>
</example>
<para>
Sie auch <link
linkend="api.register.postfilter">register_postfilter()</link>,
<link linkend="advanced.features.prefilters">Prefilter</link> und
<link linkend="api.load.filter">load_filter()</link>
</para>
</sect1> </sect1>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
Local variables: Local variables:

View File

@@ -1,39 +1,50 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: andreas Status: ready --> <!-- EN-Revision: 1.3 Maintainer: andreas Status: ready -->
<sect1 id="advanced.features.prefilters"> <sect1 id="advanced.features.prefilters">
<title>'pre'-Filter</title> <title>Prefilter</title>
<para> <para>
Template 'pre'-Filter sind Filter, welche auf das Template vor dessen Kompilierung Template Prefilter sind Filter, welche auf das Template vor dessen Kompilierung
angewendet werden. Dies ist n&uuml;tzlich, um zum Beispiel Kommentare zu entfernen angewendet werden. Dies ist n<EFBFBD>tzlich, um zum Beispiel Kommentare zu entfernen
oder um den Inhalt des Templates zu analysieren. 'pre'-Filter k&ouml;nnen auf verschiedene oder um den Inhalt des Templates zu analysieren. Prefilter k<>nnen auf verschiedene
Arten geladen werden. Man kann sie <link linkend="api.register.prefilter">registrieren</link>, Arten geladen werden. Man kann sie <link linkend="api.register.prefilter">registrieren</link>,
aus dem Plugin-Verzeichnis mit <link linkend="api.load.filter">load_filter()</link> laden aus dem Plugin-Verzeichnis mit <link linkend="api.load.filter">load_filter()</link> laden
oder <link linkend="variable.autoload.filters">$autoload_filters</link> verwenden. oder <link linkend="variable.autoload.filters">$autoload_filters</link> verwenden.
Smarty &uuml;bergibt der Funktion als ersten Parameter den Template-Quellcode und erwartet Smarty <EFBFBD>bergibt der Funktion als ersten Parameter den Template-Quellcode und erwartet
als R&uuml;ckgabewert den bearbeiteten Quellcode. als R<EFBFBD>ckgabewert den bearbeiteten Quellcode.
</para> </para>
<example> <example>
<title>Template 'pre'-Filter verwenden</title> <title>Template Prefilter verwenden</title>
<programlisting> <para>
&lt;?php Dieser Prefiler entfernt alle Kommentare aus dem Template-Quelltext
</para>
<programlisting>
<![CDATA[
<?php
// f&uuml;gen Sie folgende Zeilen in Ihre Applikation ein // f<>gen Sie folgende Zeilen in Ihre Applikation ein
function remove_dw_comments($tpl_source, &amp;$smarty) function remove_dw_comments($tpl_source, &$smarty)
{ {
return preg_replace("/&lt;!--#.*--&gt;/U","",$tpl_source); return preg_replace("/<!--#.*-->/U",'',$tpl_source);
} }
// registrieren Sie den Prefilter
$smarty->register_prefilter("remove_dw_comments");
$smarty->display("index.tpl");
?>
{* Smarty Template 'index.tpl' *}
<!--# diese Zeile wird vom Prefilter entfernt-->
// registrieren Sie den 'pre'-Filter ]]>
$smarty->register_prefilter("remove_dw_comments"); </programlisting>
$smarty->display("index.tpl"); </example>
?&gt; <para>
Sie auch <link
{* Smarty Template 'index.tpl' *} linkend="api.register.prefilter">register_prefilter()</link>,
<link linkend="advanced.features.postfilters">Postfilter</link> und
&lt;!--# diese Zeile wird vom 'pre'-Filter entfernt--&gt;</programlisting> <link linkend="api.load.filter">load_filter()</link>
</example> </para>
</sect1> </sect1>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
Local variables: Local variables:

View File

@@ -1,142 +1,146 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.2 Maintainer: andreas Status: ready --> <!-- EN-Revision: 1.3 Maintainer: andreas Status: ready -->
<sect1 id="section.template.cache.handler.func"> <sect1 id="section.template.cache.handler.func">
<title>Cache Handler Funktion</title> <title>Cache Handler Funktion</title>
<para> <para>
Als Alternative zum normalen dateibasierten Caching-Mechanismus k&ouml;nnen Sie Als Alternative zum normalen dateibasierten Caching-Mechanismus k<EFBFBD>nnen Sie
eine eigene Cache-Handler Funktion zum lesen, schreiben und l&ouml;schen von eine eigene Cache-Handler Funktion zum lesen, schreiben und l<EFBFBD>schen von
Cache-Dateien definieren. Cache-Dateien definieren.
</para> </para>
<para> <para>
Schreiben Sie eine Funktion in Ihrer Applikation, die Smarty als Schreiben Sie eine Funktion in Ihrer Applikation, die Smarty als
Cache-Handler verwenden soll und weisen Sie deren Name der Variable Cache-Handler verwenden soll und weisen Sie deren Name der Variable
<link linkend="variable.cache.handler.func">$cache_handler_func</link> zu. <link linkend="variable.cache.handler.func">$cache_handler_func</link> zu.
Smarty wird von da an Ihre Funktion zur Bearbeitung des Caches verwenden. Smarty wird von da an Ihre Funktion zur Bearbeitung des Caches verwenden.
Als erster Parameter wird die 'action' mit einem der folgendende Werte Als erster Parameter wird die 'action' mit einem der folgendende Werte
&uuml;bergeben: 'read', 'write' und 'clear'. Als zweiter Parameter <EFBFBD>bergeben: 'read', 'write' und 'clear'. Als zweiter Parameter
wird das Smarty-Objekt &uuml;bergeben, als dritter der gecachte Inhalt. Bei einem wird das Smarty-Objekt <EFBFBD>bergeben, als dritter der gecachte Inhalt. Bei einem
'write' &uuml;bergibt Smarty den gecachten Inhalt, bei 'read' &uuml;bergibt Smarty die 'write' <EFBFBD>bergibt Smarty den gecachten Inhalt, bei 'read' <EFBFBD>bergibt Smarty die
Variable als Referenz und erwartet, dass Ihre Funktion die Inhalte zuweist. Variable als Referenz und erwartet, dass Ihre Funktion die Inhalte zuweist.
Bei 'clear' k&ouml;nnen Sie eine dummy-Variable &uuml;bergeben. Als vierter Parameter Bei 'clear' k<EFBFBD>nnen Sie eine dummy-Variable <EFBFBD>bergeben. Als vierter Parameter
wird der Template-Name &uuml;bergeben (verwendet bei 'write'/'read'), als f&uuml;nfter wird der Template-Name <EFBFBD>bergeben (verwendet bei 'write'/'read'), als f<EFBFBD>nfter
Parameter die 'cache_id' (optional) und als sechster die 'compile_id' (auch optional). Parameter die 'cache_id' (optional) und als sechster die 'compile_id' (auch optional).
</para> </para>
<example> <para>
<title>Beispiel mit einer MySQL Datenbank als Datenquelle</title> Der letzte Parameter (<parameter>$exp_time</parameter>) wurde in
<programlisting> Smarty-2.6.0 hinzugef<65>gt.
</para>
<example>
<title>Beispiel mit einer MySQL Datenbank als Datenquelle</title>
<programlisting role="php">
<![CDATA[ <![CDATA[
<?php <?php
/* /*
Beispiel Anwendung:
Beispiel Anwendung:
include('Smarty.class.php');
include('mysql_cache_handler.php'); include('Smarty.class.php');
include('mysql_cache_handler.php');
$smarty = new Smarty;
$smarty-&gt;cache_handler_func = 'mysql_cache_handler'; $smarty = new Smarty;
$smarty->cache_handler_func = 'mysql_cache_handler';
$smarty-&gt;display('index.tpl');
$smarty->display('index.tpl');
die Datenbank hat folgendes Format: die Datenbank hat folgendes Format:
create database SMARTY_CACHE; create database SMARTY_CACHE;
create table CACHE_PAGES( create table CACHE_PAGES(
CacheID char(32) PRIMARY KEY, CacheID char(32) PRIMARY KEY,
CacheContents MEDIUMTEXT NOT NULL CacheContents MEDIUMTEXT NOT NULL
); );
*/ */
function mysql_cache_handler($action, &amp;$smarty_obj, &amp;$cache_content, $tpl_file=null, $cache_id=null, $compile_id=null) function mysql_cache_handler($action, &amp;$smarty_obj, &amp;$cache_content, $tpl_file=null, $cache_id=null, $compile_id=null)
{ {
// Datenbank Host, Benutzer und Passwort festlegen // Datenbank Host, Benutzer und Passwort festlegen
$db_host = 'localhost'; $db_host = 'localhost';
$db_user = 'myuser'; $db_user = 'myuser';
$db_pass = 'mypass'; $db_pass = 'mypass';
$db_name = 'SMARTY_CACHE'; $db_name = 'SMARTY_CACHE';
$use_gzip = false; $use_gzip = false;
// enmalige 'cache_id' erzeugen
// enmalige 'cache_id' erzeugen $CacheID = md5($tpl_file.$cache_id.$compile_id);
$CacheID = md5($tpl_file.$cache_id.$compile_id);
if(! $link = mysql_pconnect($db_host, $db_user, $db_pass)) {
if(! $link = mysql_pconnect($db_host, $db_user, $db_pass)) { $smarty_obj->_trigger_error_msg("cache_handler: could not connect to database");
$smarty_obj-&gt;_trigger_error_msg("cache_handler: could not connect to database"); return false;
return false; }
} mysql_select_db($db_name);
mysql_select_db($db_name);
switch ($action) {
switch ($action) { case 'read':
case 'read':
// Cache aus der Datenbank lesen
// Cache aus der Datenbank lesen $results = mysql_query("select CacheContents from CACHE_PAGES where CacheID='$CacheID'");
$results = mysql_query("select CacheContents from CACHE_PAGES where CacheID='$CacheID'"); if(!$results) {
if(!$results) { $smarty_obj->_trigger_error_msg("cache_handler: query failed.");
$smarty_obj-&gt;_trigger_error_msg("cache_handler: query failed."); }
} $row = mysql_fetch_array($results,MYSQL_ASSOC);
$row = mysql_fetch_array($results,MYSQL_ASSOC);
if($use_gzip &amp;&amp; function_exists("gzuncompress")) {
if($use_gzip &amp;&amp; function_exists("gzuncompress")) { $cache_contents = gzuncompress($row["CacheContents"]);
$cache_contents = gzuncompress($row["CacheContents"]); } else {
} else { $cache_contents = $row["CacheContents"];
$cache_contents = $row["CacheContents"]; }
} $return = $results;
$return = $results; break;
break;
case 'write': case 'write':
// Cache in Datenbank speichern // Cache in Datenbank speichern
if($use_gzip &amp;&amp; function_exists("gzcompress")) { if($use_gzip &amp;&amp; function_exists("gzcompress")) {
// compress the contents for storage efficiency // compress the contents for storage efficiency
$contents = gzcompress($cache_content); $contents = gzcompress($cache_content);
} else { } else {
$contents = $cache_content; $contents = $cache_content;
} }
$results = mysql_query("replace into CACHE_PAGES values( $results = mysql_query("replace into CACHE_PAGES values(
'$CacheID', '$CacheID',
'".addslashes($contents)."') '".addslashes($contents)."')
"); ");
if(!$results) { if(!$results) {
$smarty_obj-&gt;_trigger_error_msg("cache_handler: query failed."); $smarty_obj->_trigger_error_msg("cache_handler: query failed.");
} }
$return = $results; $return = $results;
break; break;
case 'clear': case 'clear':
// Cache Informationen l&ouml;schen // Cache Informationen l<EFBFBD>schen
if(empty($cache_id) &amp;&amp; empty($compile_id) &amp;&amp; empty($tpl_file)) { if(empty($cache_id) &amp;&amp; empty($compile_id) &amp;&amp; empty($tpl_file)) {
// alle l&ouml;schen // alle l<EFBFBD>schen
$results = mysql_query("delete from CACHE_PAGES"); $results = mysql_query("delete from CACHE_PAGES");
} else { } else {
$results = mysql_query("delete from CACHE_PAGES where CacheID='$CacheID'"); $results = mysql_query("delete from CACHE_PAGES where CacheID='$CacheID'");
} }
if(!$results) { if(!$results) {
$smarty_obj-&gt;_trigger_error_msg("cache_handler: query failed."); $smarty_obj->_trigger_error_msg("cache_handler: query failed.");
} }
$return = $results; $return = $results;
break; break;
default: default:
// Fehler, unbekannte 'action' // Fehler, unbekannte 'action'
$smarty_obj-&gt;_trigger_error_msg("cache_handler: unknown action \"$action\""); $smarty_obj->_trigger_error_msg("cache_handler: unknown action \"$action\"");
$return = false; $return = false;
break; break;
} }
mysql_close($link); mysql_close($link);
return $return; return $return;
} }
?> ?>
]]> ]]>
</programlisting> </programlisting>
</example> </example>
</sect1> </sect1>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
Local variables: Local variables: