aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/template/twig/node/event.php
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2013-07-11 12:11:41 -0700
committerNils Adermann <naderman@naderman.de>2013-07-11 12:11:41 -0700
commit59f34bef087259722e1f7eaa95b96460e007cb30 (patch)
treed7dfcc712537e672a965d924cac679670d09583e /phpBB/includes/template/twig/node/event.php
parent7104aeb77e2f6066cbbda0585fc8523426e4b7c7 (diff)
parent947b907efef43704c620507db17aff4fe115f219 (diff)
downloadforums-59f34bef087259722e1f7eaa95b96460e007cb30.tar
forums-59f34bef087259722e1f7eaa95b96460e007cb30.tar.gz
forums-59f34bef087259722e1f7eaa95b96460e007cb30.tar.bz2
forums-59f34bef087259722e1f7eaa95b96460e007cb30.tar.xz
forums-59f34bef087259722e1f7eaa95b96460e007cb30.zip
Merge pull request #1470 from EXreaction/feature/twig
Feature/twig
Diffstat (limited to 'phpBB/includes/template/twig/node/event.php')
-rw-r--r--phpBB/includes/template/twig/node/event.php79
1 files changed, 79 insertions, 0 deletions
diff --git a/phpBB/includes/template/twig/node/event.php b/phpBB/includes/template/twig/node/event.php
new file mode 100644
index 0000000000..971dea14fa
--- /dev/null
+++ b/phpBB/includes/template/twig/node/event.php
@@ -0,0 +1,79 @@
+<?php
+/**
+*
+* @package phpBB3
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+/**
+* @ignore
+*/
+if (!defined('IN_PHPBB'))
+{
+ exit;
+}
+
+
+class phpbb_template_twig_node_event extends Twig_Node
+{
+ /** @var Twig_Environment */
+ protected $environment;
+
+ public function __construct(Twig_Node_Expression $expr, phpbb_template_twig_environment $environment, $lineno, $tag = null)
+ {
+ $this->environment = $environment;
+
+ parent::__construct(array('expr' => $expr), array(), $lineno, $tag);
+ }
+
+ /**
+ * Compiles the node to PHP.
+ *
+ * @param Twig_Compiler A Twig_Compiler instance
+ */
+ public function compile(Twig_Compiler $compiler)
+ {
+ $compiler->addDebugInfo($this);
+
+ $location = $this->getNode('expr')->getAttribute('name');
+
+ foreach ($this->environment->get_phpbb_extensions() as $ext_namespace => $ext_path)
+ {
+ $ext_namespace = str_replace('/', '_', $ext_namespace);
+
+ if (defined('DEBUG'))
+ {
+ // If debug mode is enabled, lets check for new/removed EVENT
+ // templates on page load rather than at compile. This is
+ // slower, but makes developing extensions easier (no need to
+ // purge the cache when a new event template file is added)
+ $compiler
+ ->write("if (\$this->env->getLoader()->exists('@{$ext_namespace}/{$location}.html')) {\n")
+ ->indent()
+ ;
+ }
+
+ if (defined('DEBUG') || $this->environment->getLoader()->exists('@' . $ext_namespace . '/' . $location . '.html'))
+ {
+ $compiler
+ ->write("\$previous_look_up_order = \$this->env->getNamespaceLookUpOrder();\n")
+
+ // We set the namespace lookup order to be this extension first, then the main path
+ ->write("\$this->env->setNamespaceLookUpOrder(array('{$ext_namespace}', '__main__'));\n")
+ ->write("\$this->env->loadTemplate('@{$ext_namespace}/{$location}.html')->display(\$context);\n")
+ ->write("\$this->env->setNamespaceLookUpOrder(\$previous_look_up_order);\n")
+ ;
+ }
+
+ if (defined('DEBUG'))
+ {
+ $compiler
+ ->outdent()
+ ->write("}\n\n")
+ ;
+ }
+ }
+ }
+}