/#/vendor/smarty/sysplugins/smarty_internal_resource_file.php
PHP | 90 lines | 41 code | 9 blank | 40 comment | 7 complexity | e19b25703f5209ad1c094fa21d0b71e4 MD5 | raw file
1<?php
2/**
3 * Smarty Internal Plugin Resource File
4 *
5 * @package Smarty
6 * @subpackage TemplateResources
7 * @author Uwe Tews
8 * @author Rodney Rehm
9 */
10
11/**
12 * Smarty Internal Plugin Resource File
13 *
14 * Implements the file system as resource for Smarty templates
15 *
16 * @package Smarty
17 * @subpackage TemplateResources
18 */
19class Smarty_Internal_Resource_File extends Smarty_Resource {
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 public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
28 {
29 $source->filepath = $this->buildFilepath($source, $_template);
30
31 if ($source->filepath !== false) {
32 if (is_object($source->smarty->security_policy)) {
33 $source->smarty->security_policy->isTrustedResourceDir($source->filepath);
34 }
35
36 $source->uid = sha1($source->filepath);
37 if ($source->smarty->compile_check && !isset($source->timestamp)) {
38 $source->timestamp = @filemtime($source->filepath);
39 $source->exists = !!$source->timestamp;
40 }
41 }
42 }
43
44 /**
45 * populate Source Object with timestamp and exists from Resource
46 *
47 * @param Smarty_Template_Source $source source object
48 */
49 public function populateTimestamp(Smarty_Template_Source $source)
50 {
51 $source->timestamp = @filemtime($source->filepath);
52 $source->exists = !!$source->timestamp;
53 }
54
55 /**
56 * Load template's source from file into current template object
57 *
58 * @param Smarty_Template_Source $source source object
59 * @return string template source
60 * @throws SmartyException if source cannot be loaded
61 */
62 public function getContent(Smarty_Template_Source $source)
63 {
64 if ($source->timestamp) {
65 return file_get_contents($source->filepath);
66 }
67 if ($source instanceof Smarty_Config_Source) {
68 throw new SmartyException("Unable to read config {$source->type} '{$source->name}'");
69 }
70 throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
71 }
72
73 /**
74 * Determine basename for compiled filename
75 *
76 * @param Smarty_Template_Source $source source object
77 * @return string resource's basename
78 */
79 public function getBasename(Smarty_Template_Source $source)
80 {
81 $_file = $source->name;
82 if (($_pos = strpos($_file, ']')) !== false) {
83 $_file = substr($_file, $_pos + 1);
84 }
85 return basename($_file);
86 }
87
88}
89
90?>