home *** CD-ROM | disk | FTP | other *** search
- <?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) {
- if ( !$tpl = smarty_resource_db_tplinfo( $tpl_name ) ) {
- return false;
- }
- if ( is_object( $tpl ) ) {
- $tpl_source = $tpl->getVar( 'tpl_source', 'n' );
- } else {
- $fp = fopen( $tpl, 'r' );
- $tpl_source = fread( $fp, filesize( $tpl ) );
- fclose( $fp );
- }
- return true;
- }
-
- function smarty_resource_db_timestamp($tpl_name, &$tpl_timestamp, &$smarty) {
- if ( !$tpl = smarty_resource_db_tplinfo( $tpl_name ) ) {
- return false;
- }
- if ( is_object( $tpl ) ) {
- $tpl_timestamp = $tpl->getVar( 'tpl_lastmodified', 'n' );
- } else {
- $tpl_timestamp = filemtime( $tpl );
- }
- return true;
- }
-
- 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
- }
-
- function smarty_resource_db_tplinfo( $tpl_name ) {
- static $cache = array();
- global $xoopsConfig;
-
- if ( isset( $cache[$tpl_name] ) ) {
- return $cache[$tpl_name];
- }
- $tplset = $xoopsConfig['template_set'];
- $theme = isset( $xoopsConfig['theme_set'] ) ? $xoopsConfig['theme_set'] : 'default';
-
- $tplfile_handler =& xoops_gethandler('tplfile');
- // If we're not using the "default" template set, then get the templates from the DB
- if ( $tplset != "default" ) {
- $tplobj = $tplfile_handler->find( $tplset, null, null, null, $tpl_name, true);
- if ( count( $tplobj ) ) {
- return $cache[$tpl_name] = $tplobj[0];
- }
- }
- // If we'using the default tplset, get the template from the filesystem
- $tplobj = $tplfile_handler->find( "default", null, null, null, $tpl_name);
-
- if ( !count( $tplobj ) ) {
- return $cache[$tpl_name] = false;
- }
- $tplobj = $tplobj[0];
- $module = $tplobj->getVar( 'tpl_module', 'n' );
- $type = $tplobj->getVar( 'tpl_type', 'n' );
- $blockpath = ( $type == 'block' ) ? 'blocks/' : '';
- // First, check for an overloaded version within the theme folder
- $filepath = XOOPS_THEME_PATH . "/$theme/modules/$module/$blockpath$tpl_name";
- if ( !file_exists( $filepath ) ) {
- // If no custom version exists, get the tpl from its default location
- $filepath = XOOPS_ROOT_PATH . "/modules/$module/templates/$blockpath$tpl_name";
- }
- return $cache[$tpl_name] = $filepath;
- }
-
-
-
- ?>