Code

48b391d20eae76cb65b922db98e44310d5d55a8a
[gosa.git] / gosa-core / include / smarty / sysplugins / smarty_internal_resource_file.php
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  */
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  */
19 class Smarty_Internal_Resource_File extends Smarty_Resource {
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);
31         if ($source->filepath !== false) {
32             if (is_object($source->smarty->security_policy)) {
33                 $source->smarty->security_policy->isTrustedResourceDir($source->filepath);
34             }
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     }
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     }
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     }
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     }
88 }
90 ?>