refactor: remove cross-component runtime dependencies
Moodle Plugin CI / test (push) Successful in 3m20s
Moodle Plugin CI / test (push) Successful in 3m20s
This commit is contained in:
@@ -26,6 +26,48 @@ defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
require_once(__DIR__ . '/locallib.php');
|
||||
|
||||
/**
|
||||
* Returns available event classes grouped by component.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function local_webhooks_get_event_choices() {
|
||||
global $CFG;
|
||||
|
||||
$choices = [];
|
||||
$debug = $CFG->debug;
|
||||
|
||||
// Deprecated core events emit debugging while loading; mirror the core tool_monitor workaround.
|
||||
try {
|
||||
$CFG->debug = DEBUG_NONE;
|
||||
$classes = core_component::get_component_classes_in_namespace(null, 'event');
|
||||
} finally {
|
||||
$CFG->debug = $debug;
|
||||
}
|
||||
|
||||
ksort($classes);
|
||||
foreach (array_keys($classes) as $classname) {
|
||||
if (
|
||||
$classname === \core\event\unknown_logged::class
|
||||
|| !is_subclass_of($classname, \core\event\base::class)
|
||||
|| $classname::is_deprecated()
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$reflection = new ReflectionClass($classname);
|
||||
if ($reflection->isAbstract()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$eventname = '\\' . ltrim($classname, '\\');
|
||||
$component = core_component::get_component_from_classname($classname);
|
||||
$choices[$component][base64_encode($eventname)] = $eventname;
|
||||
}
|
||||
|
||||
return $choices;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getting a list of all services.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user