Merge branch 'MDL-59854-master' of git://github.com/junpataleta/moodle

This commit is contained in:
Jun Pataleta 2017-10-12 12:27:34 +08:00
commit 458d9e084f
3 changed files with 33 additions and 2 deletions

3
mod/forum/db/install.xml Normal file → Executable file
View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<XMLDB PATH="mod/forum/db" VERSION="20160912" COMMENT="XMLDB file for Moodle mod/forum"
<XMLDB PATH="mod/forum/db" VERSION="20171012" COMMENT="XMLDB file for Moodle mod/forum"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd"
>
@ -118,6 +118,7 @@
<KEYS>
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
<KEY NAME="forum" TYPE="foreign" FIELDS="forum" REFTABLE="forum" REFFIELDS="id"/>
<KEY NAME="useridforum" TYPE="unique" FIELDS="userid, forum" COMMENT="Unique key"/>
</KEYS>
<INDEXES>
<INDEX NAME="userid" UNIQUE="false" FIELDS="userid"/>

View File

@ -84,5 +84,35 @@ function xmldb_forum_upgrade($oldversion) {
// Automatically generated Moodle v3.3.0 release upgrade line.
// Put any upgrade step following this.
if ($oldversion < 2017092200) {
// Remove duplicate entries from forum_subscriptions.
// Find records with multiple userid/forum combinations and find the highest ID.
// Later we will remove all those entries.
$sql = "
SELECT MIN(id) as minid, userid, forum
FROM {forum_subscriptions}
GROUP BY userid, forum
HAVING COUNT(id) > 1";
if ($duplicatedrows = $DB->get_recordset_sql($sql)) {
foreach ($duplicatedrows as $row) {
$DB->delete_records_select('forum_subscriptions',
'userid = :userid AND forum = :forum AND id <> :minid', (array)$row);
}
}
$duplicatedrows->close();
// Define key useridforum (primary) to be added to forum_subscriptions.
$table = new xmldb_table('forum_subscriptions');
$key = new xmldb_key('useridforum', XMLDB_KEY_UNIQUE, array('userid', 'forum'));
// Launch add key useridforum.
$dbman->add_key($table, $key);
// Forum savepoint reached.
upgrade_mod_savepoint(true, 2017092200, 'forum');
}
return true;
}

View File

@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2017051500; // The current module version (Date: YYYYMMDDXX)
$plugin->version = 2017092200; // The current module version (Date: YYYYMMDDXX)
$plugin->requires = 2017050500; // Requires this Moodle version
$plugin->component = 'mod_forum'; // Full name of the plugin (used for diagnostics)