[feature/twig] Fixing include node

PHPBB3-11598
This commit is contained in:
Nathaniel Guse 2013-07-01 09:20:46 -05:00
parent ecdc73a81a
commit 658d1b6afe

View file

@ -18,28 +18,30 @@ class phpbb_template_twig_node_include extends Twig_Node_Include
{ {
$compiler->addDebugInfo($this); $compiler->addDebugInfo($this);
$location = $this->getNode('expr')->getAttribute('value');
$namespace = false;
if (strpos($location, '@') === 0)
{
$namespace = substr($location, 1, strpos($location, '/') - 1);
$compiler $compiler
->write("\$location = ")
->subcompile($this->getNode('expr'))
->raw(";\n")
->write("\$namespace = false;\n")
->write("if (strpos(\$location, '@') === 0) {\n")
->indent()
->write("\$namespace = substr(\$location, 1, strpos(\$location, '/') - 1);\n")
->write("\$previous_look_up_order = \$this->env->getNamespaceLookUpOrder();\n") ->write("\$previous_look_up_order = \$this->env->getNamespaceLookUpOrder();\n")
// We set the namespace lookup order to be this namespace first, then the main path // We set the namespace lookup order to be this namespace first, then the main path
->write("\$this->env->setNamespaceLookUpOrder(array('" . $namespace . "', '__main__'));\n") ->write("\$this->env->setNamespaceLookUpOrder(array(\$namespace, '__main__'));\n")
->outdent()
->write("}\n")
; ;
}
parent::compile($compiler); parent::compile($compiler);
if ($namespace)
{
$compiler $compiler
->write("if (\$namespace) {\n")
->indent()
->write("\$this->env->setNamespaceLookUpOrder(\$previous_look_up_order);\n") ->write("\$this->env->setNamespaceLookUpOrder(\$previous_look_up_order);\n")
->outdent()
->write("}\n")
; ;
} }
} }
}