FMCorz / moodle-block_xp

A gamification plugin for Moodle allowing students to gain experience points and level up.
https://levelup.plus/?ref=github
149 stars 41 forks source link

Deprecated events from mod_lesson are loaded in point rules settings, causing debug messages. #155

Closed tsbartel closed 1 year ago

tsbartel commented 1 year ago

The events "mod_lesson\event\highscore_added" and "mod_lesson\event\highscores_viewed" are loaded when viewing the point rules settings.

Debug message:

mod_lesson\event\highscores_viewed has been deprecated. Since the functionality no longer resides in the lesson module.
line 31 of /mod/lesson/classes/event/highscores_viewed.php: call to debugging()
line 132 of /lib/classes/component.php: call to include_once()
line ? of unknownfile: call to core_component::classloader()
line ? of unknownfile: call to spl_autoload_call()
line 184 of /blocks/xp/classes/local/rule/event_lister.php: call to method_exists()
line 223 of /blocks/xp/classes/local/rule/event_lister.php: call to block_xp\local\rule\event_lister::get_event_infos()
line ? of unknownfile: call to block_xp\local\rule\event_lister::block_xp\local\rule\{closure}()
line 237 of /blocks/xp/classes/local/rule/event_lister.php: call to array_reduce()
line 258 of /blocks/xp/classes/local/rule/event_lister.php: call to block_xp\local\rule\event_lister::get_events_list_from_plugin()
line 85 of /blocks/xp/classes/local/rule/event_lister.php: call to block_xp\local\rule\event_lister::get_events_list_from_plugintype()
line 123 of /blocks/xp/classes/local/rule/event_lister.php: call to block_xp\local\rule\event_lister->construct_events_list()
line 113 of /blocks/xp/classes/rule_event.php: call to block_xp\local\rule\event_lister->get_events_list()
line 551 of /blocks/xp/renderer.php: call to block_xp_rule_event->get_form()
line 480 of /blocks/xp/renderer.php: call to block_xp_renderer->render_block_xp_rule()
line 664 of /blocks/xp/renderer.php: call to block_xp_renderer->render()
line 464 of /lib/outputrenderers.php: call to block_xp_renderer->render_filters_widget()
line 482 of /blocks/xp/renderer.php: call to plugin_renderer_base->render()
line 716 of /blocks/xp/renderer.php: call to block_xp_renderer->render()
line 464 of /lib/outputrenderers.php: call to block_xp_renderer->render_filters_widget_element()
line 482 of /blocks/xp/renderer.php: call to plugin_renderer_base->render()
line 745 of /blocks/xp/renderer.php: call to block_xp_renderer->render()
line 464 of /lib/outputrenderers.php: call to block_xp_renderer->render_filters_widget_group()
line 482 of /blocks/xp/renderer.php: call to plugin_renderer_base->render()
line 249 of /blocks/xp/classes/local/controller/rules_controller.php: call to block_xp_renderer->render()
line 231 of /blocks/xp/classes/local/controller/rules_controller.php: call to block_xp\local\controller\rules_controller->page_rules_content()
line 185 of /blocks/xp/classes/local/controller/page_controller.php: call to block_xp\local\controller\rules_controller->page_content()
line 216 of /blocks/xp/classes/local/controller/route_controller.php: call to block_xp\local\controller\page_controller->content()
line 80 of /blocks/xp/classes/local/routing/router.php: call to block_xp\local\controller\route_controller->handle()
line 38 of /blocks/xp/index.php: call to block_xp\local\routing\router->dispatch()
mod_lesson\event\highscore_added has been deprecated. Since the functionality no longer resides in the lesson module.
line 31 of /mod/lesson/classes/event/highscore_added.php: call to debugging()
line 132 of /lib/classes/component.php: call to include_once()
line ? of unknownfile: call to core_component::classloader()
line ? of unknownfile: call to spl_autoload_call()
line 184 of /blocks/xp/classes/local/rule/event_lister.php: call to method_exists()
line 223 of /blocks/xp/classes/local/rule/event_lister.php: call to block_xp\local\rule\event_lister::get_event_infos()
line ? of unknownfile: call to block_xp\local\rule\event_lister::block_xp\local\rule\{closure}()
line 237 of /blocks/xp/classes/local/rule/event_lister.php: call to array_reduce()
line 258 of /blocks/xp/classes/local/rule/event_lister.php: call to block_xp\local\rule\event_lister::get_events_list_from_plugin()
line 85 of /blocks/xp/classes/local/rule/event_lister.php: call to block_xp\local\rule\event_lister::get_events_list_from_plugintype()
line 123 of /blocks/xp/classes/local/rule/event_lister.php: call to block_xp\local\rule\event_lister->construct_events_list()
line 113 of /blocks/xp/classes/rule_event.php: call to block_xp\local\rule\event_lister->get_events_list()
line 551 of /blocks/xp/renderer.php: call to block_xp_rule_event->get_form()
line 480 of /blocks/xp/renderer.php: call to block_xp_renderer->render_block_xp_rule()
line 664 of /blocks/xp/renderer.php: call to block_xp_renderer->render()
line 464 of /lib/outputrenderers.php: call to block_xp_renderer->render_filters_widget()
line 482 of /blocks/xp/renderer.php: call to plugin_renderer_base->render()
line 716 of /blocks/xp/renderer.php: call to block_xp_renderer->render()
line 464 of /lib/outputrenderers.php: call to block_xp_renderer->render_filters_widget_element()
line 482 of /blocks/xp/renderer.php: call to plugin_renderer_base->render()
line 745 of /blocks/xp/renderer.php: call to block_xp_renderer->render()
line 464 of /lib/outputrenderers.php: call to block_xp_renderer->render_filters_widget_group()
line 482 of /blocks/xp/renderer.php: call to plugin_renderer_base->render()
line 249 of /blocks/xp/classes/local/controller/rules_controller.php: call to block_xp_renderer->render()
line 231 of /blocks/xp/classes/local/controller/rules_controller.php: call to block_xp\local\controller\rules_controller->page_rules_content()
line 185 of /blocks/xp/classes/local/controller/page_controller.php: call to block_xp\local\controller\rules_controller->page_content()
line 216 of /blocks/xp/classes/local/controller/route_controller.php: call to block_xp\local\controller\page_controller->content()
line 80 of /blocks/xp/classes/local/routing/router.php: call to block_xp\local\controller\route_controller->handle()
line 38 of /blocks/xp/index.php: call to block_xp\local\routing\router->dispatch()

Observed on Moodle 3.9.20 with block_xp 3.13.3, local_xp 1.13.1 (The same deprecated events are still present in Moodle's current master branch.)

Steps to reproduce:

  1. Enable developer level debugging (either in site administration or config.php)
  2. View point rules settings.
  3. Find above debugging messages inbetween grade and event rule sections.
FMCorz commented 1 year ago

Hi @tsbartel,

Thank you for reporting this. The code surrounding these notices had been designed to suppress them by overriding the debug setting. However, today I learned about the setting debugusers, which you were probably using, that is designed to bypass the debugging values for particular users, and always show the notices.

This has been patched and will be included in our next release.

tsbartel commented 1 year ago

Hi Frédéric and thanks for your quick reaction and fix. You're correct in assuming that we used debugusers.

I didn't look into the code that thoroughly, so I missed the place where you suppress debug messages.

When selecting events from the dropdown, the deprecated events are still shown - this is also the case without debugusers being active: image

Should I open a separate issue for this or is it sufficient to leave it here?

FMCorz commented 1 year ago

Ah yes, good catch, the events are still shown. This is actually a Moodle bug, they failed to declare the events as deprecated by adding the method is_deprecated to the event themselves.

This issue is enough, we will hardcode the exclusion.

FMCorz commented 1 year ago

Ah, that is actually a Moodle bug as they had wrongly removed the event names. This has been fixed in 3.10, which explains why I could see the event name properly but you don't. Reference MDL-72499.

tsbartel commented 1 year ago

Thanks for pointing to the relevant tracker issue. We'll just file this under "will be fixed when we're finally moving to 4.x" and learn to ignore the missing language strings. As these events aren't used by teachers (to our knowledge anyways), the missing language strings were only a very minor issue.