Fuentes

Las fuentes de los plugins son como una forma generica de suministrar código fuente de template o componentes de script PHP al Smarty. Algunos ejemplos de fuentes: base de datos, LDAP, memoria compartida, sockets, etc.

Existe un total de 4 funciones que necesitan estar registradas para cada tipo de fuente. Cada función recibirá el fuente requerido como primer parámetro y el objeto de Smarty como ultimo parámetro. El resto de los parámetros dependen de la función.

bool smarty_resource_name_source (string $rsrc_name, string &$source, object &$smarty)

bool smarty_resource_name_timestamp (string $rsrc_name, int &$timestamp, object &$smarty)

bool smarty_resource_name_secure (string $rsrc_name, object &$smarty)

bool smarty_resource_name_trusted (string $rsrc_name, object &$smarty)

La primera función debe devolver el recurso. Su segundo parámetro es una variable pasada por referencia donde el resultado debe ser almacenado. La función debe retornar true si esta pudo recuperar satisfactoriamente el recurso y en caso contrario retornara false.

La segunda función debe devolver la ultima modificación del recurso requerido (como un timestamp Unix). El segundo parámetro es una variable pasada por referencia donde el timestamp sera almacenado. La función debe retornar true si el timestamp pudo ser determinado satisfactoriamente, y en caso contrario retornara false.

La tercera función debe retornar true o false, dependiendo si el recurso requerido es seguro o no. Esta función es usada solo para recursos de template pero esta debe ser definida.

La cuarta función debe retornar true o false, dependiendo si el recurso requerido es seguro o no. Esta función es usada solo para componetes de script de PHP solicitado por las etiquetas include_php o insert con el atributo src. Sin embargo, este debe ser definido para los recurso del template.

Vea también register_resource(), unregister_resource().

Ejemplo 16-10. 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)
{
    
// do database call here to populate $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 all templates are secure
    
return true;
}

function 
smarty_resource_db_trusted($tpl_name, &$smarty)
{
    
// not used for templates
}
?>