1: <?php
2: /**
3: * Smarty Internal Plugin Resource Registered
4: *
5: * @package Smarty
6: * @subpackage TemplateResources
7: * @author Uwe Tews
8: * @author Rodney Rehm
9: */
10:
11: /**
12: * Smarty Internal Plugin Resource Registered
13: * Implements the registered resource for Smarty template
14: *
15: * @package Smarty
16: * @subpackage TemplateResources
17: * @deprecated
18: */
19: class Smarty_Internal_Resource_Registered extends Smarty_Resource
20: {
21: /**
22: * populate Source Object with meta data from Resource
23: *
24: * @param Smarty_Template_Source $source source object
25: * @param Smarty_Internal_Template $_template template object
26: *
27: * @return void
28: */
29: public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
30: {
31: $source->filepath = $source->type . ':' . $source->name;
32: $source->uid = sha1($source->filepath . $source->smarty->_joined_template_dir);
33: $source->timestamp = $this->getTemplateTimestamp($source);
34: $source->exists = !!$source->timestamp;
35: }
36:
37: /**
38: * populate Source Object with timestamp and exists from Resource
39: *
40: * @param Smarty_Template_Source $source source object
41: *
42: * @return void
43: */
44: public function populateTimestamp(Smarty_Template_Source $source)
45: {
46: $source->timestamp = $this->getTemplateTimestamp($source);
47: $source->exists = !!$source->timestamp;
48: }
49:
50: /**
51: * Get timestamp (epoch) the template source was modified
52: *
53: * @param Smarty_Template_Source $source source object
54: *
55: * @return integer|boolean timestamp (epoch) the template was modified, false if resources has no timestamp
56: */
57: public function getTemplateTimestamp(Smarty_Template_Source $source)
58: {
59: // return timestamp
60: $time_stamp = false;
61: call_user_func_array(
62: $source->smarty->registered_resources[ $source->type ][ 0 ][ 1 ],
63: array($source->name, &$time_stamp, $source->smarty)
64: );
65: return is_numeric($time_stamp) ? (int)$time_stamp : $time_stamp;
66: }
67:
68: /**
69: * Load template's source by invoking the registered callback into current template object
70: *
71: * @param Smarty_Template_Source $source source object
72: *
73: * @return string template source
74: * @throws SmartyException if source cannot be loaded
75: */
76: public function getContent(Smarty_Template_Source $source)
77: {
78: // return template string
79: $content = null;
80: $t = call_user_func_array(
81: $source->smarty->registered_resources[ $source->type ][ 0 ][ 0 ],
82: array($source->name, &$content, $source->smarty)
83: );
84: if (is_bool($t) && !$t) {
85: throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
86: }
87: return $content;
88: }
89:
90: /**
91: * Determine basename for compiled filename
92: *
93: * @param Smarty_Template_Source $source source object
94: *
95: * @return string resource's basename
96: */
97: public function getBasename(Smarty_Template_Source $source)
98: {
99: return basename($source->name);
100: }
101: }
102: