Differences Between: [Versions 400 and 401] [Versions 400 and 402] [Versions 400 and 403]
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 namespace mod_data\output; 18 19 use moodle_url; 20 use templatable; 21 use renderable; 22 23 /** 24 * Renderable class for the presets table in the database activity. 25 * 26 * @package mod_data 27 * @copyright 2021 Mihail Geshoski <mihail@moodle.com> 28 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 29 */ 30 class presets implements templatable, renderable { 31 32 /** @var int $id The database module id. */ 33 private $id; 34 35 /** @var array $presets The array containing the existing presets. */ 36 private $presets; 37 38 /** @var moodle_url $formactionurl The the action url for the form. */ 39 private $formactionurl; 40 41 /** @var bool $manage Whether the manage preset options should be displayed. */ 42 private $manage; 43 44 /** 45 * The class constructor. 46 * 47 * @param int $id The database module id 48 * @param array $presets The array containing the existing presets 49 * @param moodle_url $formactionurl The the action url for the form 50 * @param bool $manage Whether the manage preset options should be displayed 51 */ 52 public function __construct(int $id, array $presets, moodle_url $formactionurl, bool $manage = false) { 53 $this->id = $id; 54 $this->presets = $presets; 55 $this->formactionurl = $formactionurl; 56 $this->manage = $manage; 57 } 58 59 /** 60 * Export the data for the mustache template. 61 * 62 * @param \renderer_base $output The renderer to be used to render the action bar elements. 63 * @return array 64 */ 65 public function export_for_template(\renderer_base $output): array { 66 67 return [ 68 'd' => $this->id, 69 'formactionul' => $this->formactionurl->out(), 70 'presetstable' => $this->get_presets_table(), 71 ]; 72 } 73 74 /** 75 * Generates and returns the HTML for the presets table. 76 * 77 * @return string 78 */ 79 private function get_presets_table(): string { 80 global $OUTPUT, $PAGE, $DB; 81 82 $presetstable = new \html_table(); 83 $presetstable->align = ['center', 'left', 'left']; 84 $presetstable->size = ['1%', '90%', '1%']; 85 86 foreach ($this->presets as $preset) { 87 $presetname = $preset->name; 88 if (!empty($preset->userid)) { 89 $userfieldsapi = \core_user\fields::for_name(); 90 $namefields = $userfieldsapi->get_sql('', false, '', '', false)->selects; 91 $presetuser = $DB->get_record('user', array('id' => $preset->userid), 'id, ' . $namefields, MUST_EXIST); 92 $username = fullname($presetuser, true); 93 $presetname = "{$presetname} ({$username})"; 94 } 95 96 $deleteaction = ''; 97 if ($this->manage) { 98 if (data_user_can_delete_preset($PAGE->context, $preset) && $preset->name != 'Image gallery') { 99 $deleteactionurl = new moodle_url('/mod/data/preset.php', 100 ['d' => $this->id, 'fullname' => "{$preset->userid}/{$preset->shortname}", 101 'action' => 'confirmdelete']); 102 $deleteaction = $OUTPUT->action_icon($deleteactionurl, 103 new \pix_icon('t/delete', get_string('delete'))); 104 } 105 } 106 107 $presetstable->data[] = [ 108 \html_writer::tag('input', '', array('type' => 'radio', 'name' => 'fullname', 109 'value' => "{$preset->userid}/{$preset->shortname}")), 110 $presetname, 111 $deleteaction, 112 ]; 113 } 114 115 return \html_writer::table($presetstable); 116 } 117 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body