0,0 → 1,213 |
<?php |
|
/** |
* Smarty Resource Data Object |
* Meta Data Container for Template Files |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Rodney Rehm |
*/ |
class Smarty_Template_Source |
{ |
/** |
* Unique Template ID |
* |
* @var string |
*/ |
public $uid = null; |
|
/** |
* Template Resource (Smarty_Internal_Template::$template_resource) |
* |
* @var string |
*/ |
public $resource = null; |
|
/** |
* Resource Type |
* |
* @var string |
*/ |
public $type = null; |
|
/** |
* Resource Name |
* |
* @var string |
*/ |
public $name = null; |
|
/** |
* Source Filepath |
* |
* @var string |
*/ |
public $filepath = null; |
|
/** |
* Source Timestamp |
* |
* @var integer |
*/ |
public $timestamp = null; |
|
/** |
* Source Existence |
* |
* @var boolean |
*/ |
public $exists = false; |
|
/** |
* Source File Base name |
* |
* @var string |
*/ |
public $basename = null; |
|
/** |
* The Components an extended template is made of |
* |
* @var \Smarty_Template_Source[] |
*/ |
public $components = null; |
|
/** |
* Resource Handler |
* |
* @var \Smarty_Resource |
*/ |
public $handler = null; |
|
/** |
* Smarty instance |
* |
* @var Smarty |
*/ |
public $smarty = null; |
|
/** |
* Resource is source |
* |
* @var bool |
*/ |
public $isConfig = false; |
|
/** |
* Template source content eventually set by default handler |
* |
* @var string |
*/ |
public $content = null; |
|
/** |
* Name of the Class to compile this resource's contents with |
* |
* @var string |
*/ |
public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler'; |
|
/** |
* Name of the Class to tokenize this resource's contents with |
* |
* @var string |
*/ |
public $template_lexer_class = 'Smarty_Internal_Templatelexer'; |
|
/** |
* Name of the Class to parse this resource's contents with |
* |
* @var string |
*/ |
public $template_parser_class = 'Smarty_Internal_Templateparser'; |
|
/** |
* create Source Object container |
* |
* @param Smarty $smarty Smarty instance this source object belongs to |
* @param string $resource full template_resource |
* @param string $type type of resource |
* @param string $name resource name |
* |
* @throws \SmartyException |
* @internal param \Smarty_Resource $handler Resource Handler this source object communicates with |
*/ |
public function __construct(Smarty $smarty, $resource, $type, $name) |
{ |
$this->handler = |
isset($smarty->_cache[ 'resource_handlers' ][ $type ]) ? $smarty->_cache[ 'resource_handlers' ][ $type ] : |
Smarty_Resource::load($smarty, $type); |
$this->smarty = $smarty; |
$this->resource = $resource; |
$this->type = $type; |
$this->name = $name; |
} |
|
/** |
* initialize Source Object for given resource |
* Either [$_template] or [$smarty, $template_resource] must be specified |
* |
* @param Smarty_Internal_Template $_template template object |
* @param Smarty $smarty smarty object |
* @param string $template_resource resource identifier |
* |
* @return Smarty_Template_Source Source Object |
* @throws SmartyException |
*/ |
public static function load( |
Smarty_Internal_Template $_template = null, |
Smarty $smarty = null, |
$template_resource = null |
) { |
if ($_template) { |
$smarty = $_template->smarty; |
$template_resource = $_template->template_resource; |
} |
if (empty($template_resource)) { |
throw new SmartyException('Source: Missing name'); |
} |
// parse resource_name, load resource handler, identify unique resource name |
if (preg_match('/^([A-Za-z0-9_\-]{2,})[:]([\s\S]*)$/', $template_resource, $match)) { |
$type = $match[ 1 ]; |
$name = $match[ 2 ]; |
} else { |
// no resource given, use default |
// or single character before the colon is not a resource type, but part of the filepath |
$type = $smarty->default_resource_type; |
$name = $template_resource; |
} |
// create new source object |
$source = new Smarty_Template_Source($smarty, $template_resource, $type, $name); |
$source->handler->populate($source, $_template); |
if (!$source->exists && isset($_template->smarty->default_template_handler_func)) { |
Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source); |
$source->handler->populate($source, $_template); |
} |
return $source; |
} |
|
/** |
* Get source time stamp |
* |
* @return int |
*/ |
public function getTimeStamp() |
{ |
if (!isset($this->timestamp)) { |
$this->handler->populateTimestamp($this); |
} |
return $this->timestamp; |
} |
|
/** |
* Get source content |
* |
* @return string |
* @throws \SmartyException |
*/ |
public function getContent() |
{ |
return isset($this->content) ? $this->content : $this->handler->getContent($this); |
} |
} |