Вход Регистрация
Файл: wboard/source/system/classes/template.php
Строк: 70
<?php

/**
 * Wboard
 * Templates handler
 * @author Screamer
 * @copyright 2013
 */

class Template
{

    
/**
     * @var (string)
     * Directory with templates
     */
    
protected $_directory '';

    
/**
     * @var (string) Data for output
     */
    
protected $_output '';

    
/**
     * @var (string) Name of Main template
     */
    
public $layot '_layot';

    
/**
     * @var (Language) Languages Handler
     */
    
public $lng;

    
/**
     * @var (string) Title of Page
     */
    
public $title '';

    
/**
     * Constructor
     * @param (string) Path to templates directory
     * @param (Language) Languages handler
     * @throws (Exception) Wrong parameter given
     * @return (void)
     */
    
public function __construct($directory$lng)
    {
        
$error = array();
        
// Check directory with templates
        
if (is_dir($directory)) {
            
$this->_directory realpath($directory);
        } else {
            
$error[] = 'Directory "' $directory '" is not exists';
        }
        
// Check layot for exists
        
if (!empty($this->_directory) && realpath($this->_directory DIRECTORY_SEPARATOR $this->layot '.php') === FALSE) {
            
$error[] = 'Layot is not exists';
        }
        
// Check Languages handler
        
if (is_object($lng) && ($lng instanceof Language)) {
            
$this->lng =& $lng;
        } else {
            
$error[] = 'Unable to set language object';
        }
        if (!empty(
$error)) {
            throw new 
Exception(__CLASS__ PHP_EOL implode(PHP_EOL$error));
        }
    }

    
/**
     * Load template
     * @param (string) $file Name of file (without extension)
     * @param (array) $data Variables for template
     * @return (string)
     */
    
public function load($file, array $data = array())
    {
        
$template realpath($this->_directory DIRECTORY_SEPARATOR $file '.php');
        
ob_start();
        if (
$template !== FALSE) {
            if (!empty(
$data)) {
                
extract($data);
            }
            include 
$template;
        } else {
            echo 
'<pre>Template Error: Unable to load &laquo;<b>' $file '</b>&raquo;</pre>';
        }
        
$contents ob_get_contents();
        
ob_end_clean();
        return 
trim($contents);
    }

    
/**
     * Set data for output
     * @param (string) $data Data for output
     * @return (void)
     */
    
public function set_output($data)
    {
        
$this->_output $data;
    }

    
/**
     * Set output data to main template
     * @param (array) $data Data for main Template
     * @return (string)
     */
    
public function output($data = array())
    {
        
$data['contents'] = $this->_output;
        return 
$this->load($this->layot$data'system');
    }

}
Онлайн: 0
Реклама