1<?php 2/** 3 * Smarty Internal Plugin Resource String 4 * 5 * @package Smarty 6 * @subpackage TemplateResources 7 * @author Uwe Tews 8 * @author Rodney Rehm 9 */ 10 11/** 12 * Smarty Internal Plugin Resource String 13 * 14 * Implements the strings as resource for Smarty template 15 * 16 * {@internal unlike eval-resources the compiled state of string-resources is saved for subsequent access}} 17 * 18 * @package Smarty 19 * @subpackage TemplateResources 20 */ 21class Smarty_Internal_Resource_String extends Smarty_Resource 22{ 23 /** 24 * populate Source Object with meta data from Resource 25 * 26 * @param Smarty_Template_Source $source source object 27 * @param Smarty_Internal_Template $_template template object 28 * @return void 29 */ 30 public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null) 31 { 32 $source->uid = $source->filepath = sha1($source->name); 33 $source->timestamp = 0; 34 $source->exists = true; 35 } 36 37 /** 38 * Load template's source from $resource_name into current template object 39 * 40 * @uses decode() to decode base64 and urlencoded template_resources 41 * @param Smarty_Template_Source $source source object 42 * @return string template source 43 */ 44 public function getContent(Smarty_Template_Source $source) 45 { 46 return $this->decode($source->name); 47 } 48 49 /** 50 * decode base64 and urlencode 51 * 52 * @param string $string template_resource to decode 53 * @return string decoded template_resource 54 */ 55 protected function decode($string) 56 { 57 // decode if specified 58 if (($pos = strpos($string, ':')) !== false) { 59 if (!strncmp($string, 'base64', 6)) { 60 return base64_decode(substr($string, 7)); 61 } elseif (!strncmp($string, 'urlencode', 9)) { 62 return urldecode(substr($string, 10)); 63 } 64 } 65 66 return $string; 67 } 68 69 /** 70 * modify resource_name according to resource handlers specifications 71 * 72 * @param Smarty $smarty Smarty instance 73 * @param string $resource_name resource_name to make unique 74 * @param boolean $is_config flag for config resource 75 * @return string unique resource name 76 */ 77 protected function buildUniqueResourceName(Smarty $smarty, $resource_name, $is_config = false) 78 { 79 return get_class($this) . '#' .$this->decode($resource_name); 80 } 81 82 /** 83 * Determine basename for compiled filename 84 * 85 * Always returns an empty string. 86 * 87 * @param Smarty_Template_Source $source source object 88 * @return string resource's basename 89 */ 90 protected function getBasename(Smarty_Template_Source $source) 91 { 92 return ''; 93 } 94 95} 96