/** * Delete all data linked to content, do not delete the context record itself */ public function delete_content() { global $CFG, $DB; blocks_delete_all_for_context($this->_id); filter_delete_all_for_context($this->_id); require_once($CFG->dirroot . '/comment/lib.php'); comment::delete_comments(array('contextid'=>$this->_id)); require_once($CFG->dirroot.'/rating/lib.php'); $delopt = new stdclass(); $delopt->contextid = $this->_id; $rm = new rating_manager(); $rm->delete_ratings($delopt); // delete all files attached to this context $fs = get_file_storage(); $fs->delete_area_files($this->_id); // Delete all repository instances attached to this context. require_once($CFG->dirroot . '/repository/lib.php'); repository::delete_all_for_context($this->_id); // delete all advanced grading data attached to this context require_once($CFG->dirroot.'/grade/grading/lib.php'); grading_manager::delete_all_for_context($this->_id); // now delete stuff from role related tables, role_unassign_all // and unenrol should be called earlier to do proper cleanup $DB->delete_records('role_assignments', array('contextid'=>$this->_id)); $DB->delete_records('role_capabilities', array('contextid'=>$this->_id)); $DB->delete_records('role_names', array('contextid'=>$this->_id)); }
function test_delete_all_for_context() { global $DB; $this->resetAfterTest(true); $this->setAdminUser(); $course = $this->getDataGenerator()->create_course(); $user = $this->getDataGenerator()->create_user(); $this->getDataGenerator()->create_repository_type('flickr_public'); $this->getDataGenerator()->create_repository_type('filesystem'); $coursecontext = context_course::instance($course->id); $usercontext = context_user::instance($user->id); // Creating course instances. $repo = $this->getDataGenerator()->create_repository('flickr_public', array('contextid' => $coursecontext->id)); $courserepo1 = repository::get_repository_by_id($repo->id, $coursecontext); $this->assertEquals(1, $DB->count_records('repository_instances', array('contextid' => $coursecontext->id))); $repo = $this->getDataGenerator()->create_repository('filesystem', array('contextid' => $coursecontext->id)); $courserepo2 = repository::get_repository_by_id($repo->id, $coursecontext); $this->assertEquals(2, $DB->count_records('repository_instances', array('contextid' => $coursecontext->id))); // Creating user instances. $repo = $this->getDataGenerator()->create_repository('flickr_public', array('contextid' => $usercontext->id)); $userrepo1 = repository::get_repository_by_id($repo->id, $usercontext); $this->assertEquals(1, $DB->count_records('repository_instances', array('contextid' => $usercontext->id))); $repo = $this->getDataGenerator()->create_repository('filesystem', array('contextid' => $usercontext->id)); $userrepo2 = repository::get_repository_by_id($repo->id, $usercontext); $this->assertEquals(2, $DB->count_records('repository_instances', array('contextid' => $usercontext->id))); // Simulation of course deletion. repository::delete_all_for_context($coursecontext->id); $this->assertEquals(0, $DB->count_records('repository_instances', array('contextid' => $coursecontext->id))); $this->assertEquals(0, $DB->count_records('repository_instances', array('id' => $courserepo1->id))); $this->assertEquals(0, $DB->count_records('repository_instances', array('id' => $courserepo2->id))); $this->assertEquals(0, $DB->count_records('repository_instance_config', array('instanceid' => $courserepo1->id))); $this->assertEquals(0, $DB->count_records('repository_instance_config', array('instanceid' => $courserepo2->id))); // Simulation of user deletion. repository::delete_all_for_context($usercontext->id); $this->assertEquals(0, $DB->count_records('repository_instances', array('contextid' => $usercontext->id))); $this->assertEquals(0, $DB->count_records('repository_instances', array('id' => $userrepo1->id))); $this->assertEquals(0, $DB->count_records('repository_instances', array('id' => $userrepo2->id))); $this->assertEquals(0, $DB->count_records('repository_instance_config', array('instanceid' => $userrepo1->id))); $this->assertEquals(0, $DB->count_records('repository_instance_config', array('instanceid' => $userrepo2->id))); // Checking deletion upon course context deletion. $course = $this->getDataGenerator()->create_course(); $coursecontext = context_course::instance($course->id); $repo = $this->getDataGenerator()->create_repository('flickr_public', array('contextid' => $coursecontext->id)); $courserepo = repository::get_repository_by_id($repo->id, $coursecontext); $this->assertEquals(1, $DB->count_records('repository_instances', array('contextid' => $coursecontext->id))); $coursecontext->delete(); $this->assertEquals(0, $DB->count_records('repository_instances', array('contextid' => $coursecontext->id))); // Checking deletion upon user context deletion. $user = $this->getDataGenerator()->create_user(); $usercontext = context_user::instance($user->id); $repo = $this->getDataGenerator()->create_repository('flickr_public', array('contextid' => $usercontext->id)); $userrepo = repository::get_repository_by_id($repo->id, $usercontext); $this->assertEquals(1, $DB->count_records('repository_instances', array('contextid' => $usercontext->id))); $usercontext->delete(); $this->assertEquals(0, $DB->count_records('repository_instances', array('contextid' => $usercontext->id))); // Checking deletion upon course deletion. $course = $this->getDataGenerator()->create_course(); $coursecontext = context_course::instance($course->id); $repo = $this->getDataGenerator()->create_repository('flickr_public', array('contextid' => $coursecontext->id)); $courserepo = repository::get_repository_by_id($repo->id, $coursecontext); $this->assertEquals(1, $DB->count_records('repository_instances', array('contextid' => $coursecontext->id))); delete_course($course, false); $this->assertEquals(0, $DB->count_records('repository_instances', array('contextid' => $coursecontext->id))); // Checking deletion upon user deletion. $user = $this->getDataGenerator()->create_user(); $usercontext = context_user::instance($user->id); $repo = $this->getDataGenerator()->create_repository('flickr_public', array('contextid' => $usercontext->id)); $userrepo = repository::get_repository_by_id($repo->id, $usercontext); $this->assertEquals(1, $DB->count_records('repository_instances', array('contextid' => $usercontext->id))); delete_user($user); $this->assertEquals(0, $DB->count_records('repository_instances', array('contextid' => $usercontext->id))); }