Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
/**
18
 * Custom Moodle engine for mustache.
19
 *
20
 * @copyright  2019 Ryan Wyllie <ryan@moodle.com>
21
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
22
 */
23
 
24
namespace core\output;
25
 
26
/**
27
 * Custom Moodle engine for mustache.
28
 *
29
 * @copyright  2019 Ryan Wyllie <ryan@moodle.com>
30
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
31
 */
32
class mustache_engine extends \Mustache_Engine {
33
    /**
34
     * @var mustache_helper_collection
35
     */
36
    private $helpers;
37
 
38
    /**
39
     * @var string[] Names of helpers that aren't allowed to be called within other helpers.
40
     */
41
    private $disallowednestedhelpers = [];
42
 
43
    /**
44
     * Mustache engine constructor.
45
     *
46
     * This provides an additional option to the parent \Mustache_Engine implementation:
47
     * $options = [
48
     *      // A list of helpers (by name) to prevent from executing within the rendering
49
     *      // of other helpers.
50
     *      'disallowednestedhelpers' => ['js']
51
     * ];
52
     * @param array $options [description]
53
     */
54
    public function __construct(array $options = []) {
55
 
56
        if (isset($options['blacklistednestedhelpers'])) {
57
            debugging('blacklistednestedhelpers option is deprecated. Use disallowednestedhelpers instead.', DEBUG_DEVELOPER);
58
            $this->disallowednestedhelpers = $options['blacklistednestedhelpers'];
59
        }
60
 
61
        if (isset($options['disallowednestedhelpers'])) {
62
            $this->disallowednestedhelpers = $options['disallowednestedhelpers'];
63
        }
64
 
65
        parent::__construct($options);
66
    }
67
 
68
    /**
69
     * Get the current set of Mustache helpers.
70
     *
71
     * @see Mustache_Engine::setHelpers
72
     *
73
     * @return \Mustache_HelperCollection
74
     */
75
    public function getHelpers()
76
    {
77
        if (!isset($this->helpers)) {
78
            $this->helpers = new mustache_helper_collection(null, $this->disallowednestedhelpers);
79
        }
80
 
81
        return $this->helpers;
82
    }
83
}