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 */ 19class 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