From 55f56db61ff03fa481f3ebb5d15cfdb5cb0a1968 Mon Sep 17 00:00:00 2001 From: Jake Dallimore Date: Thu, 12 Sep 2019 11:02:21 +0800 Subject: [PATCH] MDL-66156 block_myoverview: remove orphaned course favourite records --- blocks/myoverview/db/upgrade.php | 58 ++++++++++++++++++++++++++++++++ blocks/myoverview/version.php | 2 +- 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 blocks/myoverview/db/upgrade.php diff --git a/blocks/myoverview/db/upgrade.php b/blocks/myoverview/db/upgrade.php new file mode 100644 index 00000000000..bc7d0b5c85f --- /dev/null +++ b/blocks/myoverview/db/upgrade.php @@ -0,0 +1,58 @@ +. + +/** + * This file keeps track of upgrades to the myoverview block + * @since 3.6.7 + * @package block_myoverview + * @copyright 2019 Jake Dallimore + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +/** + * Upgrade code for the MyOverview block. + * + * @param int $oldversion + */ +function xmldb_block_myoverview_upgrade($oldversion) { + global $DB; + + if ($oldversion < 2018120301) { + // Remove orphaned course favourites, which weren't being deleted when the course was deleted. + $sql = 'SELECT f.id + FROM {favourite} f + LEFT JOIN {course} c + ON (c.id = f.itemid) + WHERE f.component = :component + AND f.itemtype = :itemtype + AND c.id IS NULL'; + $params = ['component' => 'core_course', 'itemtype' => 'courses']; + + if ($records = $DB->get_fieldset_sql($sql, $params)) { + $chunks = array_chunk($records, 1000); + foreach ($chunks as $chunk) { + list($insql, $inparams) = $DB->get_in_or_equal($chunk); + $DB->delete_records_select('favourite', "id $insql", $inparams); + } + } + + upgrade_block_savepoint(true, 2018120301, 'myoverview', false); + } + + return true; +} diff --git a/blocks/myoverview/version.php b/blocks/myoverview/version.php index 03bb65a527c..e6199920609 100644 --- a/blocks/myoverview/version.php +++ b/blocks/myoverview/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2018120300; // The current plugin version (Date: YYYYMMDDXX). +$plugin->version = 2018120301; // The current plugin version (Date: YYYYMMDDXX). $plugin->requires = 2018112800; // Requires this Moodle version. $plugin->component = 'block_myoverview'; // Full name of the plugin (used for diagnostics).