Modified some paths to be more generic and not require rewrite. Some instances of phase names have been changed, others are still in process.
123 lines
3.2 KiB
PHP
123 lines
3.2 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of Twig.
|
|
*
|
|
* (c) 2009 Fabien Potencier
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
class Twig_Extension_Escaper extends Twig_Extension
|
|
{
|
|
protected $defaultStrategy;
|
|
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @param string|false|callable $defaultStrategy An escaping strategy
|
|
*
|
|
* @see setDefaultStrategy()
|
|
*/
|
|
public function __construct($defaultStrategy = 'html')
|
|
{
|
|
$this->setDefaultStrategy($defaultStrategy);
|
|
}
|
|
|
|
/**
|
|
* Returns the token parser instances to add to the existing list.
|
|
*
|
|
* @return array An array of Twig_TokenParserInterface or Twig_TokenParserBrokerInterface instances
|
|
*/
|
|
public function getTokenParsers()
|
|
{
|
|
return array(new Twig_TokenParser_AutoEscape());
|
|
}
|
|
|
|
/**
|
|
* Returns the node visitor instances to add to the existing list.
|
|
*
|
|
* @return Twig_NodeVisitorInterface[] An array of Twig_NodeVisitorInterface instances
|
|
*/
|
|
public function getNodeVisitors()
|
|
{
|
|
return array(new Twig_NodeVisitor_Escaper());
|
|
}
|
|
|
|
/**
|
|
* Returns a list of filters to add to the existing list.
|
|
*
|
|
* @return array An array of filters
|
|
*/
|
|
public function getFilters()
|
|
{
|
|
return array(
|
|
new Twig_SimpleFilter('raw', 'twig_raw_filter', array('is_safe' => array('all'))),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Sets the default strategy to use when not defined by the user.
|
|
*
|
|
* The strategy can be a valid PHP callback that takes the template
|
|
* "filename" as an argument and returns the strategy to use.
|
|
*
|
|
* @param string|false|callable $defaultStrategy An escaping strategy
|
|
*/
|
|
public function setDefaultStrategy($defaultStrategy)
|
|
{
|
|
// for BC
|
|
if (true === $defaultStrategy) {
|
|
@trigger_error('Using "true" as the default strategy is deprecated. Use "html" instead.', E_USER_DEPRECATED);
|
|
|
|
$defaultStrategy = 'html';
|
|
}
|
|
|
|
if ('filename' === $defaultStrategy) {
|
|
$defaultStrategy = array('Twig_FileExtensionEscapingStrategy', 'guess');
|
|
}
|
|
|
|
$this->defaultStrategy = $defaultStrategy;
|
|
}
|
|
|
|
/**
|
|
* Gets the default strategy to use when not defined by the user.
|
|
*
|
|
* @param string $filename The template "filename"
|
|
*
|
|
* @return string|false The default strategy to use for the template
|
|
*/
|
|
public function getDefaultStrategy($filename)
|
|
{
|
|
// disable string callables to avoid calling a function named html or js,
|
|
// or any other upcoming escaping strategy
|
|
if (!is_string($this->defaultStrategy) && false !== $this->defaultStrategy) {
|
|
return call_user_func($this->defaultStrategy, $filename);
|
|
}
|
|
|
|
return $this->defaultStrategy;
|
|
}
|
|
|
|
/**
|
|
* Returns the name of the extension.
|
|
*
|
|
* @return string The extension name
|
|
*/
|
|
public function getName()
|
|
{
|
|
return 'escaper';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Marks a variable as being safe.
|
|
*
|
|
* @param string $string A PHP variable
|
|
*
|
|
* @return string
|
|
*/
|
|
function twig_raw_filter($string)
|
|
{
|
|
return $string;
|
|
}
|