Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

MDL-39087 Delete all component files in uninstall_plugin()

  • Loading branch information...
commit 546b88641635fc1f213e4d9ce90d275be8ef606a 1 parent 5718a12
@mudrd8mz mudrd8mz authored
View
4 lib/adminlib.php
@@ -321,6 +321,10 @@ function uninstall_plugin($type, $name) {
// remove event handlers and dequeue pending events
events_uninstall($component);
+ // Delete all remaining files in the filepool owned by the component.
+ $fs = get_file_storage();
+ $fs->delete_component_files($component);
+
// Finally purge all caches.
purge_all_caches();
View
15 lib/filestorage/file_storage.php
@@ -744,6 +744,21 @@ public function delete_area_files_select($contextid, $component,
}
/**
+ * Delete all files associated with the given component.
+ *
+ * @param string $component the component owning the file
+ */
+ public function delete_component_files($component) {
+ global $DB;
+
+ $filerecords = $DB->get_recordset('files', array('component' => $component));
+ foreach ($filerecords as $filerecord) {
+ $this->get_file_instance($filerecord)->delete();
+ }
+ $filerecords->close();
+ }
+
+ /**
* Move all the files in a file area from one context to another.
*
* @param int $oldcontextid the context the files are being moved from.
View
11 lib/filestorage/tests/file_storage_test.php
@@ -688,6 +688,17 @@ public function test_delete_area_files_select() {
$this->assertEquals(0, count($areafiles));
}
+ public function test_delete_component_files() {
+ $user = $this->setup_three_private_files();
+ $fs = get_file_storage();
+
+ $areafiles = $fs->get_area_files($user->ctxid, 'user', 'private');
+ $this->assertEquals(4, count($areafiles));
+ $fs->delete_component_files('user');
+ $areafiles = $fs->get_area_files($user->ctxid, 'user', 'private');
+ $this->assertEquals(0, count($areafiles));
+ }
+
public function test_create_file_from_url() {
$this->resetAfterTest(true);
Please sign in to comment.
Something went wrong with that request. Please try again.