Smarty Manual
Prev | Chapter 15. Extending Smarty With Plugins | Next

# 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 15-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 } ?>`

Prev | Home | Next
Output Filters | Up | Inserts