Risorse
I plugin risorsa vanno considerati un modo generico di fornire sorgenti
di template o script PHP a Smarty. Alcuni esempi di risorse:
database, directory LDAP, memorie condivisse, socket, e così via.
Per ogni tipo di risorsa deve essere registrato un totale di 4 funzioni.
Ogni funzione riceverà la risorsa richiesta come primo parametro e l'oggetto
Smarty come ultimo parametro. Il resto dei parametri dipende dalla
funzione.
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
Lo scopo della prima funzione è di recuperare la risorsa. Il suo
secondo parametro è una variabile passata per riferimento nella
quale memorizzare il risultato. Ci si aspetta che la funzione
restituisca true se è riuscita a recuperare
la risorsa e false nel caso opposto.
Lo scopo della seconda funzione è di indicare il momento dell'ultima
modifica effettuata sulla risorsa richiesta (nel formato timestamp
UNIX). Il secondo parametro è una variabile passata per riferimento
nella quale memorizzare il timestamp. Ci si aspetta che la funzione
restituisca true se è riuscita a determinare il
timestamp, e false nel caso opposto.
La terza funzione deve restituire true o
false, a seconda che la risorsa richiesta sia
sicura o no. Questa funzione è usata solo per risorse di template ma
deve ancora essere definita.
La quarta funzione deve restituire true o
false, a seconda che la risorsa richiesta sia
considerata affidabile o no. Questa funzione è usata solo per script
PHP richiesti con i tag include_php o
insert con l'attributo src.
Comunque, deve ancora essere definita per le risorse di template.
Vedere anche
register_resource(),
unregister_resource().
plugin risorsa
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)
{
// fate qui la chiamata al db per popolare $tpl_timestamp.
$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)
{
// diciamo che tutti i template sono sicuri
return true;
}
function smarty_resource_db_trusted($tpl_name, &$smarty)
{
// non si usa per i template
}
?>
]]>