library/smarty/libs/sysplugins/smarty_internal_extension_defaulttemplatehandler.php
changeset 0 4869aea77e21
new file mode 100644
--- /dev/null
+++ b/library/smarty/libs/sysplugins/smarty_internal_extension_defaulttemplatehandler.php
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Smarty Resource Extension
+ *
+ * @package    Smarty
+ * @subpackage TemplateResources
+ * @author     Uwe Tews
+ */
+
+/**
+ * Smarty Resource Extension
+ * Default template and config file handling
+ *
+ * @package    Smarty
+ * @subpackage TemplateResources
+ */
+class Smarty_Internal_Extension_DefaultTemplateHandler {
+
+    /**
+     * get default content from template of config resource handler
+     *
+     * @param Smarty_Internal_Template $_template
+     * @param Smarty_Internal_Template_Source $source
+     * @param  Smarty_Resource $resObj
+     */
+    static function _getDefault(Smarty_Internal_Template $_template, &$source, &$resObj) {
+        if ($source->isConfig) {
+            $default_handler = $_template->smarty->default_config_handler_func;
+        } else {
+            $default_handler = $_template->smarty->default_template_handler_func;
+        }
+        $_content = $_timestamp = null;
+        $_return = call_user_func_array($default_handler,
+            array($source->type, $source->name, &$_content, &$_timestamp, $source->smarty));
+        if (is_string($_return)) {
+            $source->exists = is_file($_return);
+            if ($source->exists) {
+                $source->timestamp = filemtime($_return);
+            }
+            $source->filepath = $_return;
+        } elseif ($_return === true) {
+            $source->content = $_content;
+            $source->timestamp = $_timestamp;
+            $source->exists = true;
+            $source->recompiled = true;
+            $source->filepath = false;
+        }
+    }
+
+    /**
+     * register template default handler
+     *
+     * @param Smarty $smarty
+     * @param mixed $callback
+     *
+     * @throws SmartyException
+     */
+    static function registerDefaultTemplateHandler(Smarty $smarty, $callback) {
+        if (is_callable($callback)) {
+            $smarty->default_template_handler_func = $callback;
+        } else {
+            throw new SmartyException("Default template handler not callable");
+        }
+    }
+
+    /**
+     * register config default handler
+     *
+     * @param Smarty $smarty
+     * @param mixed $callback
+     *
+     * @throws SmartyException
+     */
+    static function registerDefaultConfigHandler(Smarty $smarty, $callback) {
+        if (is_callable($callback)) {
+            $smarty->default_config_handler_func = $callback;
+        } else {
+            throw new SmartyException("Default config handler not callable");
+        }
+    }
+}
\ No newline at end of file