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-24 00:08:36 +02: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-24 00:08:36 +02: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-24 00:08:36 +02:00
if ( defined ( 'SAKURA_MANAGE' ) && ( bool ) self :: $_CFG [ 'manage' ][ 'mode' ] != ( bool ) SAKURA_MANAGE ) {
2015-04-12 13:33:59 +00:00
trigger_error ( 'Incorrect template type' , E_USER_ERROR );
2015-04-06 21:57:17 +00:00
2015-08-24 00:08:36 +02: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
if ( Configuration :: getConfig ( 'enable_tpl_cache' ))
2015-08-09 22:27:03 +02:00
$twigEnv [ 'cache' ] = ROOT . 'cache' ;
2015-04-06 21:57:17 +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 ) {
return self :: $_ENG -> render ( $file , $tags );
}
}