MDL-37757 repositories: Deleting a repository deletes files.
[moodle.git] / repository / lib.php
index 6f6759c..9597665 100644 (file)
@@ -2004,6 +2004,8 @@ abstract class repository implements cacheable_object {
         global $DB;
         if ($downloadcontents) {
             $this->convert_references_to_local();
+        } else {
+            $this->remove_files();
         }
         cache::make('core', 'repositories')->purge();
         try {
@@ -2668,6 +2670,17 @@ abstract class repository implements cacheable_object {
         }
     }
 
+    /**
+     * Find all external files linked to this repository and delete them.
+     */
+    public function remove_files() {
+        $fs = get_file_storage();
+        $files = $fs->get_external_files($this->id);
+        foreach ($files as $storedfile) {
+            $storedfile->delete();
+        }
+    }
+
     /**
      * Function repository::reset_caches() is deprecated, cache is handled by MUC now.
      * @deprecated since Moodle 2.6 MDL-42016 - please do not use this function any more.