shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

Sandbox.php (1192B)


      1 <?php
      2 
      3 /*
      4  * This file is part of Twig.
      5  *
      6  * (c) 2010 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('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 }