/** * Actual implementation of the reset course functionality, delete all the * questionnaire responses for course $data->courseid, if $data->reset_questionnaire_attempts is * set and true. * * @param object $data the data submitted from the reset course. * @return array status array */ function questionnaire_reset_userdata($data) { global $CFG, $DB; require_once $CFG->libdir . '/questionlib.php'; require_once $CFG->dirroot . '/mod/questionnaire/locallib.php'; $componentstr = get_string('modulenameplural', 'questionnaire'); $status = array(); if (!empty($data->reset_questionnaire)) { $surveys = questionnaire_get_survey_list($data->courseid, $type = ''); // Delete responses. foreach ($surveys as $survey) { // Get all responses for this questionnaire. $sql = "SELECT R.id, R.survey_id, R.submitted, R.username\n FROM {questionnaire_response} R\n WHERE R.survey_id = ?\n ORDER BY R.id"; $resps = $DB->get_records_sql($sql, array($survey->id)); if (!empty($resps)) { foreach ($resps as $response) { questionnaire_delete_response($response->id); } } // Remove this questionnaire's grades (and feedback) from gradebook (if any). $select = "itemmodule = 'questionnaire' AND iteminstance = " . $survey->qid; $fields = 'id'; if ($itemid = $DB->get_record_select('grade_items', $select, null, $fields)) { $itemid = $itemid->id; $DB->delete_records_select('grade_grades', 'itemid = ' . $itemid); } } $status[] = array('component' => $componentstr, 'item' => get_string('deletedallresp', 'questionnaire'), 'error' => false); $status[] = array('component' => $componentstr, 'item' => get_string('gradesdeleted', 'questionnaire'), 'error' => false); } return $status; }
if (is_numeric($resp->username)) { if ($user = $DB->get_record('user', array('id' => $resp->username))) { $ruser = fullname($user); } else { $ruser = '******' . get_string('unknown', 'questionnaire') . ' -'; } } else { $ruser = $resp->username; } } } else { $resps = $respsallparticipants; } if (!empty($resps)) { foreach ($resps as $response) { questionnaire_delete_response($response, $questionnaire); } if (!$DB->count_records('questionnaire_response', array('survey_id' => $sid, 'complete' => 'y'))) { $redirection = $CFG->wwwroot . '/mod/questionnaire/view.php?id=' . $cm->id; } else { $redirection = $CFG->wwwroot . '/mod/questionnaire/report.php?action=vall&sid=' . $sid . '&instance=' . $instance; } // Log this questionnaire delete all responses action. $context = context_module::instance($questionnaire->cm->id); $anonymous = $questionnaire->respondenttype == 'anonymous'; $event = \mod_questionnaire\event\all_responses_deleted::create(array('objectid' => $questionnaire->id, 'anonymous' => $anonymous, 'context' => $context)); $event->trigger(); redirect($redirection); } else { error(get_string('couldnotdelresp', 'questionnaire'), $CFG->wwwroot . '/mod/questionnaire/report.php?action=vall&sid=' . $sid . '&instance=' . $instance); }
function questionnaire_delete_survey($sid, $questionnaireid) { global $DB; $status = true; // Delete all survey attempts and responses. if ($responses = $DB->get_records('questionnaire_response', array('survey_id' => $sid), 'id')) { foreach ($responses as $response) { $status = $status && questionnaire_delete_response($response); } } // There really shouldn't be any more, but just to make sure... $DB->delete_records('questionnaire_response', array('survey_id' => $sid)); $DB->delete_records('questionnaire_attempts', array('qid' => $questionnaireid)); // Delete all question data for the survey. if ($questions = $DB->get_records('questionnaire_question', array('survey_id' => $sid), 'id')) { foreach ($questions as $question) { $DB->delete_records('questionnaire_quest_choice', array('question_id' => $question->id)); } $status = $status && $DB->delete_records('questionnaire_question', array('survey_id' => $sid)); } // Delete all feedback sections and feedback messages for the survey. if ($fbsections = $DB->get_records('questionnaire_fb_sections', array('survey_id' => $sid), 'id')) { foreach ($fbsections as $fbsection) { $DB->delete_records('questionnaire_feedback', array('section_id' => $fbsection->id)); } $status = $status && $DB->delete_records('questionnaire_fb_sections', array('survey_id' => $sid)); } $status = $status && $DB->delete_records('questionnaire_survey', array('id' => $sid)); return $status; }
function questionnaire_delete_survey($sid, $questionnaireid) { global $DB; // Until backup is implemented, just mark the survey as archived. $status = true; // Delete all survey attempts and responses. if ($responses = $DB->get_records('questionnaire_response', array('survey_id' => $sid), 'id')) { foreach ($responses as $response) { $status = $status && questionnaire_delete_response($response->id); } } // There really shouldn't be any more, but just to make sure... $DB->delete_records('questionnaire_response', array('survey_id' => $sid)); $DB->delete_records('questionnaire_attempts', array('qid' => $questionnaireid)); // Delete all question data for the survey. if ($questions = $DB->get_records('questionnaire_question', array('survey_id' => $sid), 'id')) { foreach ($questions as $question) { $DB->delete_records('questionnaire_quest_choice', array('question_id' => $question->id)); } $status = $status && $DB->delete_records('questionnaire_question', array('survey_id' => $sid)); } $status = $status && $DB->delete_records('questionnaire_survey', array('id' => $sid)); return $status; }
if (is_numeric($resp->username)) { if ($user = get_record('user', 'id', $resp->username)) { $ruser = fullname($user); } else { $ruser = '******' . get_string('unknown', 'questionnaire') . ' -'; } } else { $ruser = $resp->username; } } } else { $resps = $respsallparticipants; } if (!empty($resps)) { foreach ($resps as $response) { questionnaire_delete_response($response->id); } echo '<br /><br />'; if ($groupid == -1) { // deleted ALL responses $deletedstr = get_string('deletedallresp', 'questionnaire'); } elseif ($groupid == -3) { $deletedstr = get_string('deletedallgroupresp', 'questionnaire', '<strong>' . get_string('groupnonmembers') . '</strong>'); } else { // deleted responses in current group only $deletedstr = get_string('deletedallgroupresp', 'questionnaire', '<strong>' . groups_get_group_name($groupid) . '</strong>'); } $sql = "SELECT R.id, R.survey_id, R.submitted, R.username\n FROM " . $CFG->prefix . "questionnaire_response R\n WHERE R.survey_id=" . $sid . " AND\n R.complete='y'\n ORDER BY R.id"; if (!($resps = get_records_sql($sql))) { $respsallparticipants = array(); }
function questionnaire_delete_survey($sid, $qid) { global $QUESTIONNAIRE_ARCHIVED; /// Until backup is implemented, just mark the survey as archived. $status = true; /// Delete all responses for the survey: if ($responses = get_records('questionnaire_response', 'survey_id', $sid, 'id')) { foreach ($responses as $response) { $status = $status && questionnaire_delete_response($response->id); } } /// There really shouldn't be any more, but just to make sure... delete_records('questionnaire_response', 'survey_id', $sid); delete_records('questionnaire_attempts', 'qid', $qid); /// Delete all question data for the survey: if ($questions = get_records('questionnaire_question', 'survey_id', $sid, 'id')) { foreach ($questions as $question) { delete_records('questionnaire_quest_choice', 'question_id', $question->id); } $status = $status && delete_records('questionnaire_question', 'survey_id', $sid); } $status = $status && delete_records('questionnaire_survey', 'id', $sid); return $status; }