AutorÃa | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** tool_admin_presets specific renderers** @package tool_admin_presets* @copyright 2021 Amaia Anabitarte <amaia@moodle.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/namespace tool_admin_presets\output;use core_adminpresets\manager;use renderable;use templatable;use renderer_base;use stdClass;/*** Class containing data for admin_presets tool** @copyright 2021 Amaia Anabitarte <amaia@moodle.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/class presets_list implements renderable, templatable {/*** @var stdClass[] Array of admin presets.*/private $presets;/*** @var bool Wether the action menu is visible.*/private $showactions;/*** Construct this renderable.** @param stdClass[] $presets Array of existing admin presets.* @param bool $showactions Whether actions should be displayed or not.*/public function __construct(array $presets, bool $showactions = false) {$this->presets = $presets;$this->showactions = $showactions;}/*** Export the data.** @param renderer_base $output* @return stdClass*/public function export_for_template(renderer_base $output): stdClass {global $DB;$context = new stdClass();$context->presets = [];foreach ($this->presets as $preset) {if ($preset->timeimported) {$timeimportedstring = userdate($preset->timeimported);} else {$timeimportedstring = '';}$data = ['name' => format_text($preset->name, FORMAT_PLAIN),'description' => format_text($preset->comments, FORMAT_HTML),'release' => format_text($preset->moodlerelease, FORMAT_PLAIN),'author' => format_text($preset->author, FORMAT_PLAIN),'site' => format_text(clean_text($preset->site, PARAM_URL), FORMAT_PLAIN),'timecreated' => userdate($preset->timecreated),'timeimported' => $timeimportedstring];if ($this->showactions) {// Preset actions.$actionsmenu = new \action_menu();$actionsmenu->set_menu_trigger(get_string('actions'));$actionsmenu->set_owner_selector('preset-actions-' . $preset->id);$loadlink = new \moodle_url('/admin/tool/admin_presets/index.php', ['action' => 'load', 'id' => $preset->id]);$actionsmenu->add(new \action_menu_link_secondary($loadlink, new \pix_icon('t/play', ''),get_string('applyaction', 'tool_admin_presets')));$downloadlink = new \moodle_url('/admin/tool/admin_presets/index.php',['action' => 'export', 'mode' => 'download_xml', 'sesskey' => sesskey(), 'id' => $preset->id]);$actionsmenu->add(new \action_menu_link_secondary($downloadlink,new \pix_icon('t/download', ''),get_string('download')));// Delete button won't be displayed for the pre-installed core "Starter" and "Full" presets.if ($preset->iscore == manager::NONCORE_PRESET) {$deletelink = new \moodle_url('/admin/tool/admin_presets/index.php',['action' => 'delete', 'id' => $preset->id]);$actionsmenu->add(new \action_menu_link_secondary($deletelink,new \pix_icon('i/delete', ''),get_string('delete')));}// Look for preset applications.if ($DB->get_records('adminpresets_app', ['adminpresetid' => $preset->id])) {$params = ['action' => 'rollback', 'id' => $preset->id];$rollbacklink = new \moodle_url('/admin/tool/admin_presets/index.php', $params);$actionsmenu->add(new \action_menu_link_secondary($rollbacklink,new \pix_icon('i/reload', ''),get_string('showhistory', 'tool_admin_presets')));}$data['actions'] = $actionsmenu->export_for_template($output);}$context->presets[] = $data;}$context->nopresets = empty($context->presets);$context->showactions = $this->showactions;return $context;}}