function quiz_delete_instance($id) { /// Given an ID of an instance of this module, /// this function will permanently delete the instance /// and any data that depends on it. if (!($quiz = get_record("quiz", "id", "{$id}"))) { return false; } $result = true; if ($attempts = get_records("quiz_attempts", "quiz", "{$quiz->id}")) { // TODO: this should use the delete_attempt($attempt->uniqueid) function in questionlib.php // require_once($CFG->libdir.'/questionlib.php'); foreach ($attempts as $attempt) { if (!delete_records("question_states", "attempt", "{$attempt->uniqueid}")) { $result = false; } if (!delete_records("question_sessions", "attemptid", "{$attempt->uniqueid}")) { $result = false; } } } $tables_to_purge = array('quiz_attempts' => 'quiz', 'quiz_grades' => 'quiz', 'quiz_question_instances' => 'quiz', 'quiz_grades' => 'quiz', 'quiz_feedback' => 'quizid', 'quiz' => 'id'); foreach ($tables_to_purge as $table => $keyfield) { if (!delete_records($table, $keyfield, $quiz->id)) { $result = false; } } $pagetypes = page_import_types('mod/quiz/'); foreach ($pagetypes as $pagetype) { if (!delete_records('block_instance', 'pageid', $quiz->id, 'pagetype', $pagetype)) { $result = false; } } if ($events = get_records_select('event', "modulename = 'quiz' and instance = '{$quiz->id}'")) { foreach ($events as $event) { delete_event($event->id); } } quiz_grade_item_delete($quiz); return $result; }
/** * Given an ID of an instance of this module, * this function will permanently delete the instance * and any data that depends on it. * * @param int $id the id of the quiz to delete. * @return bool success or failure. */ function quiz_delete_instance($id) { global $DB; $quiz = $DB->get_record('quiz', array('id' => $id), '*', MUST_EXIST); quiz_delete_all_attempts($quiz); quiz_delete_all_overrides($quiz); $DB->delete_records('quiz_question_instances', array('quiz' => $quiz->id)); $DB->delete_records('quiz_feedback', array('quizid' => $quiz->id)); $events = $DB->get_records('event', array('modulename' => 'quiz', 'instance' => $quiz->id)); foreach ($events as $event) { $event = calendar_event::load($event); $event->delete(); } quiz_grade_item_delete($quiz); $DB->delete_records('quiz', array('id' => $quiz->id)); return true; }
function quiz_delete_instance($id) { global $DB; /// Given an ID of an instance of this module, /// this function will permanently delete the instance /// and any data that depends on it. if (!($quiz = $DB->get_record('quiz', array('id' => $id)))) { return false; } quiz_delete_all_attempts($quiz); $DB->delete_records('quiz_question_instances', array('quiz' => $quiz->id)); $DB->delete_records('quiz_feedback', array('quizid' => $quiz->id)); $events = $DB->get_records('event', array('modulename' => 'quiz', 'instance' => $quiz->id)); foreach ($events as $event) { delete_event($event->id); } quiz_grade_item_delete($quiz); $DB->delete_records('quiz', array('id' => $quiz->id)); return true; }
/** * Given an ID of an instance of this module, * this function will permanently delete the instance * and any data that depends on it. * * @param int $id the id of the quiz to delete. * @return bool success or failure. */ function quiz_delete_instance($id) { global $DB; $quiz = $DB->get_record('quiz', array('id' => $id), '*', MUST_EXIST); quiz_delete_all_attempts($quiz); quiz_delete_all_overrides($quiz); // Look for random questions that may no longer be used when this quiz is gone. $sql = "SELECT q.id\n FROM {quiz_slots} slot\n JOIN {question} q ON q.id = slot.questionid\n WHERE slot.quizid = ? AND q.qtype = ?"; $questionids = $DB->get_fieldset_sql($sql, array($quiz->id, 'random')); // We need to do this before we try and delete randoms, otherwise they would still be 'in use'. $DB->delete_records('quiz_slots', array('quizid' => $quiz->id)); $DB->delete_records('quiz_sections', array('quizid' => $quiz->id)); foreach ($questionids as $questionid) { question_delete_question($questionid); } $DB->delete_records('quiz_feedback', array('quizid' => $quiz->id)); quiz_access_manager::delete_settings($quiz); $events = $DB->get_records('event', array('modulename' => 'quiz', 'instance' => $quiz->id)); foreach ($events as $event) { $event = calendar_event::load($event); $event->delete(); } quiz_grade_item_delete($quiz); $DB->delete_records('quiz', array('id' => $quiz->id)); return true; }
/** * Given an ID of an instance of this module, * this function will permanently delete the instance * and any data that depends on it. * * @global object * @param int $id * @return bool */ function quiz_delete_instance($id) { global $DB; if (!($quiz = $DB->get_record('quiz', array('id' => $id)))) { return false; } quiz_delete_all_attempts($quiz); $DB->delete_records('quiz_question_instances', array('quiz' => $quiz->id)); $DB->delete_records('quiz_feedback', array('quizid' => $quiz->id)); $events = $DB->get_records('event', array('modulename' => 'quiz', 'instance' => $quiz->id)); foreach ($events as $event) { delete_event($event->id); } quiz_grade_item_delete($quiz); $DB->delete_records('quiz', array('id' => $quiz->id)); return true; }