library/smarty/libs/sysplugins/smarty_internal_resource_stream.php
changeset 0 4869aea77e21
equal deleted inserted replaced
-1:000000000000 0:4869aea77e21
       
     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      * 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         if (strpos($source->resource, '://') !== false) {
       
    31             $source->filepath = $source->resource;
       
    32         } else {
       
    33             $source->filepath = str_replace(':', '://', $source->resource);
       
    34         }
       
    35         $source->uid = false;
       
    36         $source->content = $this->getContent($source);
       
    37         $source->timestamp = false;
       
    38         $source->exists = !!$source->content;
       
    39     }
       
    40 
       
    41     /**
       
    42      * Load template's source from stream into current template object
       
    43      *
       
    44      * @param Smarty_Template_Source $source source object
       
    45      *
       
    46      * @return string template source
       
    47      * @throws SmartyException if source cannot be loaded
       
    48      */
       
    49     public function getContent(Smarty_Template_Source $source) {
       
    50         $t = '';
       
    51         // the availability of the stream has already been checked in Smarty_Resource::fetch()
       
    52         $fp = fopen($source->filepath, 'r+');
       
    53         if ($fp) {
       
    54             while (!feof($fp) && ($current_line = fgets($fp)) !== false) {
       
    55                 $t .= $current_line;
       
    56             }
       
    57             fclose($fp);
       
    58 
       
    59             return $t;
       
    60         } else {
       
    61             return false;
       
    62         }
       
    63     }
       
    64 
       
    65     /**
       
    66      * modify resource_name according to resource handlers specifications
       
    67      *
       
    68      * @param Smarty $smarty Smarty instance
       
    69      * @param string $resource_name resource_name to make unique
       
    70      * @param  boolean $isConfig flag for config resource
       
    71      *
       
    72      * @return string unique resource name
       
    73      */
       
    74     public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false) {
       
    75         return get_class($this) . '#' . $resource_name;
       
    76     }
       
    77 }