This repository has been archived on 2024-06-26. You can view files and clone it, but cannot push or open issues or pull requests.
sakura/_sakura/components/Templates.php

90 lines
2.1 KiB
PHP
Raw Normal View History

2015-04-06 21:57:17 +00:00
<?php
/*
* Template Engine Wrapper
*/
namespace Sakura;
2015-06-04 12:41:55 +00:00
use Twig_Loader_Filesystem;
use Twig_Environment;
use Twig_Extension_StringLoader;
2015-04-06 21:57:17 +00:00
class Templates {
// Engine container, template folder name and options
public static $_ENG;
public static $_TPL;
public static $_CFG;
2015-04-06 22:19:04 +00:00
2015-04-06 22:01:32 +00:00
// Initialise templating engine and data
2015-04-06 21:57:17 +00:00
public static function init($template) {
// Set template folder name
self::$_TPL = $template;
// Assign config path to a variable so we don't have to type it out twice
2015-05-11 22:20:19 +00:00
$confPath = ROOT .'_sakura/templates/'. self::$_TPL .'/template.ini';
2015-04-06 21:57:17 +00:00
// Check if the configuration file exists
2015-08-23 22:08:36 +00:00
if(!file_exists($confPath)) {
2015-04-06 21:57:17 +00:00
trigger_error('Template configuration does not exist', E_USER_ERROR);
2015-08-23 22:08:36 +00:00
}
2015-04-06 21:57:17 +00:00
// Parse and store the configuration
2015-05-11 22:20:19 +00:00
self::$_CFG = parse_ini_file($confPath, true);
2015-04-06 21:57:17 +00:00
// Make sure we're not using a manage template for the main site or the other way around
2015-08-23 22:08:36 +00:00
if(defined('SAKURA_MANAGE') && (bool)self::$_CFG['manage']['mode'] != (bool)SAKURA_MANAGE) {
trigger_error('Incorrect template type', E_USER_ERROR);
2015-04-06 21:57:17 +00:00
2015-08-23 22:08:36 +00:00
}
2015-04-06 21:57:17 +00:00
// Start Twig
self::twigLoader();
}
// Twig Loader
private static function twigLoader() {
// Initialise Twig Filesystem Loader
2015-06-04 12:41:55 +00:00
$twigLoader = new Twig_Loader_Filesystem(ROOT .'_sakura/templates/'. self::$_TPL);
2015-04-06 21:57:17 +00:00
2015-06-04 12:41:55 +00:00
// Environment variable
$twigEnv = [];
2015-04-06 21:57:17 +00:00
2015-06-04 12:41:55 +00:00
// Enable caching
2015-08-29 13:25:57 +00:00
if(Configuration::getConfig('enable_tpl_cache')) {
$twigEnv['cache'] = ROOT .'cache';
2015-04-06 21:57:17 +00:00
2015-08-29 13:25:57 +00:00
}
2015-06-04 12:41:55 +00:00
// And now actually initialise the templating engine
self::$_ENG = new Twig_Environment($twigLoader, $twigEnv);
2015-04-06 21:57:17 +00:00
// Load String template loader
2015-06-04 12:41:55 +00:00
self::$_ENG->addExtension(new Twig_Extension_StringLoader());
2015-04-06 21:57:17 +00:00
}
// Render template
public static function render($file, $tags) {
2015-08-29 13:25:57 +00:00
try {
return self::$_ENG->render($file, $tags);
} catch(\Exception $e) {
trigger_error($e->getMessage(), E_USER_ERROR);
}
2015-04-06 21:57:17 +00:00
}
}