cvs: smarty /docs/de/programmers/advanced-features advanced-features-objects.xml advanced-features-outputfilters.xml advanced-features-postfilters.xml advanced-features-prefilters.xml section-template-cache-handler-func.xml

[email protected] ("Messju Mohr") Sun, 11 Dec 2005 13:13:38 -0000
Newsgroups php.smarty.cvs
Message-ID <cvsmessju1134306818@cvsserver>
messju		Sun Dec 11 13:13:38 2005 EDT

  Modified files:              
    /smarty/docs/de/programmers/advanced-features	
                                                 	advanced-features-objects.xml 
                                                 	advanced-features-outputfilters.xml 
                                                 	advanced-features-postfilters.xml 
                                                 	advanced-features-prefilters.xml 
                                                 	section-template-cache-handler-func.xml 
  Log:
  sync with en
messju-20051211131338.txt (text/plain, 27.5 KB)
http://cvs.php.net/diff.php/smarty/docs/de/programmers/advanced-features/advanced-features-objects.xml?r1=1.2&r2=1.3&ty=u
Index: smarty/docs/de/programmers/advanced-features/advanced-features-objects.xml
diff -u smarty/docs/de/programmers/advanced-features/advanced-features-objects.xml:1.2 smarty/docs/de/programmers/advanced-features/advanced-features-objects.xml:1.3
--- smarty/docs/de/programmers/advanced-features/advanced-features-objects.xml:1.2	Fri Jul 16 14:32:29 2004
+++ smarty/docs/de/programmers/advanced-features/advanced-features-objects.xml	Sun Dec 11 13:13:38 2005
@@ -1,85 +1,112 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.2 $ -->
+<!-- $Revision: 1.3 $ -->
 <!-- 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ü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 ü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ü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änken indem Sie sie als Array als dritten
+  Registrationsparameter übergeben.
+ </para>
+ <para>
+  Normalerweise werden Parameter welche einem Objekt via Template
+  übergeben werden genau so ü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ä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ä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, übergeben wir false fü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ö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ö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:
http://cvs.php.net/diff.php/smarty/docs/de/programmers/advanced-features/advanced-features-outputfilters.xml?r1=1.2&r2=1.3&ty=u
Index: smarty/docs/de/programmers/advanced-features/advanced-features-outputfilters.xml
diff -u smarty/docs/de/programmers/advanced-features/advanced-features-outputfilters.xml:1.2 smarty/docs/de/programmers/advanced-features/advanced-features-outputfilters.xml:1.3
--- smarty/docs/de/programmers/advanced-features/advanced-features-outputfilters.xml:1.2	Fri Jul 16 14:32:29 2004
+++ smarty/docs/de/programmers/advanced-features/advanced-features-outputfilters.xml	Sun Dec 11 13:13:38 2005
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.2 $ -->
-<!-- EN-Revision: 1.1 Maintainer: andreas Status: ready -->
+<!-- $Revision: 1.3 $ -->
+<!-- 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;
-     }
+ <example>
+  <title>Ausgabefilter verwenden</title>
+  <programlisting role="php">
+<![CDATA[
+<?php
+
+// 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");
+// 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.
-     ?&gt;</programlisting>
-   </example>
+// 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:
http://cvs.php.net/diff.php/smarty/docs/de/programmers/advanced-features/advanced-features-postfilters.xml?r1=1.2&r2=1.3&ty=u
Index: smarty/docs/de/programmers/advanced-features/advanced-features-postfilters.xml
diff -u smarty/docs/de/programmers/advanced-features/advanced-features-postfilters.xml:1.2 smarty/docs/de/programmers/advanced-features/advanced-features-postfilters.xml:1.3
--- smarty/docs/de/programmers/advanced-features/advanced-features-postfilters.xml:1.2	Fri Jul 16 14:32:29 2004
+++ smarty/docs/de/programmers/advanced-features/advanced-features-postfilters.xml	Sun Dec 11 13:13:38 2005
@@ -1,38 +1,46 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.2 $ -->
-<!-- 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>
+<!-- $Revision: 1.3 $ -->
+<!-- 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ö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 übergibt der Funktion als ersten Parameter den Template-Quellcode und erwartet
+  als Rü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:
http://cvs.php.net/diff.php/smarty/docs/de/programmers/advanced-features/advanced-features-prefilters.xml?r1=1.2&r2=1.3&ty=u
Index: smarty/docs/de/programmers/advanced-features/advanced-features-prefilters.xml
diff -u smarty/docs/de/programmers/advanced-features/advanced-features-prefilters.xml:1.2 smarty/docs/de/programmers/advanced-features/advanced-features-prefilters.xml:1.3
--- smarty/docs/de/programmers/advanced-features/advanced-features-prefilters.xml:1.2	Fri Jul 16 14:32:29 2004
+++ smarty/docs/de/programmers/advanced-features/advanced-features-prefilters.xml	Sun Dec 11 13:13:38 2005
@@ -1,39 +1,50 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.2 $ -->
-<!-- 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
+<!-- $Revision: 1.3 $ -->
+<!-- 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ü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 übergibt der Funktion als ersten Parameter den Template-Quellcode und erwartet
+  als Rü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:
http://cvs.php.net/diff.php/smarty/docs/de/programmers/advanced-features/section-template-cache-handler-func.xml?r1=1.2&r2=1.3&ty=u
Index: smarty/docs/de/programmers/advanced-features/section-template-cache-handler-func.xml
diff -u smarty/docs/de/programmers/advanced-features/section-template-cache-handler-func.xml:1.2 smarty/docs/de/programmers/advanced-features/section-template-cache-handler-func.xml:1.3
--- smarty/docs/de/programmers/advanced-features/section-template-cache-handler-func.xml:1.2	Fri Jul 16 14:32:29 2004
+++ smarty/docs/de/programmers/advanced-features/section-template-cache-handler-func.xml	Sun Dec 11 13:13:38 2005
@@ -1,142 +1,146 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.2 $ -->
-<!-- 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>
+<!-- $Revision: 1.3 $ -->
+<!-- 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önnen Sie
+  eine eigene Cache-Handler Funktion zum lesen, schreiben und lö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
+   übergeben: 'read', 'write' und 'clear'. Als zweiter Parameter
+   wird das Smarty-Objekt übergeben, als dritter der gecachte Inhalt. Bei einem
+   'write' übergibt Smarty den gecachten Inhalt, bei 'read' übergibt Smarty die
+   Variable als Referenz und erwartet, dass Ihre Funktion die Inhalte zuweist.
+   Bei 'clear' können Sie eine dummy-Variable übergeben. Als vierter Parameter
+   wird der Template-Name übergeben (verwendet bei 'write'/'read'), als fü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ü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öschen
+      if(empty($cache_id) &amp;&amp; empty($compile_id) &amp;&amp; empty($tpl_file)) {
+	 
+	 // alle lö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: