/** * Test deleting submissions related data on workshop reset. */ public function test_reset_userdata_submissions() { global $DB; $this->resetAfterTest(true); $student1 = $this->getDataGenerator()->create_user(); $student2 = $this->getDataGenerator()->create_user(); $this->getDataGenerator()->enrol_user($student1->id, $this->workshop->course->id); $this->getDataGenerator()->enrol_user($student2->id, $this->workshop->course->id); $workshopgenerator = $this->getDataGenerator()->get_plugin_generator('mod_workshop'); $subid1 = $workshopgenerator->create_submission($this->workshop->id, $student1->id); $subid2 = $workshopgenerator->create_submission($this->workshop->id, $student2->id); $asid1 = $workshopgenerator->create_assessment($subid1, $student2->id); $asid2 = $workshopgenerator->create_assessment($subid2, $student1->id); $settings = (object) array('reset_workshop_submissions' => 1); $status = $this->workshop->reset_userdata($settings); foreach ($status as $result) { $this->assertFalse($result['error']); } $this->assertEquals(0, $DB->count_records('workshop_submissions', array('workshopid' => $this->workshop->id))); $this->assertEquals(0, $DB->count_records('workshop_assessments')); }
/** * Performs the reset of all workshop instances in the course. * * @param stdClass $data The actual course reset settings. * @return array List of results, each being array[(string)component, (string)item, (string)error] */ function workshop_reset_userdata(stdClass $data) { global $CFG, $DB; if (empty($data->reset_workshop_submissions) and empty($data->reset_workshop_assessments) and empty($data->reset_workshop_phase) ) { // Nothing to do here. return array(); } $workshoprecords = $DB->get_records('workshop', array('course' => $data->courseid)); if (empty($workshoprecords)) { // What a boring course - no workshops here! return array(); } require_once($CFG->dirroot . '/mod/workshop/locallib.php'); $course = $DB->get_record('course', array('id' => $data->courseid), '*', MUST_EXIST); $status = array(); foreach ($workshoprecords as $workshoprecord) { $cm = get_coursemodule_from_instance('workshop', $workshoprecord->id, $course->id, false, MUST_EXIST); $workshop = new workshop($workshoprecord, $cm, $course); $status = array_merge($status, $workshop->reset_userdata($data)); } return $status; }