smarty_internal_resource_stream.php (2472B)
1 <?php 2 /** 3 * Smarty Internal Plugin Resource Stream 4 * Implements the streams as resource for Smarty template 5 * 6 * @package Smarty 7 * @subpackage TemplateResources 8 * @author Uwe Tews 9 * @author Rodney Rehm 10 */ 11 12 /** 13 * Smarty Internal Plugin Resource Stream 14 * Implements the streams as resource for Smarty template 15 * 16 * @link http://php.net/streams 17 * @package Smarty 18 * @subpackage TemplateResources 19 */ 20 class Smarty_Internal_Resource_Stream extends Smarty_Resource_Recompiled 21 { 22 /** 23 * populate Source Object with meta data from Resource 24 * 25 * @param Smarty_Template_Source $source source object 26 * @param Smarty_Internal_Template $_template template object 27 * 28 * @return void 29 */ 30 public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) 31 { 32 if (strpos($source->resource, '://') !== false) { 33 $source->filepath = $source->resource; 34 } else { 35 $source->filepath = str_replace(':', '://', $source->resource); 36 } 37 $source->uid = false; 38 $source->content = $this->getContent($source); 39 $source->timestamp = false; 40 $source->exists = !!$source->content; 41 } 42 43 /** 44 * Load template's source from stream into current template object 45 * 46 * @param Smarty_Template_Source $source source object 47 * 48 * @return string template source 49 * @throws SmartyException if source cannot be loaded 50 */ 51 public function getContent(Smarty_Template_Source $source) 52 { 53 $t = ''; 54 // the availability of the stream has already been checked in Smarty_Resource::fetch() 55 $fp = fopen($source->filepath, 'r+'); 56 if ($fp) { 57 while (!feof($fp) && ($current_line = fgets($fp)) !== false) { 58 $t .= $current_line; 59 } 60 fclose($fp); 61 62 return $t; 63 } else { 64 return false; 65 } 66 } 67 68 /** 69 * modify resource_name according to resource handlers specifications 70 * 71 * @param Smarty $smarty Smarty instance 72 * @param string $resource_name resource_name to make unique 73 * @param boolean $isConfig flag for config resource 74 * 75 * @return string unique resource name 76 */ 77 public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false) 78 { 79 return get_class($this) . '#' . $resource_name; 80 } 81 }