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);
33        if ($source->smarty->compile_check) {
34            $source->timestamp = $this->getTemplateTimestamp($source);
35            $source->exists = !!$source->timestamp;
36        }
37    }
38
39    /**
40     * populate Source Object with timestamp and exists from Resource
41     *
42     * @param  Smarty_Template_Source $source source object
43     *
44     * @return void
45     */
46    public function populateTimestamp(Smarty_Template_Source $source)
47    {
48        $source->timestamp = $this->getTemplateTimestamp($source);
49        $source->exists = !!$source->timestamp;
50    }
51
52    /**
53     * Get timestamp (epoch) the template source was modified
54     *
55     * @param  Smarty_Template_Source $source source object
56     *
57     * @return integer|boolean        timestamp (epoch) the template was modified, false if resources has no timestamp
58     */
59    public function getTemplateTimestamp(Smarty_Template_Source $source)
60    {
61        // return timestamp
62        $time_stamp = false;
63        call_user_func_array($source->smarty->registered_resources[$source->type][0][1], 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($source->smarty->registered_resources[$source->type][0][0], array($source->name, &$content, $source->smarty));
81        if (is_bool($t) && !$t) {
82            throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
83        }
84
85        return $content;
86    }
87
88    /**
89     * Determine basename for compiled filename
90     *
91     * @param  Smarty_Template_Source $source source object
92     *
93     * @return string                 resource's basename
94     */
95    public function getBasename(Smarty_Template_Source $source)
96    {
97        return basename($source->name);
98    }
99}
100