/** * Actual implementation of the reset course functionality, delete all the * assignment submissions for course $data->courseid. * * @param stdClass $data the data submitted from the reset course. * @return array status array */ public function reset_userdata($data) { global $CFG, $DB; $componentstr = get_string('modulenameplural', 'assign'); $status = array(); $fs = get_file_storage(); if (!empty($data->reset_assign_submissions)) { // Delete files associated with this assignment. foreach ($this->submissionplugins as $plugin) { $fileareas = array(); $plugincomponent = $plugin->get_subtype() . '_' . $plugin->get_type(); $fileareas = $plugin->get_file_areas(); foreach ($fileareas as $filearea) { $fs->delete_area_files($this->context->id, $plugincomponent, $filearea); } if (!$plugin->delete_instance()) { $status[] = array('component' => $componentstr, 'item' => get_string('deleteallsubmissions', 'assign'), 'error' => $plugin->get_error()); } } foreach ($this->feedbackplugins as $plugin) { $fileareas = array(); $plugincomponent = $plugin->get_subtype() . '_' . $plugin->get_type(); $fileareas = $plugin->get_file_areas(); foreach ($fileareas as $filearea) { $fs->delete_area_files($this->context->id, $plugincomponent, $filearea); } if (!$plugin->delete_instance()) { $status[] = array('component' => $componentstr, 'item' => get_string('deleteallsubmissions', 'assign'), 'error' => $plugin->get_error()); } } $assignssql = 'SELECT a.id FROM {assign} a WHERE a.course=:course'; $params = array('course' => $data->courseid); $DB->delete_records_select('assign_submission', "assignment IN ({$assignssql})", $params); $status[] = array('component' => $componentstr, 'item' => get_string('deleteallsubmissions', 'assign'), 'error' => false); if (!empty($data->reset_gradebook_grades)) { $DB->delete_records_select('assign_grades', "assignment IN ({$assignssql})", $params); // Remove all grades from gradebook. require_once $CFG->dirroot . '/mod/assign/lib.php'; assign_reset_gradebook($data->courseid); } } // Updating dates - shift may be negative too. if ($data->timeshift) { shift_course_mod_dates('assign', array('duedate', 'allowsubmissionsfromdate', 'cutoffdate'), $data->timeshift, $data->courseid, $this->get_instance()->id); $status[] = array('component' => $componentstr, 'item' => get_string('datechanged'), 'error' => false); } return $status; }
/** * Actual implementation of the reset course functionality, delete all the * assignment submissions for course $data->courseid. * * @param stdClass $data the data submitted from the reset course. * @return array status array */ public function reset_userdata($data) { global $CFG, $DB; $componentstr = get_string('modulenameplural', 'assign'); $status = array(); $fs = get_file_storage(); if (!empty($data->reset_assign_submissions)) { // Delete files associated with this assignment. foreach ($this->submissionplugins as $plugin) { $fileareas = array(); $plugincomponent = $plugin->get_subtype() . '_' . $plugin->get_type(); $fileareas = $plugin->get_file_areas(); foreach ($fileareas as $filearea => $notused) { $fs->delete_area_files($this->context->id, $plugincomponent, $filearea); } if (!$plugin->delete_instance()) { $status[] = array('component' => $componentstr, 'item' => get_string('deleteallsubmissions', 'assign'), 'error' => $plugin->get_error()); } } foreach ($this->feedbackplugins as $plugin) { $fileareas = array(); $plugincomponent = $plugin->get_subtype() . '_' . $plugin->get_type(); $fileareas = $plugin->get_file_areas(); foreach ($fileareas as $filearea => $notused) { $fs->delete_area_files($this->context->id, $plugincomponent, $filearea); } if (!$plugin->delete_instance()) { $status[] = array('component' => $componentstr, 'item' => get_string('deleteallsubmissions', 'assign'), 'error' => $plugin->get_error()); } } $assignids = $DB->get_records('assign', array('course' => $data->courseid), '', 'id'); list($sql, $params) = $DB->get_in_or_equal(array_keys($assignids)); $DB->delete_records_select('assign_submission', "assignment {$sql}", $params); $DB->delete_records_select('assign_user_flags', "assignment {$sql}", $params); $status[] = array('component' => $componentstr, 'item' => get_string('deleteallsubmissions', 'assign'), 'error' => false); if (!empty($data->reset_gradebook_grades)) { $DB->delete_records_select('assign_grades', "assignment {$sql}", $params); // Remove all grades from gradebook. require_once $CFG->dirroot . '/mod/assign/lib.php'; assign_reset_gradebook($data->courseid); // Reset revealidentities if both submissions and grades have been reset. if ($this->get_instance()->blindmarking && $this->get_instance()->revealidentities) { $DB->set_field('assign', 'revealidentities', 0, array('id' => $this->get_instance()->id)); } } } // Updating dates - shift may be negative too. if ($data->timeshift) { shift_course_mod_dates('assign', array('duedate', 'allowsubmissionsfromdate', 'cutoffdate'), $data->timeshift, $data->courseid, $this->get_instance()->id); $status[] = array('component' => $componentstr, 'item' => get_string('datechanged'), 'error' => false); } return $status; }