Initial repo created
[timetracker.git] / WEB-INF / lib / smarty / sysplugins / smarty_internal_resource_file.php
1 <?php
2
3 /**
4  * Smarty Internal Plugin Resource File
5  * 
6  * Implements the file system as resource for Smarty templates
7  * 
8  * @package Smarty
9  * @subpackage TemplateResources
10  * @author Uwe Tews 
11  */
12
13 /** 
14  * Smarty Internal Plugin Resource File
15  */
16 class Smarty_Internal_Resource_File {
17     public function __construct($smarty)
18     {
19         $this->smarty = $smarty;
20     } 
21     // classes used for compiling Smarty templates from file resource
22     public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
23     public $template_lexer_class = 'Smarty_Internal_Templatelexer';
24     public $template_parser_class = 'Smarty_Internal_Templateparser'; 
25     // properties
26     public $usesCompiler = true;
27     public $isEvaluated = false;
28
29     /**
30      * Return flag if template source is existing
31      * 
32      * @return boolean true
33      */
34     public function isExisting($template)
35     {
36         if ($template->getTemplateFilepath() === false) {
37             return false;
38         } else {
39             return true;
40         } 
41     } 
42
43     /**
44      * Get filepath to template source
45      * 
46      * @param object $_template template object
47      * @return string filepath to template source file
48      */
49     public function getTemplateFilepath($_template)
50     {
51         $_filepath = $_template->buildTemplateFilepath ();
52
53         if ($_filepath !== false) {
54             if (is_object($_template->smarty->security_policy)) {
55                 $_template->smarty->security_policy->isTrustedResourceDir($_filepath);
56             } 
57         } 
58         $_template->templateUid = sha1($_filepath);
59         return $_filepath;
60     } 
61
62     /**
63      * Get timestamp to template source
64      * 
65      * @param object $_template template object
66      * @return integer timestamp of template source file
67      */
68     public function getTemplateTimestamp($_template)
69     {
70         return filemtime($_template->getTemplateFilepath());
71     } 
72
73     /**
74      * Read template source from file
75      * 
76      * @param object $_template template object
77      * @return string content of template source file
78      */
79     public function getTemplateSource($_template)
80     { 
81         // read template file
82         if (file_exists($_tfp = $_template->getTemplateFilepath())) {
83             $_template->template_source = file_get_contents($_tfp);
84             return true;
85         } else {
86             return false;
87         } 
88     } 
89
90     /**
91      * Get filepath to compiled template
92      * 
93      * @param object $_template template object
94      * @return string return path to compiled template
95      */
96     public function getCompiledFilepath($_template)
97     {
98         $_compile_id = isset($_template->compile_id) ? preg_replace('![^\w\|]+!', '_', $_template->compile_id) : null;
99         // calculate Uid if not already done
100         if ($_template->templateUid == '') {
101             $_template->getTemplateFilepath();
102         } 
103         $_filepath = $_template->templateUid; 
104         // if use_sub_dirs, break file into directories
105         if ($_template->smarty->use_sub_dirs) {
106             $_filepath = substr($_filepath, 0, 2) . DS
107              . substr($_filepath, 2, 2) . DS
108              . substr($_filepath, 4, 2) . DS
109              . $_filepath;
110         } 
111         $_compile_dir_sep = $_template->smarty->use_sub_dirs ? DS : '^';
112         if (isset($_compile_id)) {
113             $_filepath = $_compile_id . $_compile_dir_sep . $_filepath;
114         } 
115         if ($_template->caching) {
116             $_cache = '.cache';
117         } else {
118             $_cache = '';
119         } 
120         $_compile_dir = $_template->smarty->compile_dir;
121         if (strpos('/\\', substr($_compile_dir, -1)) === false) {
122             $_compile_dir .= DS;
123         } 
124         return $_compile_dir . $_filepath . '.' . $_template->resource_type . '.' . basename($_template->resource_name) . $_cache . '.php';
125     } 
126
127
128 ?>