PHP Classes

File: htdocs/class/smarty/xoops_plugins/resource.db.php

Recommend this page to a friend!
  Classes of Michael Beck   Xoops 2.5   htdocs/class/smarty/xoops_plugins/resource.db.php   Download  
File: htdocs/class/smarty/xoops_plugins/resource.db.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Xoops 2.5
Modular content management publication system
Author: By
Last change:
Date: 6 years ago
Size: 4,019 bytes
 

Contents

Class file image Download
<?php
/**
 * Smarty plugin
 *
 * Fetches templates from a database
 *
 * You may not change or alter any portion of this comment or credits
 * of supporting developers from this source code or any supporting source code
 * which is considered copyrighted (c) material of the original comment or credit authors.
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * @copyright (c) 2000-2016 XOOPS Project (www.xoops.org)
 * @license GNU GPL 2 (http://www.gnu.org/licenses/gpl-2.0.html)
 * @param $tpl_name
 * @param $tpl_source
 * @param $smarty
 * @return bool
 */
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');
       
$filesize = filesize($tpl);
       
$tpl_source = ($filesize > 0) ? fread($fp, $filesize) : '';
       
fclose($fp);
    }

    return
true;
}

/**
 * @param $tpl_name
 * @param $tpl_timestamp
 * @param $smarty
 *
 * @return bool
 */
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;
}

/**
 * @param $tpl_name
 * @param $smarty
 *
 * @return bool
 */
function smarty_resource_db_secure($tpl_name, &$smarty)
{
   
// assume all templates are secure
   
return true;
}

/**
 * @param $tpl_name
 * @param $smarty
 */
function smarty_resource_db_trusted($tpl_name, &$smarty)
{
   
// not used for templates
}

/**
 * @param $tpl_name
 *
 * @return bool|string
 */
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, true);

    if (!
count($tplobj)) {
        return
$cache[$tpl_name] = false;
    }
   
$tplobj = $tplobj[0];
   
$module = $tplobj->getVar('tpl_module', 'n');
   
$type = $tplobj->getVar('tpl_type', 'n');
   
// Construct template path
   
switch ($type) {
        case
'block':
           
$directory = XOOPS_THEME_PATH;
           
$path = 'blocks/';
            break;
        case
'admin':
           
$theme = isset($xoopsConfig['cpanel']) ? $xoopsConfig['cpanel'] : 'default';
           
$directory = XOOPS_ADMINTHEME_PATH;
           
$path = 'admin/';
            break;
        default:
           
$directory = XOOPS_THEME_PATH;
           
$path = '';
            break;
    }
   
// First, check for an overloaded version within the theme folder
   
$filepath = $directory . "/{$theme}/modules/{$module}/{$path}{$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/{$path}{$tpl_name}";
        if (!
file_exists($filepath)) {
            return
$cache[$tpl_name] = $tplobj;
        }
    }

    return
$cache[$tpl_name] = $filepath;
}