File size: 3.25Kb
<?php
/**
* Ant0ha's project
*
* @package
* @author Anton Pisarenko <[email protected]>
* @copyright Copyright (c) 2006 - 2010, Anton Pisarenko
* @license http://ant0ha.ru/license.txt
* @link http://ant0ha.ru
*/
//----------------------------------------------
/**
* View
*/
class View {
/**
* Путь к папке с шаблонами
*/
public $template_dir = NULL;
/**
* Переменные шаблона
*/
public $vars = array();
/**
* Имя файла шаблона
*/
public $template_file = NULL;
/**
* Название темы
*/
public $theme = 'default';
/**
* Construct
*
* @param <type> $template_dir
* @param <type> $cache_dir
*/
function __construct($template_dir = '', $cache_dir = ''){
$this->template_dir = ($template_dir ? $template_dir : ROOT .'views/');
}
/**
* Генерация страницы
*
* @param <type> $filename
* @param <type> $params
* @return <type> $generated_page
*/
function parse($filename, $params = array()){
# Если не указано расширение файла, указываем его
if(!strstr($filename, '.tpl')) $filename .= '.tpl';
# Определение дополнительных параметров
foreach($params AS $var => $var_value) {
$this->vars[$var] = $var_value;
}
if(strpos($this->theme, 'admin') === 0) $alternative_theme = 'admin';
else $alternative_theme = 'default';
# Определяем имя файла шаблона
if(file_exists(ROOT . 'modules/'. ROUTE_MODULE .'/views/'. $this->theme .'/'. $filename)) {
$this->template_file = ROOT . 'modules/'. ROUTE_MODULE .'/views/'. $this->theme .'/'. $filename;
}
elseif(file_exists(ROOT . 'modules/'. ROUTE_MODULE .'/views/'. $alternative_theme .'/'. $filename)) {
$this->template_file = ROOT . 'modules/'. ROUTE_MODULE .'/views/'. $alternative_theme .'/'. $filename;
}
elseif(file_exists(ROOT .'/views/'. $this->theme .'/'. $filename)) {
$this->template_file = ROOT .'/views/'. $this->theme .'/'. $filename;
}
else die('Файл <b>'. $filename .'</b> не является шаблоном или не найден.');
# Создаем ссылки на переменные из общего массива, чтобы они были видны в шаблоне
extract($this->vars, EXTR_REFS);
ob_start();
# Подключаем шаблон
include($this->template_file);
return ob_get_clean();
}
/**
* Вывод кода страницы
*
* @param <type> $filename
* @param <type> $params
*/
function display($filename, $params = array()) {
echo $this->parse($filename, $params);
}
/**
* Assign переменных
*
* @param <type> $param1
* @param <type> $param2
* @return <type>
*/
function assign($param1, $param2 = NULL) {
if(!$param2 && is_array($param1)) {
foreach($param1 AS $key => $value) {
$this->vars[$key] = $value;
}
return TRUE;
}
elseif($param2) {
$this->vars[$param1] = $param2;
return TRUE;
}
return FALSE;
}
// Функция выводит все данные из общего массива на страницу.
// Используется для отладки
function debug(){
echo '<pre>';
print_r($this->vars);
echo '</pre>';
}
}
?>