aboutsummaryrefslogtreecommitdiffstats
path: root/library/Smarty/demo/plugins/resource.extendsall.php
diff options
context:
space:
mode:
Diffstat (limited to 'library/Smarty/demo/plugins/resource.extendsall.php')
-rw-r--r--library/Smarty/demo/plugins/resource.extendsall.php60
1 files changed, 60 insertions, 0 deletions
diff --git a/library/Smarty/demo/plugins/resource.extendsall.php b/library/Smarty/demo/plugins/resource.extendsall.php
new file mode 100644
index 000000000..d8c40b5ba
--- /dev/null
+++ b/library/Smarty/demo/plugins/resource.extendsall.php
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * Extends All Resource
+ *
+ * Resource Implementation modifying the extends-Resource to walk
+ * through the template_dirs and inherit all templates of the same name
+ *
+ * @package Resource-examples
+ * @author Rodney Rehm
+ */
+class Smarty_Resource_Extendsall extends Smarty_Internal_Resource_Extends {
+
+ /**
+ * populate Source Object with meta data from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ * @return void
+ */
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+ {
+ $uid = '';
+ $sources = array();
+ $exists = true;
+ foreach ($_template->smarty->getTemplateDir() as $key => $directory) {
+ try {
+ $s = Smarty_Resource::source(null, $source->smarty, '[' . $key . ']' . $source->name );
+ if (!$s->exists) {
+ continue;
+ }
+ $sources[$s->uid] = $s;
+ $uid .= $s->filepath;
+ }
+ catch (SmartyException $e) {}
+ }
+
+ if (!$sources) {
+ $source->exists = false;
+ $source->template = $_template;
+ return;
+ }
+
+ $sources = array_reverse($sources, true);
+ reset($sources);
+ $s = current($sources);
+
+ $source->components = $sources;
+ $source->filepath = $s->filepath;
+ $source->uid = sha1($uid);
+ $source->exists = $exists;
+ if ($_template && $_template->smarty->compile_check) {
+ $source->timestamp = $s->timestamp;
+ }
+ // need the template at getContent()
+ $source->template = $_template;
+ }
+}
+
+?> \ No newline at end of file