You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
cosmopet-architecture/dup-installer/classes/utilities/template/class.u.template.manager.php

127 lines
3.2 KiB

<?php
/**
* Search and reaplace manager
*
* Standard: PSR-2
*
* @link http://www.php-fig.org/psr/psr-2 Full Documentation
*
* @package SC\DUPX\U
*/
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
require_once(DUPX_INIT . '/classes/utilities/template/class.u.template.item.php');
final class DUPX_Template
{
const TEMPLATE_ADVANCED = 'default';
const TEMPLATE_BASE = 'base';
const TEMPLATE_IMPORT_BASE = 'import-base';
const TEMPLATE_IMPORT_ADVANCED = 'import-advanced';
/** @var DUPX_Template */
private static $instance = null;
/** @var DUPX_TemplateItem[] */
private $templates = array();
/** @var string */
private $currentTemplate = null;
/**
*
* @return DUPX_Template
*/
public static function getInstance()
{
if (is_null(self::$instance)) {
self::$instance = new self();
}
return self::$instance;
}
private function __construct()
{
// ADD DEFAULT TEMPLATE
$this->addTemplate(DUPX_Template::TEMPLATE_ADVANCED, DUPX_INIT . '/templates/default');
$this->setTemplate(DUPX_Template::TEMPLATE_ADVANCED);
}
/**
*
* @param string $name
*
* @return boolean
*/
public function setTemplate($name)
{
if (!isset($this->templates[$name])) {
throw new Exception('The template ' . $name . ' doesn\'t exist');
}
$this->currentTemplate = $name;
return true;
}
/**
*
* @param string $name
* @param string $mainFolder
* @param string $parentName
*
* @return boolean
*/
public function addTemplate($name, $mainFolder, $parentName = null)
{
if (isset($this->templates[$name])) {
throw new Exception('The template "' . $name . '" already exists');
}
if (is_null($parentName)) {
$parent = null;
} elseif (isset($this->templates[$parentName])) {
$parent = $this->templates[$parentName];
} else {
throw new Exception('The parent template "' . $parentName . '" doesn\'t exist');
}
$this->templates[$name] = new DUPX_TemplateItem($name, $mainFolder, $parent);
return true;
}
/**
*
* @param string $fileTpl // template file is a relative path from root template folder
* @param array $args // array key / val where key is the var name in template
* @param bool $echo // if false return template in string
*
* @return string
*/
public function render($fileTpl, $args = array(), $echo = true)
{
return $this->templates[$this->currentTemplate]->render($fileTpl, $args, $echo);
}
private function __clone()
{
}
}
/**
*
* @param string $fileTpl // template file is a relative path from root template folder
* @param array $args // array key / val where key is the var name in template
* @param bool $echo // if false return template in string
*
* @return string
*/
function dupxTplRender($fileTpl, $args = array(), $echo = true)
{
static $tplMng = null;
if (is_null($tplMng)) {
$tplMng = DUPX_Template::getInstance();
}
return $tplMng->render($fileTpl, $args, $echo);
}