1<?php 2/** 3 * Smarty Internal Plugin Resource Eval 4 * 5 * @package Smarty 6 * @subpackage TemplateResources 7 * @author Uwe Tews 8 * @author Rodney Rehm 9 */ 10 11/** 12 * Smarty Internal Plugin Resource Eval 13 * Implements the strings as resource for Smarty template 14 * {@internal unlike string-resources the compiled state of eval-resources is NOT saved for subsequent access}} 15 * 16 * @package Smarty 17 * @subpackage TemplateResources 18 */ 19class Smarty_Internal_Resource_Eval extends Smarty_Resource_Recompiled 20{ 21 /** 22 * populate Source Object with meta data from Resource 23 * 24 * @param Smarty_Template_Source $source source object 25 * @param Smarty_Internal_Template $_template template object 26 * 27 * @return void 28 */ 29 public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) 30 { 31 $source->uid = $source->filepath = sha1($source->name); 32 $source->timestamp = $source->exists = true; 33 } 34 35 /** 36 * Load template's source from $resource_name into current template object 37 * 38 * @uses decode() to decode base64 and urlencoded template_resources 39 * 40 * @param Smarty_Template_Source $source source object 41 * 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 * 54 * @return string decoded template_resource 55 */ 56 protected function decode($string) 57 { 58 // decode if specified 59 if (($pos = strpos($string, ':')) !== false) { 60 if (!strncmp($string, 'base64', 6)) { 61 return base64_decode(substr($string, 7)); 62 } elseif (!strncmp($string, 'urlencode', 9)) { 63 return urldecode(substr($string, 10)); 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 $isConfig flag for config resource 75 * 76 * @return string unique resource name 77 */ 78 public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false) 79 { 80 return get_class($this) . '#' . $this->decode($resource_name); 81 } 82 83 /** 84 * Determine basename for compiled filename 85 * 86 * @param Smarty_Template_Source $source source object 87 * 88 * @return string resource's basename 89 */ 90 public function getBasename(Smarty_Template_Source $source) 91 { 92 return ''; 93 } 94} 95