6023facfb3db031ab52c37c8d8e7da9c736d9822
[moodle.git] / enrol / lti / db / upgrade.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16 //
18 /**
19  * This file keeps track of upgrades to the lti enrolment plugin
20  *
21  * @package enrol_lti
22  * @copyright  2016 John Okely <john@moodle.com>
23  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  */
26  defined('MOODLE_INTERNAL') || die;
28 /**
29  * xmldb_lti_upgrade is the function that upgrades
30  * the lti module database when is needed
31  *
32  * This function is automaticly called when version number in
33  * version.php changes.
34  *
35  * @param int $oldversion New old version number.
36  *
37  * @return boolean
38  */
39 function xmldb_enrol_lti_upgrade($oldversion) {
40     global $DB;
42     $dbman = $DB->get_manager();
44     if ($oldversion < 2016052303) {
46         // Define table enrol_lti_lti2_consumer to be created.
47         $table = new xmldb_table('enrol_lti_lti2_consumer');
49         // Adding fields to table enrol_lti_lti2_consumer.
50         $table->add_field('id', XMLDB_TYPE_INTEGER, '11', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
51         $table->add_field('name', XMLDB_TYPE_CHAR, '50', null, XMLDB_NOTNULL, null, null);
52         $table->add_field('consumerkey256', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null);
53         $table->add_field('consumerkey', XMLDB_TYPE_TEXT, null, null, null, null, null);
54         $table->add_field('secret', XMLDB_TYPE_CHAR, '1024', null, XMLDB_NOTNULL, null, null);
55         $table->add_field('ltiversion', XMLDB_TYPE_CHAR, '10', null, null, null, null);
56         $table->add_field('consumername', XMLDB_TYPE_CHAR, '255', null, null, null, null);
57         $table->add_field('consumerversion', XMLDB_TYPE_CHAR, '255', null, null, null, null);
58         $table->add_field('consumerguid', XMLDB_TYPE_CHAR, '1024', null, null, null, null);
59         $table->add_field('profile', XMLDB_TYPE_TEXT, null, null, null, null, null);
60         $table->add_field('toolproxy', XMLDB_TYPE_TEXT, null, null, null, null, null);
61         $table->add_field('settings', XMLDB_TYPE_TEXT, null, null, null, null, null);
62         $table->add_field('protected', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, null);
63         $table->add_field('enabled', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, null);
64         $table->add_field('enablefrom', XMLDB_TYPE_INTEGER, '10', null, null, null, null);
65         $table->add_field('enableuntil', XMLDB_TYPE_INTEGER, '10', null, null, null, null);
66         $table->add_field('lastaccess', XMLDB_TYPE_INTEGER, '10', null, null, null, null);
67         $table->add_field('created', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
68         $table->add_field('updated', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
70         // Adding keys to table enrol_lti_lti2_consumer.
71         $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
73         // Adding indexes to table enrol_lti_lti2_consumer.
74         $table->add_index('consumerkey256_uniq', XMLDB_INDEX_UNIQUE, array('consumerkey256'));
76         // Conditionally launch create table for enrol_lti_lti2_consumer.
77         if (!$dbman->table_exists($table)) {
78             $dbman->create_table($table);
79         }
81         // Define table enrol_lti_lti2_tool_proxy to be created.
82         $table = new xmldb_table('enrol_lti_lti2_tool_proxy');
84         // Adding fields to table enrol_lti_lti2_tool_proxy.
85         $table->add_field('id', XMLDB_TYPE_INTEGER, '11', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
86         $table->add_field('toolproxykey', XMLDB_TYPE_CHAR, '32', null, XMLDB_NOTNULL, null, null);
87         $table->add_field('consumerid', XMLDB_TYPE_INTEGER, '11', null, XMLDB_NOTNULL, null, null);
88         $table->add_field('toolproxy', XMLDB_TYPE_TEXT, null, null, XMLDB_NOTNULL, null, null);
89         $table->add_field('created', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
90         $table->add_field('updated', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
92         // Adding keys to table enrol_lti_lti2_tool_proxy.
93         $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
94         $table->add_key('toolproxykey_uniq', XMLDB_KEY_UNIQUE, array('toolproxykey'));
95         $table->add_key('consumerid', XMLDB_KEY_FOREIGN, array('consumerid'), 'enrol_lti_lti2_consumer', array('id'));
97         // Conditionally launch create table for enrol_lti_lti2_tool_proxy.
98         if (!$dbman->table_exists($table)) {
99             $dbman->create_table($table);
100         }
102         // Define table enrol_lti_lti2_context to be created.
103         $table = new xmldb_table('enrol_lti_lti2_context');
105         // Adding fields to table enrol_lti_lti2_context.
106         $table->add_field('id', XMLDB_TYPE_INTEGER, '11', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
107         $table->add_field('consumerid', XMLDB_TYPE_INTEGER, '11', null, XMLDB_NOTNULL, null, null);
108         $table->add_field('lticontextkey', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null);
109         $table->add_field('settings', XMLDB_TYPE_TEXT, null, null, null, null, null);
110         $table->add_field('created', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
111         $table->add_field('updated', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
113         // Adding keys to table enrol_lti_lti2_context.
114         $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
115         $table->add_key('consumerid', XMLDB_KEY_FOREIGN, array('consumerid'), 'enrol_lti_lti2_consumer', array('id'));
117         // Conditionally launch create table for enrol_lti_lti2_context.
118         if (!$dbman->table_exists($table)) {
119             $dbman->create_table($table);
120         }
122         // Define table enrol_lti_lti2_nonce to be created.
123         $table = new xmldb_table('enrol_lti_lti2_nonce');
125         // Adding fields to table enrol_lti_lti2_nonce.
126         $table->add_field('id', XMLDB_TYPE_INTEGER, '11', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
127         $table->add_field('consumerid', XMLDB_TYPE_INTEGER, '11', null, XMLDB_NOTNULL, null, null);
128         $table->add_field('value', XMLDB_TYPE_CHAR, '32', null, XMLDB_NOTNULL, null, null);
129         $table->add_field('expires', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
131         // Adding keys to table enrol_lti_lti2_nonce.
132         $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
133         $table->add_key('consumerid', XMLDB_KEY_FOREIGN, array('consumerid'), 'enrol_lti_lti2_consumer', array('id'));
135         // Conditionally launch create table for enrol_lti_lti2_nonce.
136         if (!$dbman->table_exists($table)) {
137             $dbman->create_table($table);
138         }
140         // Define table enrol_lti_lti2_resource_link to be created.
141         $table = new xmldb_table('enrol_lti_lti2_resource_link');
143         // Adding fields to table enrol_lti_lti2_resource_link.
144         $table->add_field('id', XMLDB_TYPE_INTEGER, '11', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
145         $table->add_field('contextid', XMLDB_TYPE_INTEGER, '11', null, null, null, null);
146         $table->add_field('consumerid', XMLDB_TYPE_INTEGER, '11', null, null, null, null);
147         $table->add_field('ltiresourcelinkkey', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null);
148         $table->add_field('settings', XMLDB_TYPE_TEXT, null, null, null, null, null);
149         $table->add_field('primaryresourcelinkid', XMLDB_TYPE_INTEGER, '11', null, null, null, null);
150         $table->add_field('shareapproved', XMLDB_TYPE_INTEGER, '1', null, null, null, null);
151         $table->add_field('created', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
152         $table->add_field('updated', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
154         // Adding keys to table enrol_lti_lti2_resource_link.
155         $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
156         $table->add_key('contextid', XMLDB_KEY_FOREIGN, array('contextid'), 'enrol_lti_lti2_context', array('id'));
157         $table->add_key('primaryresourcelinkid', XMLDB_KEY_FOREIGN, array('primaryresourcelinkid'),
158             'enrol_lti_lti2_resource_link', array('id'));
159         $table->add_key('consumerid', XMLDB_KEY_FOREIGN, array('consumerid'), 'enrol_lti_lti2_consumer', array('id'));
161         // Conditionally launch create table for enrol_lti_lti2_resource_link.
162         if (!$dbman->table_exists($table)) {
163             $dbman->create_table($table);
164         }
166         // Define table enrol_lti_lti2_share_key to be created.
167         $table = new xmldb_table('enrol_lti_lti2_share_key');
169         // Adding fields to table enrol_lti_lti2_share_key.
170         $table->add_field('id', XMLDB_TYPE_INTEGER, '11', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
171         $table->add_field('sharekey', XMLDB_TYPE_CHAR, '32', null, XMLDB_NOTNULL, null, null);
172         $table->add_field('resourcelinkid', XMLDB_TYPE_INTEGER, '11', null, XMLDB_NOTNULL, null, null);
173         $table->add_field('autoapprove', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, null);
174         $table->add_field('expires', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
176         // Adding keys to table enrol_lti_lti2_share_key.
177         $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
178         $table->add_key('sharekey', XMLDB_KEY_UNIQUE, array('sharekey'));
179         $table->add_key('resourcelinkid', XMLDB_KEY_FOREIGN_UNIQUE, array('resourcelinkid'),
180             'enrol_lti_lti2_resource_link', array('id'));
182         // Conditionally launch create table for enrol_lti_lti2_share_key.
183         if (!$dbman->table_exists($table)) {
184             $dbman->create_table($table);
185         }
187         // Define table enrol_lti_lti2_user_result to be created.
188         $table = new xmldb_table('enrol_lti_lti2_user_result');
190         // Adding fields to table enrol_lti_lti2_user_result.
191         $table->add_field('id', XMLDB_TYPE_INTEGER, '11', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
192         $table->add_field('resourcelinkid', XMLDB_TYPE_INTEGER, '11', null, XMLDB_NOTNULL, null, null);
193         $table->add_field('ltiuserkey', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null);
194         $table->add_field('ltiresultsourcedid', XMLDB_TYPE_CHAR, '1024', null, XMLDB_NOTNULL, null, null);
195         $table->add_field('created', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
196         $table->add_field('updated', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
198         // Adding keys to table enrol_lti_lti2_user_result.
199         $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
200         $table->add_key('resourcelinkid', XMLDB_KEY_FOREIGN, array('resourcelinkid'),
201             'enrol_lti_lti2_resource_link', array('id'));
203         // Conditionally launch create table for enrol_lti_lti2_user_result.
204         if (!$dbman->table_exists($table)) {
205             $dbman->create_table($table);
206         }
208         // Define table enrol_lti_tool_consumer_map to be created.
209         $table = new xmldb_table('enrol_lti_tool_consumer_map');
211         // Adding fields to table enrol_lti_tool_consumer_map.
212         $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
213         $table->add_field('toolid', XMLDB_TYPE_INTEGER, '11', null, XMLDB_NOTNULL, null, null);
214         $table->add_field('consumerid', XMLDB_TYPE_INTEGER, '11', null, XMLDB_NOTNULL, null, null);
216         // Adding keys to table enrol_lti_tool_consumer_map.
217         $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
218         $table->add_key('toolid', XMLDB_KEY_FOREIGN, array('toolid'), 'enrol_lti_tools', array('id'));
219         $table->add_key('consumerid', XMLDB_KEY_FOREIGN, array('consumerid'), 'enrol_lti_lti2_consumer', array('id'));
221         // Conditionally launch create table for enrol_lti_tool_consumer_map.
222         if (!$dbman->table_exists($table)) {
223             $dbman->create_table($table);
224         }
226         // Lti savepoint reached.
227         upgrade_plugin_savepoint(true, 2016052303, 'enrol', 'lti');
228     }
230     if ($oldversion < 2016052304) {
232         // Define field type to be added to enrol_lti_lti2_context.
233         $table = new xmldb_table('enrol_lti_lti2_context');
234         $field = new xmldb_field('type', XMLDB_TYPE_CHAR, '100', null, null, null, null, 'lticontextkey');
236         // Conditionally launch add field type.
237         if (!$dbman->field_exists($table, $field)) {
238             $dbman->add_field($table, $field);
239         }
241         // Lti savepoint reached.
242         upgrade_plugin_savepoint(true, 2016052304, 'enrol', 'lti');
243     }
245     if ($oldversion < 2017011300) {
247         // Changing precision of field value on table enrol_lti_lti2_nonce to (64).
248         $table = new xmldb_table('enrol_lti_lti2_nonce');
249         $field = new xmldb_field('value', XMLDB_TYPE_CHAR, '64', null, XMLDB_NOTNULL, null, null, 'consumerid');
251         // Launch change of precision for field value.
252         $dbman->change_field_precision($table, $field);
254         // Lti savepoint reached.
255         upgrade_plugin_savepoint(true, 2017011300, 'enrol', 'lti');
256     }
258     // Automatically generated Moodle v3.2.0 release upgrade line.
259     // Put any upgrade step following this.
261     return true;