diff --git a/admin/tool/dataprivacy/db/upgrade.php b/admin/tool/dataprivacy/db/upgrade.php new file mode 100644 index 0000000000000..8c0b4fc09e3b2 --- /dev/null +++ b/admin/tool/dataprivacy/db/upgrade.php @@ -0,0 +1,149 @@ +. + +/** + * tool_dataprivacy plugin upgrade code + * + * @package tool_dataprivacy + * @copyright 2018 Jun Pataleta + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +/** + * Function to upgrade tool_dataprivacy. + * + * @param int $oldversion the version we are upgrading from + * @return bool result + */ +function xmldb_tool_dataprivacy_upgrade($oldversion) { + global $CFG, $DB; + + $dbman = $DB->get_manager(); + + if ($oldversion < 2018051405) { + // Define table tool_dataprivacy_ctxexpired to be created. + $table = new xmldb_table('tool_dataprivacy_ctxexpired'); + + // Adding fields to table tool_dataprivacy_ctxexpired. + $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); + $table->add_field('contextid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null); + $table->add_field('status', XMLDB_TYPE_INTEGER, '2', null, XMLDB_NOTNULL, null, '0'); + $table->add_field('usermodified', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null); + $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null); + $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null); + + // Adding keys to table tool_dataprivacy_ctxexpired. + $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); + $table->add_key('contextid', XMLDB_KEY_FOREIGN_UNIQUE, array('contextid'), 'context', array('id')); + + // Conditionally launch create table for tool_dataprivacy_ctxexpired. + if (!$dbman->table_exists($table)) { + $dbman->create_table($table); + } + + // Define table tool_dataprivacy_contextlist to be created. + $table = new xmldb_table('tool_dataprivacy_contextlist'); + + // Adding fields to table tool_dataprivacy_contextlist. + $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); + $table->add_field('component', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null); + $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0'); + $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0'); + + // Adding keys to table tool_dataprivacy_contextlist. + $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); + + // Conditionally launch create table for tool_dataprivacy_contextlist. + if (!$dbman->table_exists($table)) { + $dbman->create_table($table); + } + + // Define table tool_dataprivacy_ctxlst_ctx to be created. + $table = new xmldb_table('tool_dataprivacy_ctxlst_ctx'); + + // Adding fields to table tool_dataprivacy_ctxlst_ctx. + $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); + $table->add_field('contextid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null); + $table->add_field('contextlistid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null); + $table->add_field('status', XMLDB_TYPE_INTEGER, '2', null, XMLDB_NOTNULL, null, '0'); + $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0'); + $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0'); + + // Adding keys to table tool_dataprivacy_ctxlst_ctx. + $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); + $table->add_key('contextlistid', XMLDB_KEY_FOREIGN, array('contextlistid'), 'tool_dataprivacy_contextlist', array('id')); + + // Conditionally launch create table for tool_dataprivacy_ctxlst_ctx. + if (!$dbman->table_exists($table)) { + $dbman->create_table($table); + } + + // Define table tool_dataprivacy_rqst_ctxlst to be created. + $table = new xmldb_table('tool_dataprivacy_rqst_ctxlst'); + + // Adding fields to table tool_dataprivacy_rqst_ctxlst. + $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); + $table->add_field('requestid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null); + $table->add_field('contextlistid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null); + + // Adding keys to table tool_dataprivacy_rqst_ctxlst. + $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); + $table->add_key('requestid', XMLDB_KEY_FOREIGN, array('requestid'), 'tool_dataprivacy_request', array('id')); + $table->add_key('contextlistid', XMLDB_KEY_FOREIGN, array('contextlistid'), 'tool_dataprivacy_contextlist', array('id')); + $table->add_key('request_contextlist', XMLDB_KEY_UNIQUE, array('requestid', 'contextlistid')); + + // Conditionally launch create table for tool_dataprivacy_rqst_ctxlst. + if (!$dbman->table_exists($table)) { + $dbman->create_table($table); + } + + // Define field lawfulbases to be added to tool_dataprivacy_purpose. + $table = new xmldb_table('tool_dataprivacy_purpose'); + + // It is a required field. We initially define and add it as null and later update it to XMLDB_NOTNULL. + $field = new xmldb_field('lawfulbases', XMLDB_TYPE_TEXT, null, null, null, null, null, 'descriptionformat'); + + // Conditionally launch add field lawfulbases. + if (!$dbman->field_exists($table, $field)) { + $dbman->add_field($table, $field); + + // Set a kind-of-random value to lawfulbasis field. + $DB->set_field('tool_dataprivacy_purpose', 'lawfulbases', 'gdpr_art_6_1_a'); + + // We redefine it now as not null. + $field = new xmldb_field('lawfulbases', XMLDB_TYPE_TEXT, null, null, XMLDB_NOTNULL, null, null, 'descriptionformat'); + + // Launch change of nullability for field lawfulbases. + $dbman->change_field_notnull($table, $field); + } + + // Define field sensitivedatareasons to be added to tool_dataprivacy_purpose. + $table = new xmldb_table('tool_dataprivacy_purpose'); + $field = new xmldb_field('sensitivedatareasons', XMLDB_TYPE_TEXT, null, null, null, null, null, 'lawfulbases'); + + // Conditionally launch add field sensitivedatareasons. + if (!$dbman->field_exists($table, $field)) { + $dbman->add_field($table, $field); + } + + // Dataprivacy savepoint reached. + upgrade_plugin_savepoint(true, 2018051405, 'tool', 'dataprivacy'); + } + + return true; +} diff --git a/admin/tool/dataprivacy/version.php b/admin/tool/dataprivacy/version.php index f2cf6d1f70ec9..f5c7977bfbee2 100644 --- a/admin/tool/dataprivacy/version.php +++ b/admin/tool/dataprivacy/version.php @@ -24,6 +24,6 @@ defined('MOODLE_INTERNAL') || die; -$plugin->version = 2018051403; +$plugin->version = 2018051405; $plugin->requires = 2018050800; // Moodle 3.5dev (Build 2018031600) and upwards. $plugin->component = 'tool_dataprivacy';