3 * Smarty Internal Plugin Resource Registered
6 * @subpackage TemplateResources
12 * Smarty Internal Plugin Resource Registered
13 * Implements the registered resource for Smarty template
16 * @subpackage TemplateResources
19 class Smarty_Internal_Resource_Registered extends Smarty_Resource
22 * populate Source Object with meta data from Resource
24 * @param Smarty_Template_Source $source source object
25 * @param Smarty_Internal_Template $_template template object
29 public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
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;
38 * populate Source Object with timestamp and exists from Resource
40 * @param Smarty_Template_Source $source source object
44 public function populateTimestamp(Smarty_Template_Source $source)
46 $source->timestamp = $this->getTemplateTimestamp($source);
47 $source->exists = !!$source->timestamp;
51 * Get timestamp (epoch) the template source was modified
53 * @param Smarty_Template_Source $source source object
55 * @return integer|boolean timestamp (epoch) the template was modified, false if resources has no timestamp
57 public function getTemplateTimestamp(Smarty_Template_Source $source)
61 call_user_func_array($source->smarty->registered_resources[ $source->type ][ 0 ][ 1 ],
62 array($source->name, &$time_stamp, $source->smarty));
64 return is_numeric($time_stamp) ? (int) $time_stamp : $time_stamp;
68 * Load template's source by invoking the registered callback into current template object
70 * @param Smarty_Template_Source $source source object
72 * @return string template source
73 * @throws SmartyException if source cannot be loaded
75 public function getContent(Smarty_Template_Source $source)
77 // return template string
79 $t = call_user_func_array($source->smarty->registered_resources[ $source->type ][ 0 ][ 0 ],
80 array($source->name, &$content, $source->smarty));
81 if (is_bool($t) && !$t) {
82 throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
89 * Determine basename for compiled filename
91 * @param Smarty_Template_Source $source source object
93 * @return string resource's basename
95 public function getBasename(Smarty_Template_Source $source)
97 return basename($source->name);