See Release Notes
Long Term Support Release
Differences Between: [Versions 310 and 401] [Versions 311 and 401] [Versions 39 and 401]
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 defined('MOODLE_INTERNAL') || die(); 18 19 require_once($CFG->libdir.'/formslib.php'); 20 21 /** 22 * Event list filter form. 23 * 24 * @package report_eventlist 25 * @copyright 2014 Adrian Greeve <adrian@moodle.com> 26 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 27 */ 28 class report_eventlist_filter_form extends moodleform { 29 30 /** 31 * Form definition method. 32 */ 33 public function definition() { 34 35 $mform = $this->_form; 36 $mform->disable_form_change_checker(); 37 $componentarray = $this->_customdata['components']; 38 $edulevelarray = $this->_customdata['edulevel']; 39 $crudarray = $this->_customdata['crud']; 40 41 $mform->addElement('header', 'displayinfo', get_string('filter', 'report_eventlist')); 42 43 $mform->addElement('text', 'eventname', get_string('name', 'report_eventlist')); 44 $mform->setType('eventname', PARAM_RAW); 45 46 $mform->addElement('selectgroups', 'eventcomponent', get_string('component', 'report_eventlist'), 47 self::group_components_by_type($componentarray)); 48 $mform->addElement('select', 'eventedulevel', get_string('edulevel', 'report_eventlist'), $edulevelarray); 49 $mform->addElement('select', 'eventcrud', get_string('crud', 'report_eventlist'), $crudarray); 50 51 $buttonarray = array(); 52 $buttonarray[] = $mform->createElement('button', 'filterbutton', get_string('filter', 'report_eventlist')); 53 $buttonarray[] = $mform->createElement('button', 'clearbutton', get_string('clear', 'report_eventlist')); 54 $mform->addGroup($buttonarray, 'filterbuttons', '', array(' '), false); 55 } 56 57 /** 58 * Group list of component names by type for use in grouped select element 59 * 60 * @param string[] $components 61 * @return array[] Component type => [...Components] 62 */ 63 private static function group_components_by_type(array $components): array { 64 $pluginmanager = core_plugin_manager::instance(); 65 66 $result = []; 67 foreach ($components as $component) { 68 // Core sub-systems are grouped together and are denoted by a distinct lang string. 69 if (strpos($component, 'core') === 0) { 70 $componenttype = get_string('core', 'report_eventlist'); 71 $componentname = get_string('coresubsystem', 'report_eventlist', $component); 72 } else { 73 [$type] = core_component::normalize_component($component); 74 $componenttype = $pluginmanager->plugintype_name_plural($type); 75 $componentname = $pluginmanager->plugin_name($component); 76 } 77 78 $result[$componenttype][$component] = $componentname; 79 } 80 81 // Sort returned components according to their type, followed by name. 82 core_collator::ksort($result); 83 array_walk($result, function(array &$componenttype) { 84 core_collator::asort($componenttype); 85 }); 86 87 // Prepend "All" option. 88 array_unshift($result, [0 => get_string('all', 'report_eventlist')]); 89 return $result; 90 } 91 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body