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

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: andreas Status: ready -->
<!-- EN-Revision: 1.2 Maintainer: andreas Status: ready -->
<sect1 id="advanced.features.outputfilters">
<title>Ausgabefilter</title>
<para>
@@ -19,29 +19,31 @@
Smarty &uuml;bergibt der Funktion als ersten Parameter die Template-Ausgabe und erwartet
als R&uuml;ckgabewert die bearbeitete Ausgabe.
</para>
<example>
<title>Ausgabefilter verwenden</title>
<programlisting>
&lt;?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");
<example>
<title>Ausgabefilter verwenden</title>
<programlisting role="php">
<![CDATA[
<?php
// von nun an erhalten alle ausgegebenen e-mail Adressen einen
// einfach Schutz vor Spambots.
?&gt;</programlisting>
</example>
// f<>gen Sie folgende Zeilen in Ihre Applikation ein
function protect_email($tpl_output, &$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
// einfach Schutz vor Spambots.
?>
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:

View File

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

View File

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

View File

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