Resources
     Resource plugins are meant as a generic way of providing template
     sources or PHP script components to Smarty. Some examples of resources:
     databases, LDAP, shared memory, sockets, and so on.
    
     There are a total of 4 functions that need to be registered for each
     type of resource. Every function will receive the requested resource as
     the first parameter and the Smarty object as the last parameter. The
     rest of parameters depend on the function.
    
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)
     The first function is supposed to retrieve the resource. Its second
     parameter is a variable passed by reference where the result should be
     stored. The function is supposed to return true if
     it was able to successfully retrieve the resource and
     false otherwise.
    
     The second function is supposed to retrieve the last modification time
     of the requested resource (as a UNIX timestamp). The second parameter
     is a variable passed by reference where the timestamp should be stored.
     The function is supposed to return true if the
     timestamp could be succesfully determined, and false
     otherwise.
    
     The third function is supposed to return true or
     false, depending on whether the requested resource
     is secure or not. This function is used only for template resources but
     should still be defined.
    
     The fourth function is supposed to return true or
     false, depending on whether the requested resource
     is trusted or not. This function is used for only for PHP script
     components requested by include_php tag or
     insert tag with src
     attribute. However, it should still be defined even for template
     resources.
    
     See also
     register_resource(),
     unregister_resource().
    
Example 16-10. resource 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) {     // 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 } ?>
 |  
  |