Ressourcen
Ressourcen-Plugins stellen einen generischen Weg dar, um Smarty mit
Template-Quellen oder PHP-Skripten zu versorgen. Einige Beispiele von Ressourcen:
Datenbanken, LDAP, shared Memory, Sockets, usw.
Für jeden Ressource-Typ müssen 4 Funktionen registriert werden. Jede dieser
Funktionen erhält die verlangte Ressource als ersten Parameter und das Smarty Objekt
als letzten. Die restlichen Parameter hängen von der Funktion ab.
bool smarty_resource_name_sourcestring $rsrc_namestring &$sourceobject &$smartybool smarty_resource_name_timestampstring $rsrc_nameint &$timestampobject &$smartybool smarty_resource_name_securestring $rsrc_nameobject &$smartybool smarty_resource_name_trustedstring $rsrc_nameobject &$smarty
Die erste Funktion wird verwendet, um die Ressource zu laden. Der
zweite Parameter ist eine Variable, die via Referenz übergeben
wird und in der das Resultat gespeichert werden soll. Die Funktion
gibt true zurück, wenn der Ladevorgang erfolgreich war -
andernfalls false.
Die zweite Funktion fragt das letzte Änderungsdatum der angeforderten
Ressource (als Unix-Timestamp) ab. Der zweite Parameter ist die Variable,
welche via Referenz übergeben wird und in der das Resultat gespeichert werden soll.
Gibt true zurück, wenn das Änderungsdatum ermittelt
werden konnte und false wenn nicht.
Die dritte Funktion gibt true oder false
zurück, je nachdem ob die angeforderte Ressource als sicher bezeichnet wird
oder nicht. Diese Funktion wird nur für Template-Ressourcen verwendet,
sollte aber in jedem Fall definiert werden.
Die vierte Funktion gibt true oder false
zurück, je nachdem ob die angeforderte Ressource als vertrauenswürdig angesehen wird
oder nicht. Diese Funktion wird nur verwendet, wenn PHP-Skripte via include_php
oder insert eingebunden werden sollen und ein 'src' Attribut übergeben wurde.
Die Funktion sollte aber in jedem Fall definiert werden.
Sehen Sie dazu:
register_resource(),
unregister_resource().
Ressourcen Plugin
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* File: resource.db.php
* Type: resource
* Name: db
* Purpose: Fetches templates from a database
* -------------------------------------------------------------
*/
function smarty_resource_db_source($tpl_name, &$tpl_source, &$smarty)
{
// Datenbankabfragen machen, um '$tpl_source' das template zuzuweisen
$sql = new SQL;
$sql->query("select tpl_source
from my_table
where tpl_name='$tpl_name'");
if ($sql->num_rows) {
$tpl_source = $sql->record['tpl_source'];
return true;
} else {
return false;
}
}
function smarty_resource_db_timestamp($tpl_name, &$tpl_timestamp, &$smarty)
{
// Datenbankabfragen durchführen um '$tpl_timestamp' zuzuweisen
$sql = new SQL;
$sql->query("select tpl_timestamp
from my_table
where tpl_name='$tpl_name'");
if ($sql->num_rows) {
$tpl_timestamp = $sql->record['tpl_timestamp'];
return true;
} else {
return false;
}
}
function smarty_resource_db_secure($tpl_name, &$smarty)
{
// angenommen alle Templates seien sicher...
return true;
}
function smarty_resource_db_trusted($tpl_name, &$smarty)
{
// wird für Templates nicht verwendet
}
?>