Merge branch 'MDL-72498' of git://github.com/paulholden/moodle

This commit is contained in:
Víctor Déniz 2021-10-12 00:52:16 +01:00
commit 04f7132ca6
6 changed files with 64 additions and 11 deletions

View File

@ -40,7 +40,47 @@ class report_eventlist_list_generator {
* @return array All events.
*/
public static function get_all_events_list($detail = true) {
return array_merge(self::get_core_events_list($detail), self::get_non_core_event_list($detail));
global $CFG;
// Disable developer debugging as deprecated events will fire warnings.
// Setup backup variables to restore the following settings back to what they were when we are finished.
$debuglevel = $CFG->debug;
$debugdisplay = $CFG->debugdisplay;
$debugdeveloper = $CFG->debugdeveloper;
$CFG->debug = 0;
$CFG->debugdisplay = false;
$CFG->debugdeveloper = false;
// List of exceptional events that will cause problems if displayed.
$eventsignore = [
\core\event\unknown_logged::class,
\logstore_legacy\event\legacy_logged::class,
];
$eventinformation = [];
$events = core_component::get_component_classes_in_namespace(null, 'event');
foreach (array_keys($events) as $event) {
// We need to filter all classes that extend event base, or the base class itself.
if (is_a($event, \core\event\base::class, true) && !in_array($event, $eventsignore)) {
if ($detail) {
$reflectionclass = new ReflectionClass($event);
if (!$reflectionclass->isAbstract()) {
$eventinformation = self::format_data($eventinformation, "\\${event}");
}
} else {
$parts = explode('\\', $event);
$eventinformation["\\${event}"] = array_shift($parts);
}
}
}
// Now enable developer debugging as event information has been retrieved.
$CFG->debug = $debuglevel;
$CFG->debugdisplay = $debugdisplay;
$CFG->debugdeveloper = $debugdeveloper;
return $eventinformation;
}
/**
@ -48,10 +88,15 @@ class report_eventlist_list_generator {
*
* @param bool $detail True will return details, but no abstract classes, False will return all events, but no details.
* @return array Core events.
*
* @deprecated since 4.0 use {@see get_all_events_list} instead
*/
public static function get_core_events_list($detail = true) {
global $CFG;
debugging(__FUNCTION__ . '() is deprecated, please use report_eventlist_list_generator::get_all_events_list() instead',
DEBUG_DEVELOPER);
// Disable developer debugging as deprecated events will fire warnings.
// Setup backup variables to restore the following settings back to what they were when we are finished.
$debuglevel = $CFG->debug;
@ -173,9 +218,15 @@ class report_eventlist_list_generator {
*
* @param bool $detail True will return details, but no abstract classes, False will return all events, but no details.
* @return array A list of events from all plug-ins.
*
* @deprecated since 4.0 use {@see get_all_events_list} instead
*/
public static function get_non_core_event_list($detail = true) {
global $CFG;
debugging(__FUNCTION__ . '() is deprecated, please use report_eventlist_list_generator::get_all_events_list() instead',
DEBUG_DEVELOPER);
// Disable developer debugging as deprecated events will fire warnings.
// Setup backup variables to restore the following settings back to what they were when we are finished.
$debuglevel = $CFG->debug;

View File

@ -0,0 +1,8 @@
This file describes API changes in /report/eventlist/*,
information provided here is intended especially for developers.
=== 4.0 ===
* The following methods have been deprecated in favour of a single `get_all_events_list` method:
- report_eventlist_list_generator::get_core_events_list
- report_eventlist_list_generator::get_non_core_event_list

View File

@ -181,8 +181,6 @@ Y.extend(EventFilter, Y.Base, {
_totalFilter: function() {
// Get all of the details of the filter elements
var eventNameFilter = this._eventName.get('value').toLowerCase(),
// Component selected text.
componentFilter = this._component.get('options').item(this._component.get('selectedIndex')).get('text').toLowerCase(),
// Component selected value.
componentValue = this._component.get('value'),
// Education level selected text.
@ -201,7 +199,7 @@ Y.extend(EventFilter, Y.Base, {
// These variables will either be false or true depending on the statement outcome.
var fullEventText = Y.Node.create(this.get('tabledata')[i].fulleventname).get('text'),
eventNameValue = fullEventText.toLowerCase().indexOf(eventNameFilter) >= 0,
componentFilterValue = this.get('tabledata')[i].component.toLowerCase().indexOf(componentFilter) >= 0,
componentFilterValue = fullEventText.toLowerCase().indexOf('\\' + componentValue + '\\event\\') >= 0,
eduLevelFilterValue = this.get('tabledata')[i].edulevel.toLowerCase().indexOf(eduLevelFilter) >= 0,
crudFilterValue = this.get('tabledata')[i].crud.toLowerCase().indexOf(crudFilter) >= 0;
// If the name field is empty then add to the filter.

View File

@ -1 +1 @@
YUI.add("moodle-report_eventlist-eventfilter",function(g,e){function t(){t.superclass.constructor.apply(this,arguments)}var l="#id_eventname",n="#id_eventcomponent",i="#id_eventedulevel",a="#id_eventcrud",r="#id_filterbutton",s="#id_clearbutton";g.extend(t,g.Base,{_table:null,_eventName:null,_component:null,_eduLevel:null,_crud:null,initializer:function(){var e=g.one(r),t=g.one(s);this._createTable(this.get("tabledata")),this._eventName=g.one(l),this._component=g.one(n),this._eduLevel=g.one(i),this._crud=g.one(a),this._eventName.on("valuechange",this._totalFilter,this),e.on("click",this._totalFilter,this),t.on("click",this._clearFilter,this)},_createTable:function(e){var t=new g.DataTable({columns:[{key:"fulleventname",label:M.util.get_string("eventname","report_eventlist"),allowHTML:!0,sortable:!0,sortFn:function(e,t,l){var n=e.getAttrs().raweventname,i=t.getAttrs().raweventname<n?1:-1;return l?-i:i},title:M.util.get_string("eventname","report_eventlist")},{key:"component",label:M.util.get_string("component","report_eventlist"),allowHTML:!0,sortable:!0,title:M.util.get_string("component","report_eventlist")},{key:"edulevel",label:M.util.get_string("edulevel","report_eventlist"),sortable:!0,title:M.util.get_string("edulevel","report_eventlist")},{key:"crud",label:M.util.get_string("crud","report_eventlist"),sortable:!0,title:M.util.get_string("crud","report_eventlist")},{key:"objecttable",label:M.util.get_string("affectedtable","report_eventlist"),sortable:!0,title:M.util.get_string("affectedtable","report_eventlist")},{key:"since",label:M.util.get_string("since","report_eventlist"),sortable:!0,title:M.util.get_string("since","report_eventlist")},{key:"legacyevent",label:M.util.get_string("legacyevent","report_eventlist"),sortable:!0,title:M.util.get_string("legacyevent","report_eventlist")}],data:e,strings:{sortBy:"{title}",reverseSortBy:"{title}"}});return t.render("#report-eventlist-table"),t.get("boundingBox").addClass("report-eventlist-datatable-table"),this._table=t,this},_totalFilter:function(){var e,t,l,n,i,a=this._eventName.get("value").toLowerCase(),r=this._component.get("options").item(this._component.get("selectedIndex")).get("text").toLowerCase(),s=this._component.get("value"),o=this._eduLevel.get("options").item(this._eduLevel.get("selectedIndex")).get("text").toLowerCase(),u=this._eduLevel.get("value"),_=this._crud.get("options").item(this._crud.get("selectedIndex")).get("text").toLowerCase(),v=this._crud.get("value"),d=[];for(e=0;e<this.get("tabledata").length;e++)t=0<=g.Node.create(this.get("tabledata")[e].fulleventname).get("text").toLowerCase().indexOf(a),l=0<=this.get("tabledata")[e].component.toLowerCase().indexOf(r),n=0<=this.get("tabledata")[e].edulevel.toLowerCase().indexOf(o),i=0<=this.get("tabledata")[e].crud.toLowerCase().indexOf(_),""===a&&(t=!0),"0"===s&&(l=!0),"0"===u&&(n=!0),"0"===v&&(i=!0),t&&l&&n&&i&&d.push(this.get("tabledata")[e]);this._table.set("data",d)},_clearFilter:function(){this._eventName.set("value",""),this._component.set("value","0"),this._eduLevel.set("value","0"),this._crud.set("value","0"),this._table.set("data",this.get("tabledata"))}},{NAME:"eventFilter",ATTRS:{tabledata:{value:null}}}),g.namespace("M.report_eventlist.EventFilter").init=function(e){return new t(e)}},"@VERSION@",{requires:["base","event","node","node-event-delegate","datatable","autocomplete","autocomplete-filters"]});
YUI.add("moodle-report_eventlist-eventfilter",function(g,e){function t(){t.superclass.constructor.apply(this,arguments)}var l="#id_eventname",n="#id_eventcomponent",i="#id_eventedulevel",a="#id_eventcrud",r="#id_filterbutton",s="#id_clearbutton";g.extend(t,g.Base,{_table:null,_eventName:null,_component:null,_eduLevel:null,_crud:null,initializer:function(){var e=g.one(r),t=g.one(s);this._createTable(this.get("tabledata")),this._eventName=g.one(l),this._component=g.one(n),this._eduLevel=g.one(i),this._crud=g.one(a),this._eventName.on("valuechange",this._totalFilter,this),e.on("click",this._totalFilter,this),t.on("click",this._clearFilter,this)},_createTable:function(e){var t=new g.DataTable({columns:[{key:"fulleventname",label:M.util.get_string("eventname","report_eventlist"),allowHTML:!0,sortable:!0,sortFn:function(e,t,l){var n=e.getAttrs().raweventname,i=t.getAttrs().raweventname<n?1:-1;return l?-i:i},title:M.util.get_string("eventname","report_eventlist")},{key:"component",label:M.util.get_string("component","report_eventlist"),allowHTML:!0,sortable:!0,title:M.util.get_string("component","report_eventlist")},{key:"edulevel",label:M.util.get_string("edulevel","report_eventlist"),sortable:!0,title:M.util.get_string("edulevel","report_eventlist")},{key:"crud",label:M.util.get_string("crud","report_eventlist"),sortable:!0,title:M.util.get_string("crud","report_eventlist")},{key:"objecttable",label:M.util.get_string("affectedtable","report_eventlist"),sortable:!0,title:M.util.get_string("affectedtable","report_eventlist")},{key:"since",label:M.util.get_string("since","report_eventlist"),sortable:!0,title:M.util.get_string("since","report_eventlist")},{key:"legacyevent",label:M.util.get_string("legacyevent","report_eventlist"),sortable:!0,title:M.util.get_string("legacyevent","report_eventlist")}],data:e,strings:{sortBy:"{title}",reverseSortBy:"{title}"}});return t.render("#report-eventlist-table"),t.get("boundingBox").addClass("report-eventlist-datatable-table"),this._table=t,this},_totalFilter:function(){var e,t,l,n,i,a,r=this._eventName.get("value").toLowerCase(),s=this._component.get("value"),o=this._eduLevel.get("options").item(this._eduLevel.get("selectedIndex")).get("text").toLowerCase(),u=this._eduLevel.get("value"),v=this._crud.get("options").item(this._crud.get("selectedIndex")).get("text").toLowerCase(),_=this._crud.get("value"),d=[];for(e=0;e<this.get("tabledata").length;e++)l=0<=(t=g.Node.create(this.get("tabledata")[e].fulleventname).get("text")).toLowerCase().indexOf(r),n=0<=t.toLowerCase().indexOf("\\"+s+"\\event\\"),i=0<=this.get("tabledata")[e].edulevel.toLowerCase().indexOf(o),a=0<=this.get("tabledata")[e].crud.toLowerCase().indexOf(v),""===r&&(l=!0),"0"===s&&(n=!0),"0"===u&&(i=!0),"0"===_&&(a=!0),l&&n&&i&&a&&d.push(this.get("tabledata")[e]);this._table.set("data",d)},_clearFilter:function(){this._eventName.set("value",""),this._component.set("value","0"),this._eduLevel.set("value","0"),this._crud.set("value","0"),this._table.set("data",this.get("tabledata"))}},{NAME:"eventFilter",ATTRS:{tabledata:{value:null}}}),g.namespace("M.report_eventlist.EventFilter").init=function(e){return new t(e)}},"@VERSION@",{requires:["base","event","node","node-event-delegate","datatable","autocomplete","autocomplete-filters"]});

View File

@ -181,8 +181,6 @@ Y.extend(EventFilter, Y.Base, {
_totalFilter: function() {
// Get all of the details of the filter elements
var eventNameFilter = this._eventName.get('value').toLowerCase(),
// Component selected text.
componentFilter = this._component.get('options').item(this._component.get('selectedIndex')).get('text').toLowerCase(),
// Component selected value.
componentValue = this._component.get('value'),
// Education level selected text.
@ -201,7 +199,7 @@ Y.extend(EventFilter, Y.Base, {
// These variables will either be false or true depending on the statement outcome.
var fullEventText = Y.Node.create(this.get('tabledata')[i].fulleventname).get('text'),
eventNameValue = fullEventText.toLowerCase().indexOf(eventNameFilter) >= 0,
componentFilterValue = this.get('tabledata')[i].component.toLowerCase().indexOf(componentFilter) >= 0,
componentFilterValue = fullEventText.toLowerCase().indexOf('\\' + componentValue + '\\event\\') >= 0,
eduLevelFilterValue = this.get('tabledata')[i].edulevel.toLowerCase().indexOf(eduLevelFilter) >= 0,
crudFilterValue = this.get('tabledata')[i].crud.toLowerCase().indexOf(crudFilter) >= 0;
// If the name field is empty then add to the filter.

View File

@ -179,8 +179,6 @@ Y.extend(EventFilter, Y.Base, {
_totalFilter: function() {
// Get all of the details of the filter elements
var eventNameFilter = this._eventName.get('value').toLowerCase(),
// Component selected text.
componentFilter = this._component.get('options').item(this._component.get('selectedIndex')).get('text').toLowerCase(),
// Component selected value.
componentValue = this._component.get('value'),
// Education level selected text.
@ -199,7 +197,7 @@ Y.extend(EventFilter, Y.Base, {
// These variables will either be false or true depending on the statement outcome.
var fullEventText = Y.Node.create(this.get('tabledata')[i].fulleventname).get('text'),
eventNameValue = fullEventText.toLowerCase().indexOf(eventNameFilter) >= 0,
componentFilterValue = this.get('tabledata')[i].component.toLowerCase().indexOf(componentFilter) >= 0,
componentFilterValue = fullEventText.toLowerCase().indexOf('\\' + componentValue + '\\event\\') >= 0,
eduLevelFilterValue = this.get('tabledata')[i].edulevel.toLowerCase().indexOf(eduLevelFilter) >= 0,
crudFilterValue = this.get('tabledata')[i].crud.toLowerCase().indexOf(crudFilter) >= 0;
// If the name field is empty then add to the filter.