MDL-69050 lang: Stop using the term blacklist in mustache output engine
[moodle.git] / lib / classes / output / mustache_engine.php
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/>.
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  */
24 namespace core\output;
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;
38     /**
39      * @var string[] Names of helpers that aren't allowed to be called within other helpers.
40      */
41     private $disallowednestedhelpers = [];
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 = []) {
56         if (isset($options['blacklistednestedhelpers'])) {
57             debugging('blacklistednestedhelpers option is deprecated. Use disallowednestedhelpers instead.', DEBUG_DEVELOPER);
58             $this->disallowednestedhelpers = $options['blacklistednestedhelpers'];
59         }
61         if (isset($options['disallowednestedhelpers'])) {
62             $this->disallowednestedhelpers = $options['disallowednestedhelpers'];
63         }
65         parent::__construct($options);
66     }
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         }
81         return $this->helpers;
82     }
83 }