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 12namespace Twig\Node; 13 14use Twig\Compiler; 15 16/** 17 * Represents a sandbox node. 18 * 19 * @author Fabien Potencier <fabien@symfony.com> 20 */ 21class SandboxNode extends Node 22{ 23 public function __construct(\Twig_NodeInterface $body, $lineno, $tag = null) 24 { 25 parent::__construct(['body' => $body], [], $lineno, $tag); 26 } 27 28 public function compile(Compiler $compiler) 29 { 30 $compiler 31 ->addDebugInfo($this) 32 ->write("if (!\$alreadySandboxed = \$this->sandbox->isSandboxed()) {\n") 33 ->indent() 34 ->write("\$this->sandbox->enableSandbox();\n") 35 ->outdent() 36 ->write("}\n") 37 ->subcompile($this->getNode('body')) 38 ->write("if (!\$alreadySandboxed) {\n") 39 ->indent() 40 ->write("\$this->sandbox->disableSandbox();\n") 41 ->outdent() 42 ->write("}\n") 43 ; 44 } 45} 46 47class_alias('Twig\Node\SandboxNode', 'Twig_Node_Sandbox'); 48