<?php /** * Smarty Internal Plugin Resource File * * @package Smarty * @subpackage TemplateResources * @author Uwe Tews * @author Rodney Rehm */ /** * Smarty Internal Plugin Resource File * Implements the file system as resource for Smarty templates * * @package Smarty * @subpackage TemplateResources */ class Smarty_Internal_Resource_File extends Smarty_Resource { /** * populate Source Object with meta data from Resource * * @param Smarty_Template_Source $source source object * @param Smarty_Internal_Template $_template template object */ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) { $source->filepath = $this->buildFilepath($source, $_template); if ($source->filepath !== false) { if (is_object($source->smarty->security_policy)) { $source->smarty->security_policy->isTrustedResourceDir($source->filepath); } $source->uid = sha1(realpath($source->filepath)); if ($source->smarty->compile_check && !isset($source->timestamp)) { $source->timestamp = @filemtime($source->filepath); $source->exists = !!$source->timestamp; } } } /** * populate Source Object with timestamp and exists from Resource * * @param Smarty_Template_Source $source source object */ public function populateTimestamp(Smarty_Template_Source $source) { $source->timestamp = @filemtime($source->filepath); $source->exists = !!$source->timestamp; } /** * Load template's source from file into current template object * * @param Smarty_Template_Source $source source object * * @return string template source * @throws SmartyException if source cannot be loaded */ public function getContent(Smarty_Template_Source $source) { if ($source->timestamp) { return file_get_contents($source->filepath); } if ($source instanceof Smarty_Config_Source) { throw new SmartyException("Unable to read config {$source->type} '{$source->name}'"); } throw new SmartyException("Unable to read template {$source->type} '{$source->name}'"); } /** * Determine basename for compiled filename * * @param Smarty_Template_Source $source source object * * @return string resource's basename */ public function getBasename(Smarty_Template_Source $source) { $_file = $source->name; if (($_pos = strpos($_file, ']')) !== false) { $_file = substr($_file, $_pos + 1); } return basename($_file); } }