1 <?php
3 /**
4 * Smarty Internal Plugin Resource Registered
5 *
6 * Implements the registered resource for Smarty template
7 *
8 * @package Smarty
9 * @subpackage TemplateResources
10 * @author Uwe Tews
11 */
12 /**
13 * Smarty Internal Plugin Resource Registered
14 */
16 class Smarty_Internal_Resource_Registered {
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;
29 /**
30 * Return flag if template source is existing
31 *
32 * @return boolean true
33 */
34 public function isExisting($_template)
35 {
36 if (is_integer($_template->getTemplateTimestamp())) {
37 return true;
38 } else {
39 return false;
40 }
41 }
42 /**
43 * Get filepath to template source
44 *
45 * @param object $_template template object
46 * @return string return 'string' as template source is not a file
47 */
48 public function getTemplateFilepath($_template)
49 {
50 // no filepath for strings
51 // return "string" for compiler error messages
52 $_filepath = $_template->resource_type .':'.$_template->resource_name;
53 $_template->templateUid = sha1($_filepath);
54 return $_filepath;
55 }
57 /**
58 * Get timestamp to template source
59 *
60 * @param object $_template template object
61 * @return boolean false as string resources have no timestamp
62 */
63 public function getTemplateTimestamp($_template)
64 {
65 // return timestamp
66 $time_stamp = false;
67 call_user_func_array($this->smarty->_plugins['resource'][$_template->resource_type][0][1],
68 array($_template->resource_name, &$time_stamp, $this->smarty));
69 return is_numeric($time_stamp) ? (int)$time_stamp : $time_stamp;
70 }
71 /**
72 * Get timestamp to template source by type and name
73 *
74 * @param object $_template template object
75 * @return boolean false as string resources have no timestamp
76 */
77 public function getTemplateTimestampTypeName($_resource_type, $_resource_name)
78 {
79 // return timestamp
80 $time_stamp = false;
81 call_user_func_array($this->smarty->_plugins['resource'][$_resource_type][0][1],
82 array($_resource_name, &$time_stamp, $this->smarty));
83 return is_numeric($time_stamp) ? (int)$time_stamp : $time_stamp;
84 }
86 /**
87 * Retuen template source from resource name
88 *
89 * @param object $_template template object
90 * @return string content of template source
91 */
92 public function getTemplateSource($_template)
93 {
94 // return template string
95 return call_user_func_array($this->smarty->_plugins['resource'][$_template->resource_type][0][0],
96 array($_template->resource_name, &$_template->template_source, $this->smarty));
97 }
99 /**
100 * Get filepath to compiled template
101 *
102 * @param object $_template template object
103 * @return boolean return false as compiled template is not stored
104 */
105 public function getCompiledFilepath($_template)
106 {
107 $_compile_id = isset($_template->compile_id) ? preg_replace('![^\w\|]+!','_',$_template->compile_id) : null;
108 // calculate Uid if not already done
109 if ($_template->templateUid == '') {
110 $_template->getTemplateFilepath();
111 }
112 $_filepath = $_template->templateUid;
113 // if use_sub_dirs, break file into directories
114 if ($_template->smarty->use_sub_dirs) {
115 $_filepath = substr($_filepath, 0, 2) . DS
116 . substr($_filepath, 2, 2) . DS
117 . substr($_filepath, 4, 2) . DS
118 . $_filepath;
119 }
120 $_compile_dir_sep = $_template->smarty->use_sub_dirs ? DS : '^';
121 if (isset($_compile_id)) {
122 $_filepath = $_compile_id . $_compile_dir_sep . $_filepath;
123 }
124 if ($_template->caching) {
125 $_cache = '.cache';
126 } else {
127 $_cache = '';
128 }
129 $_compile_dir = $_template->smarty->compile_dir;
130 if (strpos('/\\', substr($_compile_dir, -1)) === false) {
131 $_compile_dir .= DS;
132 }
133 return $_compile_dir . $_filepath . '.' . $_template->resource_type . '.' . basename($_template->resource_name) . $_cache . '.php';
134 }
135 }
137 ?>