]> git.mxchange.org Git - friendica.git/blob - library/Smarty/demo/plugins/resource.extendsall.php
Add Smarty to Composer
[friendica.git] / library / Smarty / demo / plugins / resource.extendsall.php
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         $exists = true;
26         foreach ($_template->smarty->getTemplateDir() as $key => $directory) {
27             try {
28                 $s = Smarty_Resource::source(null, $source->smarty, '[' . $key . ']' . $source->name);
29                 if (!$s->exists) {
30                     continue;
31                 }
32                 $sources[$s->uid] = $s;
33                 $uid .= $s->filepath;
34             }
35             catch (SmartyException $e) {
36             }
37         }
38
39         if (!$sources) {
40             $source->exists = false;
41             $source->template = $_template;
42
43             return;
44         }
45
46         $sources = array_reverse($sources, true);
47         reset($sources);
48         $s = current($sources);
49
50         $source->components = $sources;
51         $source->filepath = $s->filepath;
52         $source->uid = sha1($uid);
53         $source->exists = $exists;
54         if ($_template && $_template->smarty->compile_check) {
55             $source->timestamp = $s->timestamp;
56         }
57         // need the template at getContent()
58         $source->template = $_template;
59     }
60 }