Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
/**
4
 * Extends All Resource
5
 * Resource Implementation modifying the extends-Resource to walk
6
 * through the template_dirs and inherit all templates of the same name
7
 *
8
 * @package Resource-examples
9
 * @author  Rodney Rehm
10
 */
11
class Smarty_Resource_Extendsall extends Smarty_Internal_Resource_Extends
12
{
13
    /**
14
     * populate Source Object with meta data from Resource
15
     *
16
     * @param Smarty_Template_Source   $source    source object
17
     * @param Smarty_Internal_Template $_template template object
18
     *
19
     * @return void
20
     */
21
    public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
22
    {
23
        $uid = '';
24
        $sources = array();
25
        $timestamp = 0;
26
        foreach ($source->smarty->getTemplateDir() as $key => $directory) {
27
            try {
28
                $s = Smarty_Resource::source(null, $source->smarty, 'file:' . '[' . $key . ']' . $source->name);
29
                if (!$s->exists) {
30
                    continue;
31
                }
32
                $sources[ $s->uid ] = $s;
33
                $uid .= $s->filepath;
34
                $timestamp = $s->timestamp > $timestamp ? $s->timestamp : $timestamp;
35
            } catch (SmartyException $e) {
36
            }
37
        }
38
        if (!$sources) {
39
            $source->exists = false;
40
            return;
41
        }
42
        $sources = array_reverse($sources, true);
43
        reset($sources);
44
        $s = current($sources);
45
        $source->components = $sources;
46
        $source->filepath = $s->filepath;
47
        $source->uid = sha1($uid . $source->smarty->_joined_template_dir);
48
        $source->exists = true;
49
        $source->timestamp = $timestamp;
50
    }
51
 
52
    /**
53
     * Disable timestamp checks for extendsall resource.
54
     * The individual source components will be checked.
55
     *
56
     * @return bool false
57
     */
58
    public function checkTimestamps()
59
    {
60
        return false;
61
    }
62
}