. /** * Handles our own events to make some reactive changes, for example, update activity completion state (if completion is enabled). * * @copyright 2022 onwards Vitaly Potenko * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace mod_adaptivequiz; use completion_info; use core\event\base; class attempt_state_change_observers { public static function attempt_completed(base $event): void { global $DB; // Update completion state if enabled. if (!$attempt = $event->get_record_snapshot('adaptivequiz_attempt', $event->objectid)) { return; } if (!$adaptivequiz = $DB->get_record('adaptivequiz', ['id' => $attempt->instance])) { return; } if (!$course = $DB->get_record('course', ['id' => $adaptivequiz->course])) { return; } $completion = new completion_info($course); if (!$completion->is_enabled()) { return; } if (!$adaptivequiz->completionattemptcompleted) { return; } if (!$cm = get_coursemodule_from_instance('adaptivequiz', $adaptivequiz->id, $adaptivequiz->course)) { return; } $completion->update_state($cm, COMPLETION_COMPLETE, $event->userid); } }