mirror of
https://github.com/moodle/moodle.git
synced 2025-03-14 12:40:01 +01:00
MDL-39087 Delete all component files in uninstall_plugin()
This commit is contained in:
parent
5718a12313
commit
546b886416
@ -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();
|
||||
|
||||
|
@ -743,6 +743,21 @@ class file_storage {
|
||||
$filerecords->close();
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
|
@ -688,6 +688,17 @@ class filestoragelib_testcase extends advanced_testcase {
|
||||
$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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user