[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'); $compiler
$namespace = false; ->write("\$location = ")
->subcompile($this->getNode('expr'))
if (strpos($location, '@') === 0) ->raw(";\n")
{ ->write("\$namespace = false;\n")
$namespace = substr($location, 1, strpos($location, '/') - 1); ->write("if (strpos(\$location, '@') === 0) {\n")
->indent()
$compiler ->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
{ ->write("if (\$namespace) {\n")
$compiler ->indent()
->write("\$this->env->setNamespaceLookUpOrder(\$previous_look_up_order);\n") ->write("\$this->env->setNamespaceLookUpOrder(\$previous_look_up_order);\n")
; ->outdent()
} ->write("}\n")
;
} }
} }