4  * Smarty Internal Plugin Resource File
 
   6  * Implements the file system as resource for Smarty templates
 
   9  * @subpackage TemplateResources
 
  14  * Smarty Internal Plugin Resource File
 
  16 class Smarty_Internal_Resource_File {
 
  17     public function __construct($smarty)
 
  19         $this->smarty = $smarty;
 
  21     // classes used for compiling Smarty templates from file resource
 
  22     public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
 
  23     public $template_lexer_class = 'Smarty_Internal_Templatelexer';
 
  24     public $template_parser_class = 'Smarty_Internal_Templateparser'; 
 
  26     public $usesCompiler = true;
 
  27     public $isEvaluated = false;
 
  30      * Return flag if template source is existing
 
  32      * @return boolean true
 
  34     public function isExisting($template)
 
  36         if ($template->getTemplateFilepath() === false) {
 
  44      * Get filepath to template source
 
  46      * @param object $_template template object
 
  47      * @return string filepath to template source file
 
  49     public function getTemplateFilepath($_template)
 
  51         $_filepath = $_template->buildTemplateFilepath ();
 
  53         if ($_filepath !== false) {
 
  54             if (is_object($_template->smarty->security_policy)) {
 
  55                 $_template->smarty->security_policy->isTrustedResourceDir($_filepath);
 
  58         $_template->templateUid = sha1($_filepath);
 
  63      * Get timestamp to template source
 
  65      * @param object $_template template object
 
  66      * @return integer timestamp of template source file
 
  68     public function getTemplateTimestamp($_template)
 
  70         return filemtime($_template->getTemplateFilepath());
 
  74      * Read template source from file
 
  76      * @param object $_template template object
 
  77      * @return string content of template source file
 
  79     public function getTemplateSource($_template)
 
  82         if (file_exists($_tfp = $_template->getTemplateFilepath())) {
 
  83             $_template->template_source = file_get_contents($_tfp);
 
  91      * Get filepath to compiled template
 
  93      * @param object $_template template object
 
  94      * @return string return path to compiled template
 
  96     public function getCompiledFilepath($_template)
 
  98         $_compile_id = isset($_template->compile_id) ? preg_replace('![^\w\|]+!', '_', $_template->compile_id) : null;
 
  99         // calculate Uid if not already done
 
 100         if ($_template->templateUid == '') {
 
 101             $_template->getTemplateFilepath();
 
 103         $_filepath = $_template->templateUid; 
 
 104         // if use_sub_dirs, break file into directories
 
 105         if ($_template->smarty->use_sub_dirs) {
 
 106             $_filepath = substr($_filepath, 0, 2) . DS
 
 107              . substr($_filepath, 2, 2) . DS
 
 108              . substr($_filepath, 4, 2) . DS
 
 111         $_compile_dir_sep = $_template->smarty->use_sub_dirs ? DS : '^';
 
 112         if (isset($_compile_id)) {
 
 113             $_filepath = $_compile_id . $_compile_dir_sep . $_filepath;
 
 115         if ($_template->caching) {
 
 120         $_compile_dir = $_template->smarty->compile_dir;
 
 121         if (strpos('/\\', substr($_compile_dir, -1)) === false) {
 
 124         return $_compile_dir . $_filepath . '.' . $_template->resource_type . '.' . basename($_template->resource_name) . $_cache . '.php';