1<?php
2/**
3 * Smarty Internal Plugin Resource Registered
4 *
5 * @package    Smarty
6 * @subpackage TemplateResources
7 * @author     Uwe Tews
8 * @author     Rodney Rehm
9 */
10
11/**
12 * Smarty Internal Plugin Resource Registered
13 * Implements the registered resource for Smarty template
14 *
15 * @package    Smarty
16 * @subpackage TemplateResources
17 * @deprecated
18 */
19class Smarty_Internal_Resource_Registered 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     * @return void
28     */
29    public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
30    {
31        $source->filepath = $source->type . ':' . $source->name;
32        $source->uid = sha1($source->filepath . $source->smarty->_joined_template_dir);
33        $source->timestamp = $this->getTemplateTimestamp($source);
34        $source->exists = !!$source->timestamp;
35    }
36
37    /**
38     * populate Source Object with timestamp and exists from Resource
39     *
40     * @param Smarty_Template_Source $source source object
41     *
42     * @return void
43     */
44    public function populateTimestamp(Smarty_Template_Source $source)
45    {
46        $source->timestamp = $this->getTemplateTimestamp($source);
47        $source->exists = !!$source->timestamp;
48    }
49
50    /**
51     * Get timestamp (epoch) the template source was modified
52     *
53     * @param Smarty_Template_Source $source source object
54     *
55     * @return integer|boolean        timestamp (epoch) the template was modified, false if resources has no timestamp
56     */
57    public function getTemplateTimestamp(Smarty_Template_Source $source)
58    {
59        // return timestamp
60        $time_stamp = false;
61        call_user_func_array(
62            $source->smarty->registered_resources[ $source->type ][ 0 ][ 1 ],
63            array($source->name, &$time_stamp, $source->smarty)
64        );
65        return is_numeric($time_stamp) ? (int)$time_stamp : $time_stamp;
66    }
67
68    /**
69     * Load template's source by invoking the registered callback into current template object
70     *
71     * @param Smarty_Template_Source $source source object
72     *
73     * @return string                 template source
74     * @throws SmartyException        if source cannot be loaded
75     */
76    public function getContent(Smarty_Template_Source $source)
77    {
78        // return template string
79        $content = null;
80        $t = call_user_func_array(
81            $source->smarty->registered_resources[ $source->type ][ 0 ][ 0 ],
82            array($source->name, &$content, $source->smarty)
83        );
84        if (is_bool($t) && !$t) {
85            throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
86        }
87        return $content;
88    }
89
90    /**
91     * Determine basename for compiled filename
92     *
93     * @param Smarty_Template_Source $source source object
94     *
95     * @return string                 resource's basename
96     */
97    public function getBasename(Smarty_Template_Source $source)
98    {
99        return basename($source->name);
100    }
101}
102