Viewing file: smarty_resource_custom.php (2.79 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /** * Smarty Resource Plugin * * @package Smarty * @subpackage TemplateResources * @author Rodney Rehm */
/** * Smarty Resource Plugin * * Wrapper Implementation for custom resource plugins * * @package Smarty * @subpackage TemplateResources */ abstract class Smarty_Resource_Custom extends Smarty_Resource {
/** * fetch template and its modification time from data source * * @param string $name template name * @param string &$source template source * @param integer &$mtime template modification timestamp (epoch) */ protected abstract function fetch($name, &$source, &$mtime);
/** * Fetch template's modification timestamp from data source * * {@internal implementing this method is optional. * Only implement it if modification times can be accessed faster than loading the complete template source.}} * * @param string $name template name * @return integer|boolean timestamp (epoch) the template was modified, or false if not found */ protected function fetchTimestamp($name) { return null; }
/** * 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 = strtolower($source->type . ':' . $source->name); $source->uid = sha1($source->type . ':' . $source->name);
$mtime = $this->fetchTimestamp($source->name); if ($mtime !== null) { $source->timestamp = $mtime; } else { $this->fetch($source->name, $content, $timestamp); $source->timestamp = isset($timestamp) ? $timestamp : false; if( isset($content) ) $source->content = $content; } $source->exists = !!$source->timestamp; }
/** * Load template's source 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) { $this->fetch($source->name, $content, $timestamp); if (isset($content)) { return $content; }
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 */ protected function getBasename(Smarty_Template_Source $source) { return basename($source->name); }
}
?>
|