Project

General

Profile

« Previous | Next » 

Revision 1852

Added by darkviper over 11 years ago

updated Twig template engine to stable version 1.11.1 step2

View differences:

Environment.php
17 17
 */
18 18
class Twig_Environment
19 19
{
20
    const VERSION = '1.7.0';
20
    const VERSION = '1.11.1';
21 21

  
22 22
    protected $charset;
23 23
    protected $loader;
......
50 50
     *
51 51
     * Available options:
52 52
     *
53
     *  * debug: When set to `true`, the generated templates have a __toString()
54
     *           method that you can use to display the generated nodes (default to
55
     *           false).
53
     *  * debug: When set to true, it automatically set "auto_reload" to true as
54
     *           well (default to false).
56 55
     *
57 56
     *  * charset: The charset used by the templates (default to utf-8).
58 57
     *
......
60 59
     *                         templates (default to Twig_Template).
61 60
     *
62 61
     *  * cache: An absolute path where to store the compiled templates, or
63
     *           false to disable compilation cache (default)
62
     *           false to disable compilation cache (default).
64 63
     *
65 64
     *  * auto_reload: Whether to reload the template is the original source changed.
66 65
     *                 If you don't provide the auto_reload option, it will be
......
69 68
     *  * strict_variables: Whether to ignore invalid variables in templates
70 69
     *                      (default to false).
71 70
     *
72
     *  * autoescape: Whether to enable auto-escaping (default to true);
71
     *  * autoescape: Whether to enable auto-escaping (default to html):
72
     *                  * false: disable auto-escaping
73
     *                  * true: equivalent to html
74
     *                  * html, js: set the autoescaping to one of the supported strategies
75
     *                  * PHP callback: a PHP callback that returns an escaping strategy based on the template "filename"
73 76
     *
74 77
     *  * optimizations: A flag that indicates which optimizations to apply
75 78
     *                   (default to -1 which means that all optimizations are enabled;
76
     *                   set it to 0 to disable)
79
     *                   set it to 0 to disable).
77 80
     *
78
     * @param Twig_LoaderInterface   $loader  A Twig_LoaderInterface instance
79
     * @param array                  $options An array of options
81
     * @param Twig_LoaderInterface $loader  A Twig_LoaderInterface instance
82
     * @param array                $options An array of options
80 83
     */
81 84
    public function __construct(Twig_LoaderInterface $loader = null, $options = array())
82 85
    {
......
89 92
            'charset'             => 'UTF-8',
90 93
            'base_template_class' => 'Twig_Template',
91 94
            'strict_variables'    => false,
92
            'autoescape'          => true,
95
            'autoescape'          => 'html',
93 96
            'cache'               => false,
94 97
            'auto_reload'         => null,
95 98
            'optimizations'       => -1,
......
101 104
        $this->autoReload         = null === $options['auto_reload'] ? $this->debug : (bool) $options['auto_reload'];
102 105
        $this->extensions         = array(
103 106
            'core'      => new Twig_Extension_Core(),
104
            'escaper'   => new Twig_Extension_Escaper((bool) $options['autoescape']),
107
            'escaper'   => new Twig_Extension_Escaper($options['autoescape']),
105 108
            'optimizer' => new Twig_Extension_Optimizer($options['optimizations']),
106 109
        );
107 110
        $this->strictVariables    = (bool) $options['strict_variables'];
......
109 112
        $this->setCache($options['cache']);
110 113
        $this->functionCallbacks = array();
111 114
        $this->filterCallbacks = array();
115
        $this->staging = array(
116
            'functions'     => array(),
117
            'filters'       => array(),
118
            'tests'         => array(),
119
            'token_parsers' => array(),
120
            'visitors'      => array(),
121
            'globals'       => array(),
122
        );
112 123
    }
113 124

  
114 125
    /**
......
251 262
    /**
252 263
     * Gets the template class associated with the given string.
253 264
     *
254
     * @param string $name The name for which to calculate the template class name
265
     * @param string  $name  The name for which to calculate the template class name
266
     * @param integer $index The index if it is an embedded template
255 267
     *
256 268
     * @return string The template class name
257 269
     */
258
    public function getTemplateClass($name)
270
    public function getTemplateClass($name, $index = null)
259 271
    {
260
        return $this->templateClassPrefix.md5($this->loader->getCacheKey($name));
272
        return $this->templateClassPrefix.md5($this->loader->getCacheKey($name)).(null === $index ? '' : '_'.$index);
261 273
    }
262 274

  
263 275
    /**
......
297 309
    /**
298 310
     * Loads a template by name.
299 311
     *
300
     * @param  string  $name  The template name
312
     * @param string  $name  The template name
313
     * @param integer $index The index if it is an embedded template
301 314
     *
302 315
     * @return Twig_TemplateInterface A template instance representing the given template name
303 316
     */
304
    public function loadTemplate($name)
317
    public function loadTemplate($name, $index = null)
305 318
    {
306
        $cls = $this->getTemplateClass($name);
319
        $cls = $this->getTemplateClass($name, $index);
307 320

  
308 321
        if (isset($this->loadedTemplates[$cls])) {
309 322
            return $this->loadedTemplates[$cls];
......
692 705

  
693 706
            foreach ($this->getExtensions() as $extension) {
694 707
                $parsers = $extension->getTokenParsers();
695
                foreach($parsers as $parser) {
708
                foreach ($parsers as $parser) {
696 709
                    if ($parser instanceof Twig_TokenParserInterface) {
697 710
                        $this->parsers->addTokenParser($parser);
698 711
                    } elseif ($parser instanceof Twig_TokenParserBrokerInterface) {
699 712
                        $this->parsers->addTokenParserBroker($parser);
700 713
                    } else {
701
                        throw new Twig_Error_Runtime('getTokenParsers() must return an array of Twig_TokenParserInterface or Twig_TokenParserBrokerInterface instances');
714
                        throw new LogicException('getTokenParsers() must return an array of Twig_TokenParserInterface or Twig_TokenParserBrokerInterface instances');
702 715
                    }
703 716
                }
704 717
            }
......
745 758
    public function getNodeVisitors()
746 759
    {
747 760
        if (null === $this->visitors) {
748
            $this->visitors = isset($this->staging['visitors']) ? $this->staging['visitors'] : array();
749 761
            foreach ($this->getExtensions() as $extension) {
750
                $this->visitors = array_merge($this->visitors, $extension->getNodeVisitors());
762
                foreach ($extension->getNodeVisitors() as $visitor) {
763
                    $this->addNodeVisitor($visitor);
764
                }
751 765
            }
766

  
767
            $this->visitors = $this->staging['visitors'];
752 768
        }
753 769

  
754 770
        return $this->visitors;
......
825 841
    public function getFilters()
826 842
    {
827 843
        if (null === $this->filters) {
828
            $this->filters = isset($this->staging['filters']) ? $this->staging['filters'] : array();
829 844
            foreach ($this->getExtensions() as $extension) {
830
                $this->filters = array_merge($this->filters, $extension->getFilters());
845
                foreach ($extension->getFilters() as $name => $filter) {
846
                    $this->addFilter($name, $filter);
847
                }
831 848
            }
849

  
850
            $this->filters = $this->staging['filters'];
832 851
        }
833 852

  
834 853
        return $this->filters;
......
854 873
    public function getTests()
855 874
    {
856 875
        if (null === $this->tests) {
857
            $this->tests = isset($this->staging['tests']) ? $this->staging['tests'] : array();
858 876
            foreach ($this->getExtensions() as $extension) {
859
                $this->tests = array_merge($this->tests, $extension->getTests());
877
                foreach ($extension->getTests() as $name => $test) {
878
                    $this->addTest($name, $test);
879
                }
860 880
            }
881

  
882
            $this->tests = $this->staging['tests'];
861 883
        }
862 884

  
863 885
        return $this->tests;
......
934 956
    public function getFunctions()
935 957
    {
936 958
        if (null === $this->functions) {
937
            $this->functions = isset($this->staging['functions']) ? $this->staging['functions'] : array();
938 959
            foreach ($this->getExtensions() as $extension) {
939
                $this->functions = array_merge($this->functions, $extension->getFunctions());
960
                foreach ($extension->getFunctions() as $name => $function) {
961
                    $this->addFunction($name, $function);
962
                }
940 963
            }
964

  
965
            $this->functions = $this->staging['functions'];
941 966
        }
942 967

  
943 968
        return $this->functions;
......
1069 1094
        if (false !== @file_put_contents($tmpFile, $content)) {
1070 1095
            // rename does not work on Win32 before 5.2.6
1071 1096
            if (@rename($tmpFile, $file) || (@copy($tmpFile, $file) && unlink($tmpFile))) {
1072
                @chmod($file, 0644);
1097
                @chmod($file, 0666 & ~umask());
1073 1098

  
1074 1099
                return;
1075 1100
            }
1076 1101
        }
1077 1102

  
1078
        throw new Twig_Error_Runtime(sprintf('Failed to write cache file "%s".', $file));
1103
        throw new RuntimeException(sprintf('Failed to write cache file "%s".', $file));
1079 1104
    }
1080 1105
}

Also available in: Unified diff