source: trunk/include/smarty/libs/sysplugins/smarty_internal_resource_file.php @ 23485

Last change on this file since 23485 was 23485, checked in by rvelices, 11 years ago

Smarty EOL style LF svn property

  • Property svn:eol-style set to LF
File size: 2.7 KB
Line 
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?>
Note: See TracBrowser for help on using the repository browser.