MDL-69050 lang: Stop using the term blacklist in mustache output engine
[moodle.git] / lib / classes / output / mustache_engine.php
CommitLineData
f9664b0c
RW
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
24namespace 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 */
32class 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 */
972340b6 41 private $disallowednestedhelpers = [];
f9664b0c
RW
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.
972340b6 50 * 'disallowednestedhelpers' => ['js']
f9664b0c
RW
51 * ];
52 * @param array $options [description]
53 */
54 public function __construct(array $options = []) {
972340b6 55
f9664b0c 56 if (isset($options['blacklistednestedhelpers'])) {
972340b6
DM
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'];
f9664b0c
RW
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)) {
972340b6 78 $this->helpers = new mustache_helper_collection(null, $this->disallowednestedhelpers);
f9664b0c
RW
79 }
80
81 return $this->helpers;
82 }
83}