Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-81131

Fix event Observer misuse in core

XMLWordPrintable

    • Icon: Epic Epic
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • 4.4
    • General
    • MOODLE_404_STABLE
    • Event Observer conversion to Hooks

      Per our component communication principles, the use of event observers in core is banned and should not be used.

      See https://moodledev.io/general/development/policies/component-communication#event-observers

      Additional rules for event observers:

      Events are not allowed to be observed by core or a core subsystem (there are some currently wrong observers in core that should be removed).

      This issue is to capture and convert all of those to appropriate hooks and callbacks.

      find . -name events.php | xargs grep callback
      ./blocks/recent_activity/db/events.php:        'callback'  => 'block_recent_activity_observer::store',
      ./blocks/recent_activity/db/events.php:        'callback'  => 'block_recent_activity_observer::store',
      ./blocks/recent_activity/db/events.php:        'callback'  => 'block_recent_activity_observer::store',
      ./blocks/recentlyaccesseditems/db/events.php:            'callback'    => 'block_recentlyaccesseditems\observer::store',
      ./blocks/recentlyaccesseditems/db/events.php:            'callback'    => 'block_recentlyaccesseditems\observer::remove'
      ./course/format/weeks/db/events.php:        'callback'    => 'format_weeks_observer::course_updated',
      ./course/format/weeks/db/events.php:        'callback'    => 'format_weeks_observer::course_section_created',
      ./course/format/weeks/db/events.php:        'callback'    => 'format_weeks_observer::course_section_deleted',
      ./auth/oauth2/db/events.php:        'callback'    => '\auth_oauth2\api::user_deleted',
      ./admin/tool/monitor/db/events.php:        'callback'    => '\tool_monitor\eventobservers::course_deleted',
      ./admin/tool/monitor/db/events.php:        'callback'    => '\tool_monitor\eventobservers::process_event',
      ./admin/tool/monitor/db/events.php:        'callback'    => '\tool_monitor\eventobservers::user_deleted',
      ./admin/tool/monitor/db/events.php:        'callback'    => '\tool_monitor\eventobservers::course_module_deleted',
      ./admin/tool/dataprivacy/db/events.php:        'callback'    => '\tool_dataprivacy\event\user_deleted_observer::create_delete_data_request',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::course_category_created',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::course_category_deleted',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::course_category_restored',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::course_category_updated',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::course_created',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::course_deleted',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::course_restored',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::course_updated',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::course_section_created',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::course_section_deleted',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::course_section_updated',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::course_module_created',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::course_module_restored',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::course_module_updated',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::course_module_deleted',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::mod_lesson_page_created',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::mod_lesson_page_deleted',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::mod_lesson_page_updated',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::book_chapter_created',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::book_chapter_deleted',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::book_chapter_updated',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::core_question_created',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::core_question_updated',
      ./admin/tool/brickfield/db/events.php:        'callback'  => '\tool_brickfield\eventobservers::core_question_deleted',
      ./admin/tool/log/db/events.php:        'callback'  => '\tool_log\log\observer::store',
      ./admin/tool/cohortroles/db/events.php:        'callback' => '\tool_cohortroles\observers::user_deleted',
      ./admin/tool/policy/db/events.php:        'callback'    => '\tool_policy\api::create_acceptances_user_created',
      ./enrol/category/db/events.php:        'callback'  => 'enrol_category_observer::role_assigned',
      ./enrol/category/db/events.php:        'callback'  => 'enrol_category_observer::role_unassigned',
      ./enrol/meta/db/events.php:        'callback'    => 'enrol_meta_observer::user_enrolment_created',
      ./enrol/meta/db/events.php:        'callback'    => 'enrol_meta_observer::user_enrolment_deleted',
      ./enrol/meta/db/events.php:        'callback'    => 'enrol_meta_observer::user_enrolment_updated',
      ./enrol/meta/db/events.php:        'callback'    => 'enrol_meta_observer::role_assigned',
      ./enrol/meta/db/events.php:        'callback'    => 'enrol_meta_observer::role_unassigned',
      ./enrol/meta/db/events.php:        'callback'    => 'enrol_meta_observer::course_deleted',
      ./enrol/meta/db/events.php:        'callback'    => 'enrol_meta_observer::enrol_instance_updated',
      ./enrol/cohort/db/events.php:        'callback' => 'enrol_cohort_handler::member_added',
      ./enrol/cohort/db/events.php:        'callback' => 'enrol_cohort_handler::member_removed',
      ./enrol/cohort/db/events.php:        'callback' => 'enrol_cohort_handler::deleted',
      ./message/output/email/db/events.php:        'callback' => '\message_email\event_observers::message_viewed',
      ./question/bank/comment/db/events.php:        'callback' => '\qbank_comment\event\question_deleted_observer::delete_question_comments',
      ./question/bank/tagquestion/db/events.php:        'callback' => '\qbank_tagquestion\event\question_deleted_observer::delete_question_tags'
      ./question/bank/customfields/db/events.php:        'callback' => '\qbank_customfields\event\question_deleted_observer::delete_question_customfields'
      ./question/bank/columnsortorder/db/events.php:        'callback' => '\qbank_columnsortorder\event\plugin_observer::plugin_enabled',
      ./question/bank/columnsortorder/db/events.php:        'callback' => '\qbank_columnsortorder\event\plugin_observer::plugin_disabled',
      ./lib/db/events.php:        'callback'    => 'core_badges_observer::course_module_criteria_review',
      ./lib/db/events.php:        'callback'    => 'core_badges_observer::badge_criteria_review',
      ./lib/db/events.php:        'callback'    => 'core_badges_observer::course_criteria_review',
      ./lib/db/events.php:        'callback'    => 'core_badges_observer::profile_criteria_review',
      ./lib/db/events.php:        'callback'    => 'core_badges_observer::cohort_criteria_review',
      ./lib/db/events.php:        'callback'    => 'core_badges_observer::competency_criteria_review',
      ./lib/db/events.php:        'callback'    => 'core_competency\api::observe_course_completed',
      ./lib/db/events.php:        'callback'    => 'core_competency\api::observe_course_module_completion_updated',
      ./mod/workshop/allocation/scheduled/db/events.php:        'callback'  => '\workshopallocation_scheduled\observer::workshop_viewed',
      ./mod/workshop/allocation/scheduled/db/events.php:        'callback' => '\workshopallocation_scheduled\observer::phase_automatically_switched'
      ./mod/chat/db/events.php:        'callback' => 'chat_user_logout',
      ./mod/quiz/db/events.php:        'callback' => '\mod_quiz\group_observers::course_reset_started',
      ./mod/quiz/db/events.php:        'callback' => '\mod_quiz\group_observers::course_reset_ended',
      ./mod/quiz/db/events.php:        'callback' => '\mod_quiz\group_observers::group_deleted'
      ./mod/quiz/db/events.php:        'callback' => '\mod_quiz\group_observers::group_member_added',
      ./mod/quiz/db/events.php:        'callback' => '\mod_quiz\group_observers::group_member_removed',
      ./mod/quiz/db/events.php:        'callback' => 'quiz_attempt_submitted_handler',
      ./mod/quiz/report/statistics/db/events.php:        'callback' => '\quiz_statistics\event\observer\attempt_submitted::process',
      ./mod/feedback/db/events.php:        'callback'    => 'mod_feedback_observer::course_content_deleted',
      ./mod/forum/db/events.php:        'callback'    => 'mod_forum_observer::user_enrolment_deleted',
      ./mod/forum/db/events.php:        'callback' => 'mod_forum_observer::role_assigned'
      ./mod/forum/db/events.php:        'callback'  => 'mod_forum_observer::course_module_created',
      ./mod/forum/db/events.php:        'callback'  => 'mod_forum_observer::course_created',
      ./mod/forum/db/events.php:        'callback'  => 'mod_forum_observer::course_updated',
      ./mod/assign/feedback/editpdf/db/events.php:        'callback'    => '\assignfeedback_editpdf\event\observer::submission_created',
      ./mod/assign/feedback/editpdf/db/events.php:        'callback'    => '\assignfeedback_editpdf\event\observer::submission_updated',
      ./mod/assign/db/events.php:        'callback' => '\mod_assign\group_observers::course_reset_started',
      ./mod/assign/db/events.php:        'callback' => '\mod_assign\group_observers::course_reset_ended',
      ./mod/assign/db/events.php:        'callback' => '\mod_assign\group_observers::group_deleted'
      ./mod/glossary/db/events.php:        'callback'  => '\mod_glossary\local\concept_cache::cm_updated',
      ./mod/lesson/db/events.php:        'callback' => '\mod_lesson\group_observers::course_reset_started',
      ./mod/lesson/db/events.php:        'callback' => '\mod_lesson\group_observers::course_reset_ended',
      ./mod/lesson/db/events.php:        'callback' => '\mod_lesson\group_observers::group_deleted'
      

            Unassigned Unassigned
            dobedobedoh Andrew Lyons
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:

                Error rendering 'clockify-timesheets-time-tracking-reports:timer-sidebar'. Please contact your Jira administrators.