Recursos (Resources)
Os plugins de Recursos são como uma forma genérica de fornecer códigos fontes de template
ou componentes de script PHP para a Smarty. Alguns exemplos de recursos:
banco de dados, LDAP, memória compartilhada, sockets, e assim por diante.
Há um total de 4 funções que precisam estar registradas
para cada tipo de recurso. Cada função receberá
o recurso requisitado como o primeiro parâmetro e o objeto da Smarty como o último parâmetro. O resto
dos parâmetros dependem da função.
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
A primeira função deve devolver o recurso. Seu segundo parâmetro é uma variável passada por
referência onde o resultado seria armazenado.
A função deve retornar true se
ela está apta a devolver com sucesso o recurso e
caso contrário retorna false.
A segunda função deve devolver a última modificação do
recurso requisitado (como um timestamp Unix).
O segundo parâmetro é uma variável passada por referência onde o timestamp seria armazenado.
A função deve retornar true
se o timestamp poderia ser determinado com sucesso,
e caso contrário retornaria false.
A terceira função deve retornar true ou
false, dependendo do recurso requisitado
está seguro ou não. Esta função é usada
apenas para recursos de template mas ainda assim seria definida.
A quarta função deve retornar true
ou false, dependendo
do recurso requisitado ser confiável ou não.
Esta função é usada apenas para componentes de
script PHP requisitados pelas tags include_php ou
insert com o atributo src.
Entretanto, ela ainda assim mesmo seria definida para os recursos de template.
Veja também:
register_resource(),
unregister_resource().
Plugin resource (recurso)
<?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)
{
// do database call here to fetch your template,
// populating $tpl_source
$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)
{
// faz o banco de dados chamar aqui para preencher $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)
{
// assume que todos os templates são seguros
return true;
}
function smarty_resource_db_trusted($tpl_name, &$smarty)
{
// não usado para templates
}
?>