Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php/*** Smarty Internal Plugin Resource Extends** @package Smarty* @subpackage TemplateResources* @author Uwe Tews* @author Rodney Rehm*//*** Smarty Internal Plugin Resource Extends* Implements the file system as resource for Smarty which {extend}s a chain of template files templates** @package Smarty* @subpackage TemplateResources*/class Smarty_Internal_Resource_Extends extends Smarty_Resource{/*** mbstring.overload flag** @var int*/public $mbstring_overload = 0;/*** populate Source Object with meta data from Resource** @param Smarty_Template_Source $source source object* @param Smarty_Internal_Template $_template template object** @throws SmartyException*/public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null){$uid = '';$sources = array();$components = explode('|', $source->name);$smarty = &$source->smarty;$exists = true;foreach ($components as $component) {/* @var \Smarty_Template_Source $_s */$_s = Smarty_Template_Source::load(null, $smarty, $component);if ($_s->type === 'php') {throw new SmartyException("Resource type {$_s->type} cannot be used with the extends resource type");}$sources[ $_s->uid ] = $_s;$uid .= $_s->filepath;if ($_template) {$exists = $exists && $_s->exists;}}$source->components = $sources;$source->filepath = $_s->filepath;$source->uid = sha1($uid . $source->smarty->_joined_template_dir);$source->exists = $exists;if ($_template) {$source->timestamp = $_s->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->exists = true;/* @var \Smarty_Template_Source $_s */foreach ($source->components as $_s) {$source->exists = $source->exists && $_s->exists;}$source->timestamp = $source->exists ? $_s->getTimeStamp() : false;}/*** Load template's source from files 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->exists) {throw new SmartyException("Unable to load template '{$source->type}:{$source->name}'");}$_components = array_reverse($source->components);$_content = '';/* @var \Smarty_Template_Source $_s */foreach ($_components as $_s) {// read content$_content .= $_s->getContent();}return $_content;}/*** Determine basename for compiled filename** @param Smarty_Template_Source $source source object** @return string resource's basename*/public function getBasename(Smarty_Template_Source $source){return str_replace(':', '.', basename($source->filepath));}/** Disable timestamp checks for extends resource.* The individual source components will be checked.** @return bool*//*** @return bool*/public function checkTimestamps(){return false;}}