summaryrefslogtreecommitdiff
path: root/libs/sysplugins/smarty_internal_resource_string.php
diff options
context:
space:
mode:
Diffstat (limited to 'libs/sysplugins/smarty_internal_resource_string.php')
-rw-r--r--libs/sysplugins/smarty_internal_resource_string.php160
1 files changed, 51 insertions, 109 deletions
diff --git a/libs/sysplugins/smarty_internal_resource_string.php b/libs/sysplugins/smarty_internal_resource_string.php
index 9368f040..45b720d6 100644
--- a/libs/sysplugins/smarty_internal_resource_string.php
+++ b/libs/sysplugins/smarty_internal_resource_string.php
@@ -1,133 +1,75 @@
<?php
-
/**
* Smarty Internal Plugin Resource String
- *
- * Implements the strings as resource for Smarty template
- *
+ *
* @package Smarty
* @subpackage TemplateResources
- * @author Uwe Tews
+ * @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 {
- public function __construct($smarty)
- {
- $this->smarty = $smarty;
- }
- // classes used for compiling Smarty templates from file resource
- public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
- public $template_lexer_class = 'Smarty_Internal_Templatelexer';
- public $template_parser_class = 'Smarty_Internal_Templateparser';
- // properties
- public $usesCompiler = true;
- public $isEvaluated = false;
+class Smarty_Internal_Resource_String extends Smarty_Resource {
/**
- * Return flag if template source is existing
- *
- * @return boolean true
+ * 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 isExisting($template)
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
{
- return true;
- }
-
- /**
- * Get filepath to template source
- *
- * @param object $_template template object
- * @return string return 'string' as template source is not a file
- */
- public function getTemplateFilepath($_template)
- {
- $_template->templateUid = sha1($_template->resource_name);
- // no filepath for strings
- // return "string" for compiler error messages
- return 'string:';
- }
+ $source->uid = $source->filepath = sha1($source->name);
+ $source->timestamp = 0;
+ $source->exists = true;
+ }
/**
- * Get timestamp to template source
- *
- * @param object $_template template object
- * @return boolean false as string resources have no timestamp
+ * Load template's source from $resource_name into current template object
+ *
+ * {@internal if source begins with "base64:" or "urlencode:", the source is decoded accordingly}}
+ *
+ * @param Smarty_Template_Source $source source object
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
*/
- public function getTemplateTimestamp($_template)
- {
- if ($this->isEvaluated) {
- //must always be compiled and have no timestamp
- return false;
- } else {
- return 0;
+ public function getContent(Smarty_Template_Source $source)
+ {
+ // decode if specified
+ if (($pos = strpos($source->name, ':')) !== false) {
+ if (!strncmp($source->name, 'base64', 6)) {
+ return base64_decode(substr($source->name, 7));
+ } elseif (!strncmp($source->name, 'urlencode', 9)) {
+ return urldecode(substr($source->name, 10));
+ }
}
- }
-
- /**
- * Get timestamp of template source by type and name
- *
- * @param object $_template template object
- * @return int timestamp (always 0)
- */
- public function getTemplateTimestampTypeName($_resource_type, $_resource_name)
- {
- // return timestamp 0
- return 0;
- }
+ return $source->name;
+ }
/**
- * Retuen template source from resource name
- *
- * @param object $_template template object
- * @return string content of template source
+ * Determine basename for compiled filename
+ *
+ * Always returns an empty string.
+ *
+ * @param Smarty_Template_Source $source source object
+ * @return string resource's basename
*/
- public function getTemplateSource($_template)
- {
- // return template string
- $_template->template_source = $_template->resource_name;
- return true;
- }
-
- /**
- * Get filepath to compiled template
- *
- * @param object $_template template object
- * @return boolean return false as compiled template is not stored
- */
- public function getCompiledFilepath($_template)
+ protected function getBasename(Smarty_Template_Source $source)
{
- $_compile_id = isset($_template->compile_id) ? preg_replace('![^\w\|]+!', '_', $_template->compile_id) : null;
- // calculate Uid if not already done
- if ($_template->templateUid == '') {
- $_template->getTemplateFilepath();
- }
- $_filepath = $_template->templateUid;
- // if use_sub_dirs, break file into directories
- if ($_template->smarty->use_sub_dirs) {
- $_filepath = substr($_filepath, 0, 2) . DS
- . substr($_filepath, 2, 2) . DS
- . substr($_filepath, 4, 2) . DS
- . $_filepath;
- }
- $_compile_dir_sep = $_template->smarty->use_sub_dirs ? DS : '^';
- if (isset($_compile_id)) {
- $_filepath = $_compile_id . $_compile_dir_sep . $_filepath;
- }
- if ($_template->caching) {
- $_cache = '.cache';
- } else {
- $_cache = '';
- }
- $_compile_dir = $_template->smarty->compile_dir;
- if (strpos('/\\', substr($_compile_dir, -1)) === false) {
- $_compile_dir .= DS;
- }
- return $_compile_dir . $_filepath . '.' . $_template->resource_type . $_cache . '.php';
- }
-}
+ return '';
+ }
+
+}
?> \ No newline at end of file