diff options
Diffstat (limited to 'include/smarty/libs/sysplugins/smarty_internal_resource_string.php')
-rw-r--r-- | include/smarty/libs/sysplugins/smarty_internal_resource_string.php | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/include/smarty/libs/sysplugins/smarty_internal_resource_string.php b/include/smarty/libs/sysplugins/smarty_internal_resource_string.php new file mode 100644 index 000000000..9571337b0 --- /dev/null +++ b/include/smarty/libs/sysplugins/smarty_internal_resource_string.php @@ -0,0 +1,96 @@ +<?php +/** + * Smarty Internal Plugin Resource String + * + * @package Smarty + * @subpackage TemplateResources + * @author Uwe Tews + * @author Rodney Rehm + */ + +/** + * Smarty Internal Plugin Resource String + * + * Implements the strings as resource for Smarty template + * + * {@internal unlike eval-resources the compiled state of string-resources is saved for subsequent access}} + * + * @package Smarty + * @subpackage TemplateResources + */ +class Smarty_Internal_Resource_String 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 + * @return void + */ + public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null) + { + $source->uid = $source->filepath = sha1($source->name); + $source->timestamp = 0; + $source->exists = true; + } + + /** + * Load template's source from $resource_name into current template object + * + * @uses decode() to decode base64 and urlencoded template_resources + * @param Smarty_Template_Source $source source object + * @return string template source + */ + public function getContent(Smarty_Template_Source $source) + { + return $this->decode($source->name); + } + + /** + * decode base64 and urlencode + * + * @param string $string template_resource to decode + * @return string decoded template_resource + */ + protected function decode($string) + { + // decode if specified + if (($pos = strpos($string, ':')) !== false) { + if (!strncmp($string, 'base64', 6)) { + return base64_decode(substr($string, 7)); + } elseif (!strncmp($string, 'urlencode', 9)) { + return urldecode(substr($string, 10)); + } + } + + return $string; + } + + /** + * modify resource_name according to resource handlers specifications + * + * @param Smarty $smarty Smarty instance + * @param string $resource_name resource_name to make unique + * @return string unique resource name + */ + protected function buildUniqueResourceName(Smarty $smarty, $resource_name) + { + return get_class($this) . '#' .$this->decode($resource_name); + } + + /** + * Determine basename for compiled filename + * + * Always returns an empty string. + * + * @param Smarty_Template_Source $source source object + * @return string resource's basename + */ + protected function getBasename(Smarty_Template_Source $source) + { + return ''; + } + +} + +?>
\ No newline at end of file |