diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index 32298db70a0..7ce3c1e8d93 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -2194,8 +2194,11 @@ function xmldb_main_upgrade($oldversion) { $DB->delete_records('competency_userevidencecomp', ['userevidenceid' => $userevidence->id]); $DB->delete_records('competency_userevidence', ['id' => $userevidence->id]); - $context = context_user::instance($userevidence->userid); - $fs->delete_area_files($context->id, 'core_competency', 'userevidence', $userevidence->id); + if ($record = $DB->get_record('context', ['contextlevel' => CONTEXT_USER, 'instanceid' => $userevidence->userid], + '*', IGNORE_MISSING)) { + // Delete all orphaned user evidences files. + $fs->delete_area_files($record->id, 'core_competency', 'userevidence', $userevidence->userid); + } } $sql = "SELECT cp.id @@ -2527,5 +2530,24 @@ function xmldb_main_upgrade($oldversion) { upgrade_main_savepoint(true, 2020061501.04); } + if ($oldversion < 2020061501.08) { + // Delete all user evidence files from users that have been deleted. + $sql = "SELECT DISTINCT f.* + FROM {files} f + LEFT JOIN {context} c ON f.contextid = c.id + LEFT JOIN {user} u ON c.instanceid = u.id + WHERE f.component = :component + AND f.filearea = :filearea + AND u.deleted = 1"; + $stalefiles = $DB->get_records_sql($sql, ['component' => 'core_competency', 'filearea' => 'userevidence']); + + $fs = get_file_storage(); + foreach ($stalefiles as $stalefile) { + $fs->get_file_instance($stalefile)->delete(); + } + + upgrade_main_savepoint(true, 2020061501.08); + } + return true; } diff --git a/version.php b/version.php index e2315b2c45f..ae7836198fd 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2020061501.07; // 20200615 = branching date YYYYMMDD - do not modify! +$version = 2020061501.08; // 20200615 = branching date YYYYMMDD - do not modify! // RR = release increments - 00 in DEV branches. // .XX = incremental changes. $release = '3.9.1+ (Build: 20200814)'; // Human-friendly version name