1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
<?php
/* * This file is part of Twig. * * (c) Fabien Potencier * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */
/** * Twig_Node_SandboxedPrint adds a check for the __toString() method * when the variable is an object and the sandbox is activated. * * When there is a simple Print statement, like {{ article }}, * and if the sandbox is enabled, we need to check that the __toString() * method is allowed if 'article' is an object. * * @author Fabien Potencier <fabien@symfony.com> */ class Twig_Node_SandboxedPrint extends Twig_Node_Print { public function compile(Twig_Compiler $compiler) { $compiler ->addDebugInfo($this) ->write('echo $this->env->getExtension(\'Twig_Extension_Sandbox\')->ensureToStringAllowed(') ->subcompile($this->getNode('expr')) ->raw(");\n") ; }
/** * Removes node filters. * * This is mostly needed when another visitor adds filters (like the escaper one). * * @return Twig_Node */ protected function removeNodeFilter(Twig_Node $node) { if ($node instanceof Twig_Node_Expression_Filter) { return $this->removeNodeFilter($node->getNode('node')); }
return $node; } }
class_alias('Twig_Node_SandboxedPrint', 'Twig\Node\SandboxedPrintNode', false);
|