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