. /** * Perform some custom name mapping for template file names (strip leading component/). * * @package core * @category output * @copyright 2015 Damyon Wiese * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace core\output; use coding_exception; /** * Perform some custom name mapping for template file names. * * @copyright 2015 Damyon Wiese * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @since 2.9 */ class mustache_filesystem_loader extends \Mustache_Loader_FilesystemLoader { /** * Provide a default no-args constructor (we don't really need anything). */ public function __construct() { } /** * Helper function for getting a Mustache template file name. * Uses the leading component to restrict us specific directories. * * @param string $name * @return string Template file name */ protected function getFileName($name) { // Call the Moodle template finder. return mustache_template_finder::get_template_filepath($name); } /** * Only check if baseDir is a directory and requested templates are files if * baseDir is using the filesystem stream wrapper. * * Always check path for mustache_filesystem_loader. * * @return bool Whether to check `is_dir` and `file_exists` */ protected function shouldCheckPath() { return true; } /** * Load a Template by name. * * @param string $name the template name * @return string Mustache Template source */ public function load($name) { global $CFG; if (!empty($CFG->debugtemplateinfo)) { // We use many templates per page. We don't want to allocate more memory than necessary. return "" . parent::load($name) . ""; } return parent::load($name); } }