summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Legler <alex@a3li.li>2015-01-03 22:15:48 +0100
committerAlex Legler <alex@a3li.li>2015-01-03 22:15:48 +0100
commit1f57bda8e755cc19b37ba4ba3f82731bc1f784b0 (patch)
treed90430ae111d74bd558e4f9741d5905db0462cf6 /Widgets/smarty/libs/sysplugins/smarty_internal_resource_php.php
parentAdd Widgets (diff)
downloadextensions-1f57bda8e755cc19b37ba4ba3f82731bc1f784b0.tar.gz
extensions-1f57bda8e755cc19b37ba4ba3f82731bc1f784b0.tar.bz2
extensions-1f57bda8e755cc19b37ba4ba3f82731bc1f784b0.zip
Add smarty
Diffstat (limited to 'Widgets/smarty/libs/sysplugins/smarty_internal_resource_php.php')
-rw-r--r--Widgets/smarty/libs/sysplugins/smarty_internal_resource_php.php119
1 files changed, 119 insertions, 0 deletions
diff --git a/Widgets/smarty/libs/sysplugins/smarty_internal_resource_php.php b/Widgets/smarty/libs/sysplugins/smarty_internal_resource_php.php
new file mode 100644
index 00000000..7463c296
--- /dev/null
+++ b/Widgets/smarty/libs/sysplugins/smarty_internal_resource_php.php
@@ -0,0 +1,119 @@
+<?php
+
+/**
+ * Smarty Internal Plugin Resource PHP
+ * Implements the file system as resource for PHP templates
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled
+{
+ /**
+ * container for short_open_tag directive's value before executing PHP templates
+ *
+ * @var string
+ */
+ protected $short_open_tag;
+
+ /**
+ * Create a new PHP Resource
+
+ */
+ public function __construct()
+ {
+ $this->short_open_tag = ini_get('short_open_tag');
+ }
+
+ /**
+ * 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)
+ {
+ $source->filepath = $this->buildFilepath($source, $_template);
+
+ if ($source->filepath !== false) {
+ if (is_object($source->smarty->security_policy)) {
+ $source->smarty->security_policy->isTrustedResourceDir($source->filepath);
+ }
+
+ $source->uid = sha1($source->filepath);
+ if ($source->smarty->compile_check) {
+ $source->timestamp = @filemtime($source->filepath);
+ $source->exists = !!$source->timestamp;
+ }
+ }
+ }
+
+ /**
+ * populate Source Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return void
+ */
+ public function populateTimestamp(Smarty_Template_Source $source)
+ {
+ $source->timestamp = @filemtime($source->filepath);
+ $source->exists = !!$source->timestamp;
+ }
+
+ /**
+ * Load template's source from file into current template object
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ if ($source->timestamp) {
+ return '';
+ }
+ throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
+ }
+
+ /**
+ * Render and output the template (without using the compiler)
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ * @throws SmartyException if template cannot be loaded or allow_php_templates is disabled
+ */
+ public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template)
+ {
+ if (!$source->smarty->allow_php_templates) {
+ throw new SmartyException("PHP templates are disabled");
+ }
+ if (!$source->exists) {
+ if ($_template->parent instanceof Smarty_Internal_Template) {
+ $parent_resource = " in '{$_template->parent->template_resource}'";
+ } else {
+ $parent_resource = '';
+ }
+ throw new SmartyException("Unable to load template {$source->type} '{$source->name}'{$parent_resource}");
+ }
+
+ // prepare variables
+ extract($_template->getTemplateVars());
+
+ // include PHP template with short open tags enabled
+ ini_set('short_open_tag', '1');
+ /** @var Smarty_Internal_Template $_smarty_template
+ * used in included file
+ */
+ $_smarty_template = $_template;
+ include($source->filepath);
+ ini_set('short_open_tag', $this->short_open_tag);
+ }
+}