PHP Classes
elePHPant
Icontem

File: my_smarty.class.php

Recommend this page to a friend!
  Classes of Grigori Kochanov  >  Smarty and MIME message integration  >  my_smarty.class.php  >  Download  
File: my_smarty.class.php
Role: Class source
Content type: text/plain
Description: Smarty configuration class
Class: Smarty and MIME message integration
Send e-mail messages using Smarty templates
Author: By
Last change:
Date: 9 years ago
Size: 1,903 bytes
 

Contents

Class file image Download
<?php
require_once("smarty/Smarty.class.php");

//for the real site you would define Smarty settings in the site configuration script
$TEMPLATE_OPTIONS = array(
   
'TEMPLATE_DIR' => 'templates',
   
'MAIL_TEMPLATE_DIR' => 'templates',
   
'COMPILE_DIR' => 'smarty/template_c/',
   
'CACHE_DIR'=> 'smarty/cache/',
   
'CONFIG_DIR'=> './',
   
'CACHING'=> false,
   
'CACHE_LIFETIME'=> 0,
   
'COMPILE_CHECK'=> true,
    );

/***********************************************************
    Define custom class that configures Smarty
***********************************************************/
class MySmarty extends Smarty {

var
$page_title='';
var
$error_codes;
var
$config;

static private
$instance;

/**
 * @return object MySmarty
 * @ desc returns an instance of MySmarty class
*/
static public function factory(){
    isset(
self::$instance) || self::$instance=new MySmarty();
    return
self::$instance;
}

function
__construct(){
   
   
$c = $this->config = $GLOBALS['TEMPLATE_OPTIONS'];

   
//directories
   
$this->template_dir = $c['TEMPLATE_DIR'].'/';
   
$this->compile_dir = $c['COMPILE_DIR'];
   
$this->compile_check = $c['COMPILE_CHECK'];
   
$this->config_dir = $c['CONFIG_DIR'];

   
//configure caching
   
$this->cache_dir = $c['CACHE_DIR'];
   
$this->caching = $c['CACHING'];
   
$this->cache_lifetime = $c['CACHE_LIFETIME'];
   
$this->cache_modified_check = true;

   
//call original Smarty constructor
   
Smarty::Smarty();
}

/**
 * Check if the template file exists
 *
 * @param string $template_name
 * @return bool
 */
function templateExists($template_name){
   
//don't allow access to the upper directories
   
if (strrpos($template_name,'..')!==false){
        return
false;
    }
   
$file_name = $this->template_dir.'/'.$template_name;
    if (
is_file($file_name) && is_readable($file_name)){
        return
true;
    }
    return
false;
}

//end of the class
}