MDL-14591 - adding my name next to todos so I can find them later
[moodle.git] / lib / db / upgrade.php
CommitLineData
4e423cbf 1<?PHP //$Id$
2
3// This file keeps track of upgrades to Moodle.
4//
5// Sometimes, changes between versions involve
6// alterations to database structures and other
7// major things that may break installations.
8//
9// The upgrade function in this file will attempt
10// to perform all the necessary actions to upgrade
11// your older installtion to the current version.
12//
13// If there's something it cannot do itself, it
14// will tell you what you need to do.
15//
16// The commands in here will all be database-neutral,
b1f93b15 17// using the methods of database_manager class
775f811a 18//
19// Please do not forget to use upgrade_set_timeout()
20// before any action that may take longer time to finish.
4e423cbf 21
775f811a 22function xmldb_main_upgrade($oldversion) {
f33e1ed4 23 global $CFG, $THEME, $USER, $DB;
4e423cbf 24
25 $result = true;
26
46d318bc 27 $dbman = $DB->get_manager(); // loads ddl manager and xmldb classes
f33e1ed4 28
1ea260d8 29 ////////////////////////////////////////
30 ///upgrade supported only from 1.9.x ///
31 ////////////////////////////////////////
da4aa3e4 32
a1f27717 33 if ($result && $oldversion < 2008030700) {
775f811a 34 upgrade_set_timeout(60*20); // this may take a while
a1f27717 35
36 /// Define index contextid-lowerboundary (not unique) to be dropped form grade_letters
a8cb94f6 37 $table = new xmldb_table('grade_letters');
69b80cc2 38 $index = new xmldb_index('contextid-lowerboundary', XMLDB_INDEX_NOTUNIQUE, array('contextid', 'lowerboundary'));
a1f27717 39
40 /// Launch drop index contextid-lowerboundary
eee5d9bb 41 $dbman->drop_index($table, $index);
a1f27717 42
a1f27717 43 /// Define index contextid-lowerboundary-letter (unique) to be added to grade_letters
a8cb94f6 44 $table = new xmldb_table('grade_letters');
69b80cc2 45 $index = new xmldb_index('contextid-lowerboundary-letter', XMLDB_INDEX_UNIQUE, array('contextid', 'lowerboundary', 'letter'));
a1f27717 46
47 /// Launch add index contextid-lowerboundary-letter
eee5d9bb 48 $dbman->add_index($table, $index);
a1f27717 49
50 /// Main savepoint reached
0f77b186 51 upgrade_main_savepoint($result, 2008030700);
52 }
a1f27717 53
1ea260d8 54 if ($result && $oldversion < 2008050100) {
55 // Update courses that used weekscss to weeks
a8cb94f6 56 $result = $DB->set_field('course', 'format', 'weeks', array('format' => 'weekscss'));
1ea260d8 57 upgrade_main_savepoint($result, 2008050100);
58 }
59
0b51c247 60 if ($result && $oldversion < 2008050200) {
61 // remove unused config options
62 unset_config('statsrolesupgraded');
63 upgrade_main_savepoint($result, 2008050200);
64 }
65
994fbaab 66 if ($result && $oldversion < 2008050700) {
775f811a 67 upgrade_set_timeout(60*20); // this may take a while
68
994fbaab 69 /// Fix minor problem caused by MDL-5482.
70 require_once($CFG->dirroot . '/question/upgrade.php');
71 $result = $result && question_fix_random_question_parents();
72 upgrade_main_savepoint($result, 2008050700);
73 }
74
ab37dc60 75 if ($result && $oldversion < 2008051200) {
76 // if guest role used as default user role unset it and force admin to choose new setting
77 if (!empty($CFG->defaultuserroleid)) {
910dd4dd 78 if ($role = $DB->get_record('role', array('id'=>$CFG->defaultuserroleid))) {
ab37dc60 79 if ($guestroles = get_roles_with_capability('moodle/legacy:guest', CAP_ALLOW)) {
80 if (isset($guestroles[$role->id])) {
81 set_config('defaultuserroleid', null);
82 notify('Guest role removed from "Default role for all users" setting, please select another role.', 'notifysuccess');
83 }
84 }
85 } else {
86 set_config('defaultuserroleid', null);
87 }
88 }
89 }
90
8b9cfac4 91 if ($result && $oldversion < 2008051201) {
92 notify('Increasing size of user idnumber field, this may take a while...', 'notifysuccess');
775f811a 93 upgrade_set_timeout(60*20); // this may take a while
8b9cfac4 94
469dcbcc 95 /// Under MySQL and Postgres... detect old NULL contents and change them by correct empty string. MDL-14859
96 if ($CFG->dbfamily == 'mysql' || $CFG->dbfamily == 'postgres') {
eee5d9bb 97 $DB->execute("UPDATE {user} SET idnumber = '' WHERE idnumber IS NULL");
469dcbcc 98 }
99
8b9cfac4 100 /// Define index idnumber (not unique) to be dropped form user
a8cb94f6 101 $table = new xmldb_table('user');
69b80cc2 102 $index = new xmldb_index('idnumber', XMLDB_INDEX_NOTUNIQUE, array('idnumber'));
8b9cfac4 103
104 /// Launch drop index idnumber
f33e1ed4 105 if ($dbman->index_exists($table, $index)) {
eee5d9bb 106 $dbman->drop_index($table, $index);
8b9cfac4 107 }
108
109 /// Changing precision of field idnumber on table user to (255)
a8cb94f6 110 $table = new xmldb_table('user');
69b80cc2 111 $field = new xmldb_field('idnumber', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null, 'password');
8b9cfac4 112
113 /// Launch change of precision for field idnumber
eee5d9bb 114 $dbman->change_field_precision($table, $field);
8b9cfac4 115
116 /// Launch add index idnumber again
69b80cc2 117 $index = new xmldb_index('idnumber', XMLDB_INDEX_NOTUNIQUE, array('idnumber'));
eee5d9bb 118 $dbman->add_index($table, $index);
8b9cfac4 119
120 /// Main savepoint reached
121 upgrade_main_savepoint($result, 2008051201);
122 }
123
7ade55ad 124 if ($result && $oldversion < 2008051202) {
910dd4dd 125 $log_action = new object();
7ade55ad 126 $log_action->module = 'course';
127 $log_action->action = 'unenrol';
128 $log_action->mtable = 'course';
129 $log_action->field = 'fullname';
910dd4dd 130 if (!$DB->record_exists('log_display', array('action'=>'unenrol', 'module'=>'course'))) {
131 $result = $result && $DB->insert_record('log_display', $log_action);
7ade55ad 132 }
133 upgrade_main_savepoint($result, 2008051202);
134 }
135
fa162144 136 if ($result && $oldversion < 2008051203) {
137 $table = new xmldb_table('mnet_enrol_course');
138 $field = new xmldb_field('sortorder', XMLDB_TYPE_INTEGER, '10', true, true, null, false, false, 0);
eee5d9bb 139 $dbman->change_field_precision($table, $field);
fa162144 140 upgrade_main_savepoint($result, 2008051203);
141 }
142
38fb8190 143 if ($result && $oldversion < 2008063001) {
775f811a 144 upgrade_set_timeout(60*20); // this may take a while
145
38fb8190 146 // table to be modified
147 $table = new xmldb_table('tag_instance');
148 // add field
149 $field = new xmldb_field('tiuserid');
150 if (!$dbman->field_exists($table, $field)) {
151 $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, 0, 'itemid');
152 $dbman->add_field($table, $field);
153 }
154 // modify index
155 $index = new xmldb_index('itemtype-itemid-tagid');
156 $index->set_attributes(XMLDB_INDEX_UNIQUE, array('itemtype', 'itemid', 'tagid'));
157 $dbman->drop_index($table, $index);
158 $index = new xmldb_index('itemtype-itemid-tagid-tiuserid');
159 $index->set_attributes(XMLDB_INDEX_UNIQUE, array('itemtype', 'itemid', 'tagid', 'tiuserid'));
160 $dbman->add_index($table, $index);
161
162 /// Main savepoint reached
163 upgrade_main_savepoint($result, 2008063001);
164 }
98978c2e 165 if ($result && $oldversion < 2008063002) {
166
167 /// Define table repository to be created
168 $table = new xmldb_table('repository');
169
170 /// Adding fields to table repository
171 $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
172 $table->add_field('repositoryname', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null);
173 $table->add_field('repositorytype', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
174 $table->add_field('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
175 $table->add_field('contextid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
176 $table->add_field('username', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null);
177 $table->add_field('password', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null);
178 $table->add_field('data1', XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null);
179 $table->add_field('data2', XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null);
180 $table->add_field('data3', XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null);
181 $table->add_field('data4', XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null);
182 $table->add_field('data5', XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null);
183 $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
184 $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
185
186 /// Adding keys to table repository
187 $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
188
189 /// Conditionally launch create table for repository
190 if (!$dbman->table_exists($table)) {
191 $dbman->create_table($table);
192 }
38fb8190 193
98978c2e 194 /// Main savepoint reached
195 upgrade_main_savepoint($result, 2008063002);
196 }
38fb8190 197
a036d7f3 198 if ($result && $oldversion < 2008070300) {
199 $result = $DB->delete_records_select('role_names', $DB->sql_isempty('role_names', 'name', false, false));
200 upgrade_main_savepoint($result, 2008070300);
201 }
4e781c7b 202
fe074586 203 if ($result && $oldversion < 2008070700) {
204 if (isset($CFG->defaultuserroleid) and isset($CFG->guestroleid) and $CFG->defaultuserroleid == $CFG->guestroleid) {
205 // guest can not be selected in defaultuserroleid!
206 unset_config('defaultuserroleid');
207 }
208 upgrade_main_savepoint($result, 2008070700);
209 }
210
ac5efef6 211 if ($result && $oldversion < 2008070701) {
212
213 /// Define table portfolio_instance to be created
214 $table = new xmldb_table('portfolio_instance');
215
216 /// Adding fields to table portfolio_instance
217 $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
218 $table->add_field('plugin', XMLDB_TYPE_CHAR, '50', null, XMLDB_NOTNULL, null, null, null, null);
219 $table->add_field('name', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
220 $table->add_field('visible', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '1');
221
222 /// Adding keys to table portfolio_instance
223 $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
224
225 /// Conditionally launch create table for portfolio_instance
226 if (!$dbman->table_exists($table)) {
227 $dbman->create_table($table);
228 }
229 /// Define table portfolio_instance_config to be created
230 $table = new xmldb_table('portfolio_instance_config');
231
232 /// Adding fields to table portfolio_instance_config
233 $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
234 $table->add_field('instance', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
235 $table->add_field('name', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
236 $table->add_field('value', XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null);
237
238 /// Adding keys to table portfolio_instance_config
239 $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
240 $table->add_key('instance', XMLDB_KEY_FOREIGN, array('instance'), 'portfolio_instance', array('id'));
241
242 /// Adding indexes to table portfolio_instance_config
243 $table->add_index('name', XMLDB_INDEX_NOTUNIQUE, array('name'));
244
245 /// Conditionally launch create table for portfolio_instance_config
246 if (!$dbman->table_exists($table)) {
247 $dbman->create_table($table);
248 }
249
250 /// Define table portfolio_instance_user to be created
251 $table = new xmldb_table('portfolio_instance_user');
252
253 /// Adding fields to table portfolio_instance_user
254 $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
255 $table->add_field('instance', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
256 $table->add_field('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
257 $table->add_field('name', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
258 $table->add_field('value', XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null);
259
260 /// Adding keys to table portfolio_instance_user
261 $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
262 $table->add_key('instancefk', XMLDB_KEY_FOREIGN, array('instance'), 'portfolio_instance', array('id'));
263 $table->add_key('userfk', XMLDB_KEY_FOREIGN, array('userid'), 'user', array('id'));
264
265 /// Conditionally launch create table for portfolio_instance_user
266 if (!$dbman->table_exists($table)) {
267 $dbman->create_table($table);
268 }
269
270 /// Main savepoint reached
271 upgrade_main_savepoint($result, 2008070701);
272 }
172dd12c 273
775f811a 274 if ($result && $oldversion < 2008072400) {
275 /// Create the database tables for message_processors
f65b2dae 276 $table = new xmldb_table('message_processors');
277 $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
278 $table->add_field('name', XMLDB_TYPE_CHAR, '166', null, XMLDB_NOTNULL, null, null, null, null);
279 $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
3b120e46 280 $dbman->create_table($table);
281
3b120e46 282 /// delete old and create new fields
f65b2dae 283 $table = new xmldb_table('message');
284 $field = new xmldb_field('messagetype');
3b120e46 285 $dbman->drop_field($table, $field);
286
287 /// fields to rename
f65b2dae 288 $field = new xmldb_field('message');
289 $field->set_attributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, null);
3b120e46 290 $dbman->rename_field($table, $field, 'fullmessage');
f65b2dae 291 $field = new xmldb_field('format');
292 $field->set_attributes(XMLDB_TYPE_INTEGER, '4', XMLDB_UNSIGNED, null, null, null, null, '0', null);
3b120e46 293 $dbman->rename_field($table, $field, 'fullmessageformat');
294
295 /// new message fields
f65b2dae 296 $field = new xmldb_field('subject');
297 $field->set_attributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, null);
3b120e46 298 $dbman->add_field($table, $field);
f65b2dae 299 $field = new xmldb_field('fullmessagehtml');
300 $field->set_attributes(XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null, null);
3b120e46 301 $dbman->add_field($table, $field);
f65b2dae 302 $field = new xmldb_field('smallmessage');
303 $field->set_attributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, null);
3b120e46 304 $dbman->add_field($table, $field);
305
306
f65b2dae 307 $table = new xmldb_table('message_read');
308 $field = new xmldb_field('messagetype');
3b120e46 309 $dbman->drop_field($table, $field);
f65b2dae 310 $field = new xmldb_field('mailed');
3b120e46 311 $dbman->drop_field($table, $field);
312
313 /// fields to rename
f65b2dae 314 $field = new xmldb_field('message');
315 $field->set_attributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, null);
3b120e46 316 $dbman->rename_field($table, $field, 'fullmessage');
f65b2dae 317 $field = new xmldb_field('format');
318 $field->set_attributes(XMLDB_TYPE_INTEGER, '4', XMLDB_UNSIGNED, null, null, null, null, '0', null);
3b120e46 319 $dbman->rename_field($table, $field, 'fullmessageformat');
320
321
322 /// new message fields
f65b2dae 323 $field = new xmldb_field('subject');
324 $field->set_attributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, null);
3b120e46 325 $dbman->add_field($table, $field);
f65b2dae 326 $field = new xmldb_field('fullmessagehtml');
327 $field->set_attributes(XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null, null);
3b120e46 328 $dbman->add_field($table, $field);
f65b2dae 329 $field = new xmldb_field('smallmessage');
330 $field->set_attributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, null);
3b120e46 331 $dbman->add_field($table, $field);
332
333 /// new table
f65b2dae 334 $table = new xmldb_table('message_working');
335 $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
336 $table->add_field('unreadmessageid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
337 $table->add_field('processorid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
338 $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
3b120e46 339 $dbman->create_table($table);
340
341
342 upgrade_main_savepoint($result, 2008072400);
343 }
344
4e781c7b 345 if ($result && $oldversion < 2008072800) {
346
347 /// Define field enablecompletion to be added to course
348 $table = new xmldb_table('course');
349 $field = new xmldb_field('enablecompletion');
350 $field->set_attributes(XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'defaultrole');
351
352 /// Launch add field enablecompletion
775f811a 353 if (!$dbman->field_exists($table,$field)) {
4e781c7b 354 $dbman->add_field($table, $field);
355 }
775f811a 356
4e781c7b 357 /// Define field completion to be added to course_modules
358 $table = new xmldb_table('course_modules');
359 $field = new xmldb_field('completion');
360 $field->set_attributes(XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'groupmembersonly');
361
362 /// Launch add field completion
775f811a 363 if (!$dbman->field_exists($table,$field)) {
4e781c7b 364 $dbman->add_field($table, $field);
365 }
366
367 /// Define field completiongradeitemnumber to be added to course_modules
368 $field = new xmldb_field('completiongradeitemnumber');
369 $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null, 'completion');
370
371 /// Launch add field completiongradeitemnumber
775f811a 372 if (!$dbman->field_exists($table,$field)) {
4e781c7b 373 $dbman->add_field($table, $field);
374 }
375
376 /// Define field completionview to be added to course_modules
377 $field = new xmldb_field('completionview');
378 $field->set_attributes(XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'completiongradeitemnumber');
379
380 /// Launch add field completionview
775f811a 381 if (!$dbman->field_exists($table,$field)) {
4e781c7b 382 $dbman->add_field($table, $field);
383 }
384
385 /// Define field completionexpected to be added to course_modules
386 $field = new xmldb_field('completionexpected');
387 $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'completionview');
388
389 /// Launch add field completionexpected
775f811a 390 if (!$dbman->field_exists($table,$field)) {
4e781c7b 391 $dbman->add_field($table, $field);
392 }
393
394 /// Define table course_modules_completion to be created
395 $table = new xmldb_table('course_modules_completion');
775f811a 396 if (!$dbman->table_exists($table)) {
4e781c7b 397
398 /// Adding fields to table course_modules_completion
1e0c56ea 399 $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
400 $table->add_field('coursemoduleid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
401 $table->add_field('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
402 $table->add_field('completionstate', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
403 $table->add_field('viewed', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, null, null, null, null, null);
404 $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
775f811a 405
4e781c7b 406 /// Adding keys to table course_modules_completion
1e0c56ea 407 $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
775f811a 408
4e781c7b 409 /// Adding indexes to table course_modules_completion
1e0c56ea 410 $table->add_index('coursemoduleid', XMLDB_INDEX_NOTUNIQUE, array('coursemoduleid'));
411 $table->add_index('userid', XMLDB_INDEX_NOTUNIQUE, array('userid'));
775f811a 412
4e781c7b 413 /// Launch create table for course_modules_completion
414 $dbman->create_table($table);
415 }
416
417 /// Main savepoint reached
418 upgrade_main_savepoint($result, 2008072800);
419 }
775f811a 420
4ab16a09 421 if ($result && $oldversion < 2008073000) {
ac5efef6 422
4ab16a09 423 /// Define table portfolio_log to be created
424 $table = new xmldb_table('portfolio_log');
425
426 /// Adding fields to table portfolio_log
427 $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
428 $table->add_field('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
429 $table->add_field('time', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
430 $table->add_field('portfolio', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
431 $table->add_field('caller_class', XMLDB_TYPE_CHAR, '150', null, XMLDB_NOTNULL, null, null, null, null);
432 $table->add_field('caller_file', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
433 $table->add_field('caller_sha1', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
434
435 /// Adding keys to table portfolio_log
436 $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
437 $table->add_key('userfk', XMLDB_KEY_FOREIGN, array('userid'), 'user', array('id'));
438 $table->add_key('portfoliofk', XMLDB_KEY_FOREIGN, array('portfolio'), 'portfolio_instance', array('id'));
439
440 /// Conditionally launch create table for portfolio_log
441 if (!$dbman->table_exists($table)) {
442 $dbman->create_table($table);
443 }
444
445 /// Main savepoint reached
446 upgrade_main_savepoint($result, 2008073000);
447 }
120b3758 448
449 if ($result && $oldversion < 2008073104) {
450 /// Drop old table that might exist for some people
451 $table = new xmldb_table('message_providers');
452 if ($dbman->table_exists($table)) {
453 $dbman->drop_table($table);
454 }
455
456 /// Define table message_providers to be created
457 $table = new xmldb_table('message_providers');
458
459 /// Adding fields to table message_providers
460 $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
461 $table->add_field('name', XMLDB_TYPE_CHAR, '100', null, XMLDB_NOTNULL, null, null, null, null);
462 $table->add_field('component', XMLDB_TYPE_CHAR, '200', null, XMLDB_NOTNULL, null, null, null, null);
463 $table->add_field('capability', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null);
464
465 /// Adding keys to table message_providers
466 $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
467
468 /// Adding indexes to table message_providers
469 $table->add_index('componentname', XMLDB_INDEX_UNIQUE, array('component', 'name'));
470
471 /// Create table for message_providers
472 $dbman->create_table($table);
473
474 upgrade_main_savepoint($result, 2008073104);
475 }
172dd12c 476
477 if ($result && $oldversion < 2008073111) {
478 /// Define table files to be created
479 $table = new xmldb_table('files');
480
481 /// Adding fields to table files
482 $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
483 $table->add_field('contenthash', XMLDB_TYPE_CHAR, '40', null, XMLDB_NOTNULL, null, null, null, null);
484 $table->add_field('pathnamehash', XMLDB_TYPE_CHAR, '40', null, XMLDB_NOTNULL, null, null, null, null);
485 $table->add_field('contextid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
486 $table->add_field('filearea', XMLDB_TYPE_CHAR, '50', null, XMLDB_NOTNULL, null, null, null, null);
487 $table->add_field('itemid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
488 $table->add_field('filepath', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
489 $table->add_field('filename', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
490 $table->add_field('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
491 $table->add_field('filesize', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
492 $table->add_field('mimetype', XMLDB_TYPE_CHAR, '100', null, null, null, null, null, null);
493 $table->add_field('status', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
494 $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
495 $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
496
497 /// Adding keys to table files
498 $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
499 $table->add_key('contextid', XMLDB_KEY_FOREIGN, array('contextid'), 'context', array('id'));
500 $table->add_key('userid', XMLDB_KEY_FOREIGN, array('userid'), 'user', array('id'));
501
502 /// Adding indexes to table files
503 $table->add_index('filearea-contextid-itemid', XMLDB_INDEX_NOTUNIQUE, array('filearea', 'contextid', 'itemid'));
504 $table->add_index('contenthash', XMLDB_INDEX_NOTUNIQUE, array('contenthash'));
505 $table->add_index('pathnamehash', XMLDB_INDEX_UNIQUE, array('pathnamehash'));
506
507 /// Conditionally launch create table for files
508 $dbman->create_table($table);
509
510 /// Main savepoint reached
511 upgrade_main_savepoint($result, 2008073111);
512 }
513
514 if ($result && $oldversion < 2008073112) {
515 /// Define table files_cleanup to be created
516 $table = new xmldb_table('files_cleanup');
517
518 /// Adding fields to table files_cleanup
519 $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
520 $table->add_field('contenthash', XMLDB_TYPE_CHAR, '40', null, XMLDB_NOTNULL, null, null, null, null);
521
522 /// Adding keys to table files_cleanup
523 $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
524
525 /// Adding indexes to table files_cleanup
526 $table->add_index('contenthash', XMLDB_INDEX_UNIQUE, array('contenthash'));
527
528 /// Conditionally launch create table for files_cleanup
529 $dbman->create_table($table);
530
531 /// Main savepoint reached
532 upgrade_main_savepoint($result, 2008073112);
533 }
534
535 if ($result && $oldversion < 2008073113) {
536 /// move all course, backup and other files to new filepool based storage
537 upgrade_migrate_files_courses();
538 /// Main savepoint reached
539 upgrade_main_savepoint($result, 2008073113);
540 }
541
542 if ($result && $oldversion < 2008073114) {
543 /// move all course, backup and other files to new filepool based storage
544 upgrade_migrate_files_blog();
545 /// Main savepoint reached
546 upgrade_main_savepoint($result, 2008073114);
547 }
f33e1ed4 548
1ce2da58 549 if ($result && $oldversion < 2008080400) {
550 // Add field ssl_jump_url to mnet application, and populate existing default applications
551 $table = new xmldb_table('mnet_application');
552 $field = new xmldb_field('sso_jump_url');
553 if (!$dbman->field_exists($table, $field)) {
554 $field->set_attributes(XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
c5a04d12 555 $dbman->add_field($table, $field);
556 $result = $DB->set_field('mnet_application', 'sso_jump_url', '/auth/mnet/jump.php', array('name' => 'moodle'));
1ce2da58 557 $result = $result && $DB->set_field('mnet_application', 'sso_jump_url', '/auth/xmlrpc/jump.php', array('name' => 'mahara'));
558 }
559
560 /// Main savepoint reached
561 upgrade_main_savepoint($result, 2008080400);
562 }
04f35360 563
564 if ($result && $oldversion < 2008080500) {
565
566 /// Define table portfolio_tempdata to be created
567 $table = new xmldb_table('portfolio_tempdata');
568
569 /// Adding fields to table portfolio_tempdata
570 $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
571 $table->add_field('data', XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null);
572
573 /// Adding keys to table portfolio_tempdata
574 $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
575
576 /// Conditionally launch create table for portfolio_tempdata
577 if (!$dbman->table_exists($table)) {
578 $dbman->create_table($table);
579 }
580
581 /// Main savepoint reached
582 upgrade_main_savepoint($result, 2008080500);
583 }
584
84a44985 585 if ($result && $oldversion < 2008080600) {
586
587 $DB->delete_records('portfolio_tempdata'); // there shouldnt' be any, and it will cause problems with this upgrade.
588 /// Define field expirytime to be added to portfolio_tempdata
589 $table = new xmldb_table('portfolio_tempdata');
590 $field = new xmldb_field('expirytime', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null, 'data');
591
592 /// Conditionally launch add field expirytime
593 if (!$dbman->field_exists($table, $field)) {
594 $dbman->add_field($table, $field);
595 }
596
597 /// Main savepoint reached
598 upgrade_main_savepoint($result, 2008080600);
599 }
775f811a 600
348c350b 601 if ($result && $oldversion < 2008080701) {
602
603 /// Define field visible to be added to repository
604 $table = new xmldb_table('repository');
605 $field = new xmldb_field('visible', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, null, null, null, null, '1', 'timemodified');
606
607 /// Conditionally launch add field visible
608 if (!$dbman->field_exists($table, $field)) {
609 $dbman->add_field($table, $field);
610 }
611
612 /// Main savepoint reached
613 upgrade_main_savepoint($result, 2008080701);
614 }
04f35360 615
f9a2cf86 616/// Changing the type of all the columns that the question bank uses to store grades to be NUMBER(12, 7).
617 if ($result && $oldversion < 2008081500) {
618 $table = new xmldb_table('question');
619 $field = new xmldb_field('defaultgrade', XMLDB_TYPE_NUMBER, '12, 7', null, null, null, null, null, null, 'generalfeedback');
620 $dbman->change_field_type($table, $field);
621 upgrade_main_savepoint($result, 2008081500);
622 }
623
624 if ($result && $oldversion < 2008081501) {
625 $table = new xmldb_table('question');
626 $field = new xmldb_field('penalty', XMLDB_TYPE_NUMBER, '12, 7', null, null, null, null, null, null, 'defaultgrade');
627 $dbman->change_field_type($table, $field);
628 upgrade_main_savepoint($result, 2008081501);
629 }
630
631 if ($result && $oldversion < 2008081502) {
632 $table = new xmldb_table('question_answers');
633 $field = new xmldb_field('fraction', XMLDB_TYPE_NUMBER, '12, 7', null, null, null, null, null, null, 'answer');
634 $dbman->change_field_type($table, $field);
635 upgrade_main_savepoint($result, 2008081502);
636 }
637
638 if ($result && $oldversion < 2008081503) {
639 $table = new xmldb_table('question_sessions');
640 $field = new xmldb_field('sumpenalty', XMLDB_TYPE_NUMBER, '12, 7', null, null, null, null, null, null, 'newgraded');
641 $dbman->change_field_type($table, $field);
642 upgrade_main_savepoint($result, 2008081503);
643 }
644
645 if ($result && $oldversion < 2008081504) {
646 $table = new xmldb_table('question_states');
647 $field = new xmldb_field('grade', XMLDB_TYPE_NUMBER, '12, 7', null, null, null, null, null, null, 'event');
648 $dbman->change_field_type($table, $field);
649 upgrade_main_savepoint($result, 2008081504);
650 }
651
652 if ($result && $oldversion < 2008081505) {
653 $table = new xmldb_table('question_states');
654 $field = new xmldb_field('raw_grade', XMLDB_TYPE_NUMBER, '12, 7', null, null, null, null, null, null, 'grade');
655 $dbman->change_field_type($table, $field);
656 upgrade_main_savepoint($result, 2008081505);
657 }
658
659 if ($result && $oldversion < 2008081506) {
660 $table = new xmldb_table('question_states');
661 $field = new xmldb_field('penalty', XMLDB_TYPE_NUMBER, '12, 7', null, null, null, null, null, null, 'raw_grade');
662 $dbman->change_field_type($table, $field);
663 upgrade_main_savepoint($result, 2008081506);
664 }
665
775f811a 666 if ($result && $oldversion < 2008081600) {
667
668 /// all 1.9 sites and fresh installs must already be unicode, not needed anymore
669 unset_config('unicodedb');
670
671 /// Main savepoint reached
672 upgrade_main_savepoint($result, 2008081600);
673 }
674
ac9b0805 675 return $result;
4e423cbf 676}
271e6dec 677
678
4e423cbf 679?>