MDL-48880 mod_lesson: clean lesson_branch on upgrade and restore

This commit is contained in:
Jean-Michel Vedrine
2015-03-29 21:37:01 +02:00
parent 0619c4ecc4
commit e807911c99
3 changed files with 39 additions and 1 deletions
@@ -223,6 +223,23 @@ class restore_lesson_activity_structure_step extends restore_activity_structure_
}
$rs->close();
// Replay the upgrade step 2014111003.
// Delete any orphaned lesson_branch record.
if ($DB->get_dbfamily() === 'mysql') {
$sql = "DELETE {lesson_branch}
FROM {lesson_branch}
LEFT JOIN {lesson_pages}
ON {lesson_branch}.pageid = {lesson_pages}.id
WHERE {lesson_pages}.id IS NULL";
} else {
$sql = "DELETE FROM {lesson_branch}
WHERE NOT EXISTS (
SELECT 'x' FROM {lesson_pages}
WHERE {lesson_branch}.pageid = {lesson_pages}.id)";
}
$DB->execute($sql);
// Re-map the dependency and activitylink information
// If a depency or activitylink has no mapping in the backup data then it could either be a duplication of a
// lesson, or a backup/restore of a single lesson. We have no way to determine which and whether this is the
+21
View File
@@ -115,5 +115,26 @@ function xmldb_lesson_upgrade($oldversion) {
upgrade_mod_savepoint(true, 2014111001, 'lesson');
}
if ($oldversion < 2014111003) {
// Delete any orphaned lesson_branch record.
if ($DB->get_dbfamily() === 'mysql') {
$sql = "DELETE {lesson_branch}
FROM {lesson_branch}
LEFT JOIN {lesson_pages}
ON {lesson_branch}.pageid = {lesson_pages}.id
WHERE {lesson_pages}.id IS NULL";
} else {
$sql = "DELETE FROM {lesson_branch}
WHERE NOT EXISTS (
SELECT 'x' FROM {lesson_pages}
WHERE {lesson_branch}.pageid = {lesson_pages}.id)";
}
$DB->execute($sql);
// Lesson savepoint reached.
upgrade_mod_savepoint(true, 2014111003, 'lesson');
}
return true;
}
+1 -1
View File
@@ -24,7 +24,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2014111002; // The current module version (Date: YYYYMMDDXX)
$plugin->version = 2014111003; // The current module version (Date: YYYYMMDDXX)
$plugin->requires = 2014110400; // Requires this Moodle version
$plugin->component = 'mod_lesson'; // Full name of the plugin (used for diagnostics)
$plugin->cron = 0;