. /** * Library code used by the service control interfaces. * * @package local_webhooks * @copyright 2017 "Valentin Popov" * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ /** * 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; }