From 8e3031aed0d424abdacee73a677d2e6ae9a2ebf7 Mon Sep 17 00:00:00 2001 From: Peter Dias Date: Wed, 7 Oct 2020 10:55:25 +0800 Subject: [PATCH] MDL-50955 core: Reset lessons completion criteria if grade type is none --- lib/db/upgrade.php | 18 ++++++++++++++++++ version.php | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index e3e254805b4..d24a5c29a82 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -2994,5 +2994,23 @@ function xmldb_main_upgrade($oldversion) { upgrade_main_savepoint(true, 2021052500.36); } + if ($oldversion < 2021052500.42) { + // Get all lessons that are set with a completion criteria of 'requires grade' but with no grade type set. + $sql = "SELECT cm.id + FROM {course_modules} cm + JOIN {lesson} l ON l.id = cm.instance + JOIN {modules} m ON m.id = cm.module + WHERE m.name = :name AND cm.completiongradeitemnumber IS NOT NULL AND l.grade = :grade"; + + do { + if ($invalidconfigrations = $DB->get_records_sql($sql, ['name' => 'lesson', 'grade' => 0], 0, 1000)) { + list($insql, $inparams) = $DB->get_in_or_equal(array_keys($invalidconfigrations), SQL_PARAMS_NAMED); + $DB->set_field_select('course_modules', 'completiongradeitemnumber', null, "id $insql", $inparams); + } + } while ($invalidconfigrations); + + upgrade_main_savepoint(true, 2021052500.42); + } + return true; } diff --git a/version.php b/version.php index 1705801faf9..d72613f9e81 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2021052500.41; // YYYYMMDD = weekly release date of this DEV branch. +$version = 2021052500.42; // YYYYMMDD = weekly release date of this DEV branch. // RR = release increments - 00 in DEV branches. // .XX = incremental changes. $release = '4.0dev (Build: 20201107)'; // Human-friendly version name