From 9ebaea25f64bb7bb8c8708300fbfae602f48dac1 Mon Sep 17 00:00:00 2001 From: Andreas Wagner Date: Sun, 18 Nov 2018 16:34:05 +0100 Subject: [PATCH] MDL-60972 core_course: delete section files, when section is deleted. --- course/format/lib.php | 5 +++++ lib/db/upgrade.php | 24 ++++++++++++++++++++++++ version.php | 2 +- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/course/format/lib.php b/course/format/lib.php index 6985ded929f..bae152427c6 100644 --- a/course/format/lib.php +++ b/course/format/lib.php @@ -1074,6 +1074,11 @@ abstract class format_base { $DB->delete_records('course_sections', array('id' => $section->id)); rebuild_course_cache($course->id, true); + // Delete section summary files. + $context = \context_course::instance($course->id); + $fs = get_file_storage(); + $fs->delete_area_files($context->id, 'course', 'section', $section->id); + // Descrease 'numsections' if needed. if ($decreasenumsections) { $this->update_course_format_options(array('numsections' => $course->numsections - 1)); diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index 6c160dfe845..972c42172af 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -2337,5 +2337,29 @@ function xmldb_main_upgrade($oldversion) { upgrade_main_savepoint(true, 2018051703.09); } + if ($oldversion < 2018051704.01) { + + // Delete all files that have been used in sections, which are already deleted. + $sql = "SELECT DISTINCT f.itemid as sectionid, f.contextid + FROM {files} f + LEFT JOIN {course_sections} s ON f.itemid = s.id + WHERE f.component = :component AND f.filearea = :filearea AND s.id IS NULL "; + + $params = [ + 'component' => 'course', + 'filearea' => 'section' + ]; + + $stalefiles = $DB->get_recordset_sql($sql, $params); + + $fs = get_file_storage(); + foreach ($stalefiles as $stalefile) { + $fs->delete_area_files($stalefile->contextid, 'course', 'section', $stalefile->sectionid); + } + $stalefiles->close(); + + upgrade_main_savepoint(true, 2018051704.01); + } + return true; } diff --git a/version.php b/version.php index 0ec22c96960..14d9f21675d 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2018051704.00; // 20180517 = branching date YYYYMMDD - do not modify! +$version = 2018051704.01; // 20180517 = branching date YYYYMMDD - do not modify! // RR = release increments - 00 in DEV branches. // .XX = incremental changes.