<?xml version="1.0" encoding="UTF-8" ?>
-<XMLDB PATH="lib/db" VERSION="20201008" COMMENT="XMLDB file for core Moodle tables"
+<XMLDB PATH="lib/db" VERSION="20201021" COMMENT="XMLDB file for core Moodle tables"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../lib/xmldb/xmldb.xsd"
>
<FIELD NAME="showreports" TYPE="int" LENGTH="4" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/>
<FIELD NAME="visible" TYPE="int" LENGTH="1" NOTNULL="true" DEFAULT="1" SEQUENCE="false"/>
<FIELD NAME="visibleold" TYPE="int" LENGTH="1" NOTNULL="true" DEFAULT="1" SEQUENCE="false" COMMENT="the state of visible field when hiding parent category, this helps us to recover hidden states when unhiding the parent category later"/>
+ <FIELD NAME="downloadcontent" TYPE="int" LENGTH="1" NOTNULL="false" SEQUENCE="false"/>
<FIELD NAME="groupmode" TYPE="int" LENGTH="4" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/>
<FIELD NAME="groupmodeforce" TYPE="int" LENGTH="4" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/>
<FIELD NAME="defaultgroupingid" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="default grouping used in course modules, does not have key intentionally"/>
<KEYS>
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
<KEY NAME="fk_userid" TYPE="foreign" FIELDS="userid" REFTABLE="user" REFFIELDS="id"/>
+ <KEY NAME="backpackcredentials" TYPE="unique" FIELDS="userid, externalbackpackid"/>
<KEY NAME="externalbackpack" TYPE="foreign" FIELDS="externalbackpackid" REFTABLE="badge_external_backpack" REFFIELDS="id"/>
</KEYS>
</TABLE>
<FIELD NAME="backpackweburl" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false"/>
<FIELD NAME="apiversion" TYPE="char" LENGTH="12" NOTNULL="true" DEFAULT="1.0" SEQUENCE="false"/>
<FIELD NAME="sortorder" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false"/>
- <FIELD NAME="password" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="Password to login into external backpack and issue badges."/>
<FIELD NAME="oauth2_issuerid" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="OAuth 2 Issuer"/>
</FIELDS>
<KEYS>
</INDEXES>
</TABLE>
</TABLES>
- </XMLDB>
+ </XMLDB>
// Add example field.
$field = new xmldb_field('example', XMLDB_TYPE_TEXT, null, null, null, null, null, 'tutorial');
+
if (!$dbman->field_exists($table, $field)) {
$dbman->add_field($table, $field);
}
}
if ($oldversion < 2020102300.01) {
- global $DB, $CFG;
+ // Define field downloadcontent to be added to course.
+ $table = new xmldb_table('course');
+ $field = new xmldb_field('downloadcontent', XMLDB_TYPE_INTEGER, '1', null, null, null, null, 'visibleold');
+
+ if (!$dbman->field_exists($table, $field)) {
+ $dbman->add_field($table, $field);
+ }
- upgrade_main_savepoint(true, 2020102300.01);
+ // Main savepoint reached.
+ upgrade_main_savepoint(true, 2020102300.01);
+ }
+
++ if ($oldversion < 2020102300.02) {
+ $table = new xmldb_table('badge_backpack');
+ $uniquekey = new xmldb_key('backpackcredentials', XMLDB_KEY_UNIQUE, ['userid', 'externalbackpackid']);
+
+ // All external backpack providers/hosts are now exclusively stored in badge_external_backpack.
+ // All credentials are stored in badge_backpack and are unique per user, backpack.
+ if (!$dbman->find_key_name($table, $uniquekey)) {
+ $dbman->add_key($table, $uniquekey);
+ }
+
+ // If there is a current backpack set then copy it across to the new structure.
+ if ($CFG->badges_defaultissuercontact) {
+ // Get the currently used site backpacks.
+ $records = $DB->get_records_select('badge_external_backpack', "password IS NOT NULL AND password != ''");
+ $backpack = [
+ 'userid' => '0',
+ 'email' => $CFG->badges_defaultissuercontact,
+ 'backpackuid' => -1
+ ];
+
+ // Create records corresponding to the site backpacks.
+ foreach ($records as $record) {
+ $backpack['password'] = $record->password;
+ $backpack['externalbackpackid'] = $record->id;
+ $DB->insert_record('badge_backpack', (object) $backpack);
+ }
+ }
+
+ // Drop the password field as this is moved to badge_backpack.
+ $table = new xmldb_table('badge_external_backpack');
+ $field = new xmldb_field('password', XMLDB_TYPE_CHAR, '50');
+ if ($dbman->field_exists($table, $field)) {
+ $dbman->drop_field($table, $field);
+ }
+
+ // Main savepoint reached.
++ upgrade_main_savepoint(true, 2020102300.02);
+ }
+
return true;
}