-
Notifications
You must be signed in to change notification settings - Fork 1
/
stencil-engine.php
121 lines (102 loc) · 2.63 KB
/
stencil-engine.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
/**
* Engine code
*
* @package Stencil
* @subpackage Smarty3
*/
/**
* Double check to make sure Stencil is loaded
*/
if ( class_exists( 'Stencil_Implementation' ) ) :
/**
* Create new instance on init
*/
add_action( 'init', create_function( '', 'new Stencil_Smarty_3();' ) );
/**
* Class stencil_smarty3
*
* Implementation of the "Smarty 3.x" templating engine
*/
class Stencil_Smarty_3 extends Stencil_Implementation {
/**
* Initialize Smarty3 and set defaults
*/
public function __construct() {
parent::__construct();
require_once( 'lib/Smarty/Smarty.class.php' );
$this->engine = new Smarty();
$this->engine->setCacheDir( $this->cache_path );
$this->engine->setCompileDir( $this->compile_path );
$this->engine->setTemplateDir( $this->template_path );
/**
* For config see:
* http://www.smarty.net/docs/en/config.files.tpl
*/
/*
* $this->engine->setConfigDir( $template_dir . 'configs/');
*/
// Add custom plugins to smarty (per template).
$plugin_dir = apply_filters( 'smarty3-template-plugin-dir', 'smarty-plugins' );
/**
* Add theme plugins & child-theme plugins
*/
if ( ! empty( $plugin_dir ) ) {
$template_root = get_template_directory();
$plugin_bases = array( $template_root );
$child_root = get_stylesheet_directory();
if ( $child_root !== $template_root ) {
$plugin_bases[] = $child_root;
}
foreach ( $plugin_bases as $plugin_base ) {
$plugin_dir = implode( DIRECTORY_SEPARATOR, array( $plugin_base, $plugin_dir, '' ) );
if ( is_dir( $plugin_dir ) ) {
$this->engine->addPluginsDir( $plugin_dir );
}
}
}
/**
* Caching - when and how?
* http://www.smarty.net/docsv2/en/caching.tpl
*/
$this->engine->caching = 0;
$this->ready();
}
/**
* Sets the variable to value
*
* @param string $variable Variable to set.
* @param mixed $value Value to apply.
*
* @return mixed|void
*/
public function set( $variable, $value ) {
if ( is_object( $value ) ) {
$this->engine->assignByRef( $variable, $value );
} else {
$this->engine->assign( $variable, $value );
}
return $this->get( $variable );
}
/**
* Gets the value of variable
*
* @param string $variable Variable to read.
*
* @return mixed|string
*/
public function get( $variable ) {
return $this->engine->getTemplateVars( $variable );
}
/**
* Fetches the Smarty compiled template
*
* @param string $template Template file to get.
*
* @return string
*/
public function fetch( $template ) {
return $this->engine->fetch( $template );
}
}
endif;