shop.balmet.com

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

Sandbox.php (2257B)


      1 <?php
      2 
      3 /*
      4  * This file is part of Twig.
      5  *
      6  * (c) 2009 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 class Twig_Extension_Sandbox extends Twig_Extension
     12 {
     13     protected $sandboxedGlobally;
     14     protected $sandboxed;
     15     protected $policy;
     16 
     17     public function __construct(Twig_Sandbox_SecurityPolicyInterface $policy, $sandboxed = false)
     18     {
     19         $this->policy = $policy;
     20         $this->sandboxedGlobally = $sandboxed;
     21     }
     22 
     23     public function getTokenParsers()
     24     {
     25         return array(new Twig_TokenParser_Sandbox());
     26     }
     27 
     28     public function getNodeVisitors()
     29     {
     30         return array(new Twig_NodeVisitor_Sandbox());
     31     }
     32 
     33     public function enableSandbox()
     34     {
     35         $this->sandboxed = true;
     36     }
     37 
     38     public function disableSandbox()
     39     {
     40         $this->sandboxed = false;
     41     }
     42 
     43     public function isSandboxed()
     44     {
     45         return $this->sandboxedGlobally || $this->sandboxed;
     46     }
     47 
     48     public function isSandboxedGlobally()
     49     {
     50         return $this->sandboxedGlobally;
     51     }
     52 
     53     public function setSecurityPolicy(Twig_Sandbox_SecurityPolicyInterface $policy)
     54     {
     55         $this->policy = $policy;
     56     }
     57 
     58     public function getSecurityPolicy()
     59     {
     60         return $this->policy;
     61     }
     62 
     63     public function checkSecurity($tags, $filters, $functions)
     64     {
     65         if ($this->isSandboxed()) {
     66             $this->policy->checkSecurity($tags, $filters, $functions);
     67         }
     68     }
     69 
     70     public function checkMethodAllowed($obj, $method)
     71     {
     72         if ($this->isSandboxed()) {
     73             $this->policy->checkMethodAllowed($obj, $method);
     74         }
     75     }
     76 
     77     public function checkPropertyAllowed($obj, $method)
     78     {
     79         if ($this->isSandboxed()) {
     80             $this->policy->checkPropertyAllowed($obj, $method);
     81         }
     82     }
     83 
     84     public function ensureToStringAllowed($obj)
     85     {
     86         if ($this->isSandboxed() && is_object($obj)) {
     87             $this->policy->checkMethodAllowed($obj, '__toString');
     88         }
     89 
     90         return $obj;
     91     }
     92 
     93     public function getName()
     94     {
     95         return 'sandbox';
     96     }
     97 }