658e068e14143aa0cef3e1ea622c17ad5a696c03
[yaffs-website] / vendor / twig / twig / lib / Twig / Node / Sandbox.php
1 <?php
2
3 /*
4  * This file is part of Twig.
5  *
6  * (c) Fabien Potencier
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 /**
13  * Represents a sandbox node.
14  *
15  * @author Fabien Potencier <fabien@symfony.com>
16  */
17 class Twig_Node_Sandbox extends Twig_Node
18 {
19     public function __construct(Twig_NodeInterface $body, $lineno, $tag = null)
20     {
21         parent::__construct(array('body' => $body), array(), $lineno, $tag);
22     }
23
24     public function compile(Twig_Compiler $compiler)
25     {
26         $compiler
27             ->addDebugInfo($this)
28             ->write("\$sandbox = \$this->env->getExtension('Twig_Extension_Sandbox');\n")
29             ->write("if (!\$alreadySandboxed = \$sandbox->isSandboxed()) {\n")
30             ->indent()
31             ->write("\$sandbox->enableSandbox();\n")
32             ->outdent()
33             ->write("}\n")
34             ->subcompile($this->getNode('body'))
35             ->write("if (!\$alreadySandboxed) {\n")
36             ->indent()
37             ->write("\$sandbox->disableSandbox();\n")
38             ->outdent()
39             ->write("}\n")
40         ;
41     }
42 }