See Release Notes
Long Term Support Release
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 declare(strict_types=1); 18 19 namespace core_group\reportbuilder\local\entities; 20 21 use core_reportbuilder\local\filters\date; 22 use lang_string; 23 use core_reportbuilder\local\entities\base; 24 use core_reportbuilder\local\helpers\format; 25 use core_reportbuilder\local\report\{column, filter}; 26 27 /** 28 * Group member entity 29 * 30 * @package core_group 31 * @copyright 2022 Paul Holden <paulh@moodle.com> 32 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 33 */ 34 class group_member extends base { 35 36 /** 37 * Database tables that this entity uses and their default aliases 38 * 39 * @return array 40 */ 41 protected function get_default_table_aliases(): array { 42 return [ 43 'groups_members' => 'gm', 44 ]; 45 } 46 47 /** 48 * The default title for this entity 49 * 50 * @return lang_string 51 */ 52 protected function get_default_entity_title(): lang_string { 53 return new lang_string('groupmember', 'core_group'); 54 } 55 56 /** 57 * Initialise the entity 58 * 59 * @return base 60 */ 61 public function initialise(): base { 62 $columns = $this->get_all_columns(); 63 foreach ($columns as $column) { 64 $this->add_column($column); 65 } 66 67 // All the filters defined by the entity can also be used as conditions. 68 $filters = $this->get_all_filters(); 69 foreach ($filters as $filter) { 70 $this 71 ->add_filter($filter) 72 ->add_condition($filter); 73 } 74 75 return $this; 76 } 77 78 /** 79 * Returns list of all available columns 80 * 81 * @return column[] 82 */ 83 protected function get_all_columns(): array { 84 $groupsmembersalias = $this->get_table_alias('groups_members'); 85 86 // Time added column. 87 $columns[] = (new column( 88 'timeadded', 89 new lang_string('timeadded', 'core_reportbuilder'), 90 $this->get_entity_name() 91 )) 92 ->add_joins($this->get_joins()) 93 ->set_type(column::TYPE_TIMESTAMP) 94 ->add_fields("{$groupsmembersalias}.timeadded") 95 ->set_is_sortable(true) 96 ->set_callback([format::class, 'userdate']); 97 98 // Component column. 99 $columns[] = (new column( 100 'component', 101 new lang_string('plugin', 'core'), 102 $this->get_entity_name() 103 )) 104 ->add_joins($this->get_joins()) 105 ->set_type(column::TYPE_TEXT) 106 ->add_fields("{$groupsmembersalias}.component") 107 ->set_is_sortable(true); 108 109 return $columns; 110 } 111 112 /** 113 * Return list of all available filters 114 * 115 * @return filter[] 116 */ 117 protected function get_all_filters(): array { 118 $groupsmembersalias = $this->get_table_alias('groups_members'); 119 120 // Time added filter. 121 $filters[] = (new filter( 122 date::class, 123 'timeadded', 124 new lang_string('timeadded', 'core_reportbuilder'), 125 $this->get_entity_name(), 126 "{$groupsmembersalias}.timeadded" 127 )) 128 ->add_joins($this->get_joins()); 129 130 return $filters; 131 } 132 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body