From e9436332453ce4998d65eb995b55c3177f4fff84 Mon Sep 17 00:00:00 2001 From: gbateson Date: Tue, 27 Jan 2009 08:52:03 +0000 Subject: [PATCH] MDL-17679: implement course reset for HotPot module (thanks to Albert Gasset) --- lang/en_utf8/hotpot.php | 1 + mod/hotpot/lib.php | 44 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/lang/en_utf8/hotpot.php b/lang/en_utf8/hotpot.php index 7189a17908..2c74688fd0 100644 --- a/lang/en_utf8/hotpot.php +++ b/lang/en_utf8/hotpot.php @@ -28,6 +28,7 @@ $string['copytoclipboard'] = 'Copy to Clipboard'; $string['correct'] = 'Correct'; $string['deleteabandoned'] = 'Delete abandoned'; $string['deleteabandonedcheck'] = 'Do you really want to delete all $a abandoned attempts?'; +$string['deleteallattempts'] = 'Delete all attempts'; $string['displaycoursenext'] = 'Display Course page next'; $string['displayhotpotnext'] = 'Display Hot Potatoes quiz next'; $string['displayindexnext'] = 'Display HotPot index next'; diff --git a/mod/hotpot/lib.php b/mod/hotpot/lib.php index cb6541bb13..f899b3d0f4 100644 --- a/mod/hotpot/lib.php +++ b/mod/hotpot/lib.php @@ -2529,4 +2529,48 @@ function hotpot_get_extra_capabilities() { return array('moodle/site:accessallgroups'); } +/** + * This function is used by the reset_course_userdata function in moodlelib. + * This function will remove all attempts from hotpot quizzes in the specified course. + * @param $data the data submitted from the reset course. + * @return array status array + */ +function hotpot_reset_userdata($data) { + global $CFG, $DB; + require_once($CFG->libdir.'/filelib.php'); + + $status = array(); + + if (!empty($data->reset_hotpot_deleteallattempts)) { + + $hotpotids = 'SELECT h.id FROM {hotpot} h WHERE h.course='.$data->courseid; + $attemptids = 'SELECT a.id FROM {hotpot_attempts} a WHERE a.hotpot in ('.$hotpotids.')'; + + $DB->delete_records_select('hotpot_responses', "attempt in ($attemptids)"); + $DB->delete_records_select('hotpot_details', "attempt in ($attemptids)"); + $DB->delete_records_select('hotpot_attempts', "hotpot IN ($hotpotids)"); + + $status[] = array('component' => get_string('modulenameplural', 'hotpot'), + 'item' => get_string('deleteallattempts', 'hotpot'), + 'error' => false); + } + + return $status; +} + +/** + * Called by course/reset.php + * @param $mform form passed by reference + */ +function hotpot_reset_course_form_definition(&$mform) { + $mform->addElement('header', 'hotpotheader', get_string('modulenameplural', 'hotpot')); + $mform->addElement('checkbox', 'reset_hotpot_deleteallattempts', get_string('deleteallattempts', 'hotpot')); +} + +/** + * Course reset form defaults. + */ +function hotpot_reset_course_form_defaults($course) { + return array('reset_hotpot_deleteallattempts' => 1); +} ?> -- 2.39.5