| [ Index ] |
PHP Cross Reference of Moodle 1.9.3 [Build 15-Oct-2008] |
[Summary view] [Print] [Text view]
1 <?PHP //$Id: upgrade.php,v 1.154.2.42 2008/10/13 21:45:24 stronk7 Exp $ 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, 17 // using the functions defined in lib/ddllib.php 18 19 20 function xmldb_main_upgrade($oldversion=0) { 21 22 global $CFG, $THEME, $USER, $db; 23 24 $result = true; 25 26 if ($result && $oldversion < 2006100401) { 27 /// Only for those tracking Moodle 1.7 dev, others will have these dropped in moodle_install_roles() 28 if (!empty($CFG->rolesactive)) { 29 drop_table(new XMLDBTable('user_students')); 30 drop_table(new XMLDBTable('user_teachers')); 31 drop_table(new XMLDBTable('user_coursecreators')); 32 drop_table(new XMLDBTable('user_admins')); 33 } 34 35 upgrade_main_savepoint($result, 2006100401); 36 } 37 38 if ($result && $oldversion < 2006100601) { /// Disable the exercise module because it's unmaintained 39 if ($module = get_record('modules', 'name', 'exercise')) { 40 if ($module->visible) { 41 // Hide/disable the module entry 42 set_field('modules', 'visible', '0', 'id', $module->id); 43 // Save existing visible state for all activities 44 set_field('course_modules', 'visibleold', '1', 'visible' ,'1', 'module', $module->id); 45 set_field('course_modules', 'visibleold', '0', 'visible' ,'0', 'module', $module->id); 46 // Hide all activities 47 set_field('course_modules', 'visible', '0', 'module', $module->id); 48 49 //require_once($CFG->dirroot.'/course/lib.php'); 50 //rebuild_course_cache(); // Rebuld cache for all modules because they might have changed 51 } 52 } 53 54 upgrade_main_savepoint($result, 2006100601); 55 } 56 57 if ($result && $oldversion < 2006101001) { /// Disable the LAMS module by default (if it is installed) 58 if (count_records('modules', 'name', 'lams') && !count_records('lams')) { 59 set_field('modules', 'visible', 0, 'name', 'lams'); // Disable it by default 60 } 61 62 upgrade_main_savepoint($result, 2006101001); 63 } 64 65 if ($result && $oldversion < 2006102600) { 66 67 /// Define fields to be added to user_info_field 68 $table = new XMLDBTable('user_info_field'); 69 $field = new XMLDBField('description'); 70 $field->setAttributes(XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null, 'categoryid'); 71 $field1 = new XMLDBField('param1'); 72 $field1->setAttributes(XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null, 'defaultdata'); 73 $field2 = new XMLDBField('param2'); 74 $field2->setAttributes(XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null, 'param1'); 75 $field3 = new XMLDBField('param3'); 76 $field3->setAttributes(XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null, 'param2'); 77 $field4 = new XMLDBField('param4'); 78 $field4->setAttributes(XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null, 'param3'); 79 $field5 = new XMLDBField('param5'); 80 $field5->setAttributes(XMLDB_TYPE_TEXT, 'big', null, null, null, null, null, null, 'param4'); 81 82 /// Launch add fields 83 $result = $result && add_field($table, $field); 84 $result = $result && add_field($table, $field1); 85 $result = $result && add_field($table, $field2); 86 $result = $result && add_field($table, $field3); 87 $result = $result && add_field($table, $field4); 88 $result = $result && add_field($table, $field5); 89 90 upgrade_main_savepoint($result, 2006102600); 91 } 92 93 if ($result && $oldversion < 2006112000) { 94 95 /// Define field attachment to be added to post 96 $table = new XMLDBTable('post'); 97 $field = new XMLDBField('attachment'); 98 $field->setAttributes(XMLDB_TYPE_CHAR, '100', null, null, null, null, null, null, 'format'); 99 100 /// Launch add field attachment 101 $result = $result && add_field($table, $field); 102 103 upgrade_main_savepoint($result, 2006112000); 104 } 105 106 if ($result && $oldversion < 2006112200) { 107 108 /// Define field imagealt to be added to user 109 $table = new XMLDBTable('user'); 110 $field = new XMLDBField('imagealt'); 111 $field->setAttributes(XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null, 'trustbitmask'); 112 113 /// Launch add field imagealt 114 $result = $result && add_field($table, $field); 115 116 $table = new XMLDBTable('user'); 117 $field = new XMLDBField('screenreader'); 118 $field->setAttributes(XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, null, null, '0', 'imagealt'); 119 120 /// Launch add field screenreader 121 $result = $result && add_field($table, $field); 122 123 upgrade_main_savepoint($result, 2006112200); 124 } 125 126 if ($result && $oldversion < 2006120300) { /// Delete guest course section settings 127 // following code can be executed repeatedly, such as when upgrading from 1.7.x - it is ok 128 if ($guest = get_record('user', 'username', 'guest')) { 129 execute_sql("DELETE FROM {$CFG->prefix}course_display where userid=$guest->id", true); 130 } 131 132 upgrade_main_savepoint($result, 2006120300); 133 } 134 135 if ($result && $oldversion < 2006120400) { /// Remove secureforms config setting 136 execute_sql("DELETE FROM {$CFG->prefix}config where name='secureforms'", true); 137 138 upgrade_main_savepoint($result, 2006120400); 139 } 140 141 if (!empty($CFG->rolesactive) && $oldversion < 2006120700) { // add moodle/user:viewdetails to all roles! 142 // note: use of assign_capability() is discouraged in upgrade script! 143 if ($roles = get_records('role')) { 144 $context = get_context_instance(CONTEXT_SYSTEM); 145 foreach ($roles as $roleid=>$role) { 146 assign_capability('moodle/user:viewdetails', CAP_ALLOW, $roleid, $context->id); 147 } 148 } 149 150 upgrade_main_savepoint($result, 2006120700); 151 } 152 153 // Move the auth plugin settings into the config_plugin table 154 if ($result && $oldversion < 2007010300) { 155 if ($CFG->auth == 'email') { 156 set_config('registerauth', 'email'); 157 } else { 158 set_config('registerauth', ''); 159 } 160 $authplugins = get_list_of_plugins('auth'); 161 foreach ($CFG as $k => $v) { 162 if (strpos($k, 'ldap_') === 0) { 163 //upgrade nonstandard ldap settings 164 $setting = substr($k, 5); 165 if (set_config($setting, $v, "auth/ldap")) { 166 delete_records('config', 'name', $k); 167 unset($CFG->{$k}); 168 } 169 continue; 170 } 171 if (strpos($k, 'auth_') !== 0) { 172 continue; 173 } 174 $authsetting = substr($k, 5); 175 foreach ($authplugins as $auth) { 176 if (strpos($authsetting, $auth) !== 0) { 177 continue; 178 } 179 $setting = substr($authsetting, strlen($auth)); 180 if (set_config($setting, $v, "auth/$auth")) { 181 delete_records('config', 'name', $k); 182 unset($CFG->{$k}); 183 } 184 break; // don't check the rest of the auth plugin names 185 } 186 } 187 188 upgrade_main_savepoint($result, 2007010300); 189 } 190 191 if ($result && $oldversion < 2007010301) { 192 // 193 // Core MNET tables 194 // 195 $table = new XMLDBTable('mnet_host'); 196 $table->comment = 'Information about the local and remote hosts for RPC'; 197 // fields 198 $f = $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', false, 199 XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 200 $f->comment = 'Unique Host ID'; 201 $f = $table->addFieldInfo('deleted', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, 202 XMLDB_NOTNULL, null, null, null, 0); 203 $f = $table->addFieldInfo('wwwroot', XMLDB_TYPE_CHAR, '255', null, 204 XMLDB_NOTNULL, null, null, null, null); 205 $f = $table->addFieldInfo('ip_address', XMLDB_TYPE_CHAR, '39', null, 206 XMLDB_NOTNULL, null, null, null, null); 207 $f = $table->addFieldInfo('name', XMLDB_TYPE_CHAR, '80', null, 208 XMLDB_NOTNULL, null, null, null, null); 209 $f = $table->addFieldInfo('public_key', XMLDB_TYPE_TEXT, 'medium', null, 210 XMLDB_NOTNULL, null, null, null, null); 211 $f = $table->addFieldInfo('public_key_expires', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 212 XMLDB_NOTNULL, null, null, null, 0); 213 $f = $table->addFieldInfo('transport', XMLDB_TYPE_INTEGER, '2', XMLDB_UNSIGNED, 214 XMLDB_NOTNULL, null, null, null, 0); 215 $f = $table->addFieldInfo('portno', XMLDB_TYPE_INTEGER, '2', XMLDB_UNSIGNED, 216 XMLDB_NOTNULL, null, null, null, 0); 217 $f = $table->addFieldInfo('last_connect_time', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 218 XMLDB_NOTNULL, null, null, null, 0); 219 $f = $table->addFieldInfo('last_log_id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 220 XMLDB_NOTNULL, null, null, null, 0); 221 // PK and indexes 222 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 223 // Create the table 224 $result = $result && create_table($table); 225 226 $table = new XMLDBTable('mnet_host2service'); 227 $table->comment = 'Information about the services for a given host'; 228 // fields 229 $f = $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', false, 230 XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 231 $f = $table->addFieldInfo('hostid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 232 XMLDB_NOTNULL, NULL, null, null, 0); 233 $f = $table->addFieldInfo('serviceid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 234 XMLDB_NOTNULL, NULL, null, null, 0); 235 $f = $table->addFieldInfo('publish', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, 236 XMLDB_NOTNULL, NULL, null, null, 0); 237 $f = $table->addFieldInfo('subscribe', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, 238 XMLDB_NOTNULL, NULL, null, null, 0); 239 // PK and indexes 240 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 241 $table->addIndexInfo('hostid_serviceid', XMLDB_INDEX_UNIQUE, array('hostid', 'serviceid')); 242 // Create the table 243 $result = $result && create_table($table); 244 245 $table = new XMLDBTable('mnet_log'); 246 $table->comment = 'Store session data from users migrating to other sites'; 247 // fields 248 $f = $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', false, 249 XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 250 $f = $table->addFieldInfo('hostid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 251 XMLDB_NOTNULL, NULL, null, null, 0); 252 $f = $table->addFieldInfo('remoteid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 253 XMLDB_NOTNULL, NULL, null, null, 0); 254 $f = $table->addFieldInfo('time', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 255 XMLDB_NOTNULL, NULL, null, null, 0); 256 $f = $table->addFieldInfo('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 257 XMLDB_NOTNULL, NULL, null, null, 0); 258 $f = $table->addFieldInfo('ip', XMLDB_TYPE_CHAR, '15', null, 259 XMLDB_NOTNULL, NULL, null, null, null); 260 $f = $table->addFieldInfo('course', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 261 XMLDB_NOTNULL, NULL, null, null, 0); 262 $f = $table->addFieldInfo('coursename', XMLDB_TYPE_CHAR, '40', null, 263 XMLDB_NOTNULL, NULL, null, null, null); 264 $f = $table->addFieldInfo('module', XMLDB_TYPE_CHAR, '20', null, 265 XMLDB_NOTNULL, NULL, null, null, null); 266 $f = $table->addFieldInfo('cmid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 267 XMLDB_NOTNULL, NULL, null, null, 0); 268 $f = $table->addFieldInfo('action', XMLDB_TYPE_CHAR, '40', null, 269 XMLDB_NOTNULL, NULL, null, null, null); 270 $f = $table->addFieldInfo('url', XMLDB_TYPE_CHAR, '100', null, 271 XMLDB_NOTNULL, NULL, null, null, null); 272 $f = $table->addFieldInfo('info', XMLDB_TYPE_CHAR, '255', null, 273 XMLDB_NOTNULL, NULL, null, null, null); 274 // PK and indexes 275 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 276 $table->addIndexInfo('host_user_course', XMLDB_INDEX_NOTUNIQUE, array('hostid', 'userid', 'course')); 277 // Create the table 278 $result = $result && create_table($table); 279 280 281 $table = new XMLDBTable('mnet_rpc'); 282 $table->comment = 'Functions or methods that we may publish or subscribe to'; 283 // fields 284 $f = $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', false, 285 XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 286 $f = $table->addFieldInfo('function_name', XMLDB_TYPE_CHAR, '40', null, 287 XMLDB_NOTNULL, NULL, null, null, null); 288 $f = $table->addFieldInfo('xmlrpc_path', XMLDB_TYPE_CHAR, '80', null, 289 XMLDB_NOTNULL, NULL, null, null, null); 290 $f = $table->addFieldInfo('parent_type', XMLDB_TYPE_CHAR, '6', null, 291 XMLDB_NOTNULL, NULL, null, null, null); 292 $f = $table->addFieldInfo('parent', XMLDB_TYPE_CHAR, '20', null, 293 XMLDB_NOTNULL, NULL, null, null, null); 294 $f = $table->addFieldInfo('enabled', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, 295 XMLDB_NOTNULL, NULL, null, null, 0); 296 $f = $table->addFieldInfo('help', XMLDB_TYPE_TEXT, 'medium', null, 297 XMLDB_NOTNULL, NULL, null, null, null); 298 $f = $table->addFieldInfo('profile', XMLDB_TYPE_TEXT, 'medium', null, 299 XMLDB_NOTNULL, NULL, null, null, null); 300 // PK and indexes 301 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 302 $table->addIndexInfo('enabled_xpath', XMLDB_INDEX_NOTUNIQUE, array('enabled', 'xmlrpc_path')); 303 // Create the table 304 $result = $result && create_table($table); 305 306 $table = new XMLDBTable('mnet_service'); 307 $table->comment = 'A service is a group of functions'; 308 // fields 309 $f = $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', false, 310 XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 311 $f = $table->addFieldInfo('name', XMLDB_TYPE_CHAR, '40', null, 312 XMLDB_NOTNULL, NULL, null, null, null); 313 $f = $table->addFieldInfo('description', XMLDB_TYPE_CHAR, '40', null, 314 XMLDB_NOTNULL, NULL, null, null, null); 315 $f = $table->addFieldInfo('apiversion', XMLDB_TYPE_CHAR, '10', null, 316 XMLDB_NOTNULL, NULL, null, null, null); 317 $f = $table->addFieldInfo('offer', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, 318 XMLDB_NOTNULL, NULL, null, null, 0); 319 // PK and indexes 320 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 321 // Create the table 322 $result = $result && create_table($table); 323 324 $table = new XMLDBTable('mnet_service2rpc'); 325 $table->comment = 'Group functions or methods under a service'; 326 // fields 327 $f = $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', false, 328 XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 329 $f = $table->addFieldInfo('serviceid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 330 XMLDB_NOTNULL, NULL, null, null, 0); 331 $f = $table->addFieldInfo('rpcid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 332 XMLDB_NOTNULL, NULL, null, null, 0); 333 // PK and indexes 334 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 335 $table->addIndexInfo('unique', XMLDB_INDEX_UNIQUE, array('rpcid', 'serviceid')); 336 // Create the table 337 $result = $result && create_table($table); 338 339 // 340 // Prime MNET configuration entries -- will be needed later by auth/mnet 341 // 342 include_once $CFG->dirroot . '/mnet/lib.php'; 343 $env = new mnet_environment(); 344 $env->init(); 345 unset($env); 346 347 // add mnethostid to user- 348 $table = new XMLDBTable('user'); 349 $field = new XMLDBField('mnethostid'); 350 $field->setType(XMLDB_TYPE_INTEGER); 351 $field->setLength(10); 352 $field->setNotNull(true); 353 $field->setSequence(null); 354 $field->setEnum(null); 355 $field->setDefault('0'); 356 $field->setPrevious("deleted"); 357 $field->setNext("username"); 358 $result = $result && add_field($table, $field); 359 360 // The default mnethostid is zero... we need to update this for all 361 // users of the local IdP service. 362 set_field('user', 363 'mnethostid', $CFG->mnet_localhost_id, 364 'mnethostid', '0'); 365 366 367 $index = new XMLDBIndex('username'); 368 $index->setUnique(true); 369 $index->setFields(array('username')); 370 drop_index($table, $index); 371 $index->setFields(array('mnethostid', 'username')); 372 if (!add_index($table, $index)) { 373 notify(get_string('duplicate_usernames', 'mnet', 'http://docs.moodle.org/en/DuplicateUsernames')); 374 } 375 376 unset($table, $field, $index); 377 378 /** 379 ** auth/mnet tables 380 **/ 381 $table = new XMLDBTable('mnet_session'); 382 $table->comment='Store session data from users migrating to other sites'; 383 // fields 384 $f = $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', false, 385 XMLDB_NOTNULL,XMLDB_SEQUENCE, null, null, null); 386 $f = $table->addFieldInfo('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 387 XMLDB_NOTNULL, NULL, null, null, 0); 388 $f = $table->addFieldInfo('username', XMLDB_TYPE_CHAR, '100', null, 389 XMLDB_NOTNULL, NULL, null, null, null); 390 $f = $table->addFieldInfo('token', XMLDB_TYPE_CHAR, '40', null, 391 XMLDB_NOTNULL, NULL, null, null, null); 392 $f = $table->addFieldInfo('mnethostid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 393 XMLDB_NOTNULL, NULL, null, null, 0); 394 $f = $table->addFieldInfo('useragent', XMLDB_TYPE_CHAR, '40', null, 395 XMLDB_NOTNULL, NULL, null, null, null); 396 $f = $table->addFieldInfo('confirm_timeout', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 397 XMLDB_NOTNULL, NULL, null, null, 0); 398 $f = $table->addFieldInfo('session_id', XMLDB_TYPE_CHAR, '40', null, 399 XMLDB_NOTNULL, NULL, null, null, null); 400 $f = $table->addFieldInfo('expires', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 401 XMLDB_NOTNULL, NULL, null, null, 0); 402 // PK and indexes 403 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 404 $table->addIndexInfo('token', XMLDB_INDEX_UNIQUE, array('token')); 405 // Create the table 406 $result = $result && create_table($table); 407 408 409 $table = new XMLDBTable('mnet_sso_access_control'); 410 $table->comment = 'Users by host permitted (or not) to login from a remote provider'; 411 $f = $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', false, 412 XMLDB_NOTNULL,XMLDB_SEQUENCE, null, null, null); 413 $f = $table->addFieldInfo('username', XMLDB_TYPE_CHAR, '100', null, 414 XMLDB_NOTNULL, NULL, null, null, null); 415 $f = $table->addFieldInfo('mnet_host_id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 416 XMLDB_NOTNULL, NULL, null, null, 0); 417 $f = $table->addFieldInfo('access', XMLDB_TYPE_CHAR, '20', null, 418 XMLDB_NOTNULL, NULL, null, null, 'allow'); 419 // PK and indexes 420 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 421 $table->addIndexInfo('mnethostid_username', XMLDB_INDEX_UNIQUE, array('mnet_host_id', 'username')); 422 // Create the table 423 $result = $result && create_table($table); 424 425 if (empty($USER->mnet_host_id)) { 426 $USER->mnet_host_id = $CFG->mnet_localhost_id; // Something for the current user to prevent warnings 427 } 428 429 /** 430 ** enrol/mnet tables 431 **/ 432 $table = new XMLDBTable('mnet_enrol_course'); 433 $table->comment = 'Information about courses on remote hosts'; 434 $f = $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', false, 435 XMLDB_NOTNULL,XMLDB_SEQUENCE, null, null, null); 436 $f = $table->addFieldInfo('hostid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 437 XMLDB_NOTNULL, NULL, null, null, 0); 438 $f = $table->addFieldInfo('remoteid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 439 XMLDB_NOTNULL, NULL, null, null, 0); 440 $f = $table->addFieldInfo('cat_id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 441 XMLDB_NOTNULL, NULL, null, null, 0); 442 $f = $table->addFieldInfo('cat_name', XMLDB_TYPE_CHAR, '255', null, 443 XMLDB_NOTNULL, NULL, null, null, null); 444 $f = $table->addFieldInfo('cat_description', XMLDB_TYPE_TEXT, 'medium', null, 445 XMLDB_NOTNULL, NULL, null, null, null); 446 $f = $table->addFieldInfo('sortorder', XMLDB_TYPE_INTEGER, '4', XMLDB_UNSIGNED, 447 XMLDB_NOTNULL, NULL, null, null, 0); 448 $f = $table->addFieldInfo('fullname', XMLDB_TYPE_CHAR, '254', null, 449 XMLDB_NOTNULL, NULL, null, null, null); 450 $f = $table->addFieldInfo('shortname', XMLDB_TYPE_CHAR, '15', null, 451 XMLDB_NOTNULL, NULL, null, null, null); 452 $f = $table->addFieldInfo('idnumber', XMLDB_TYPE_CHAR, '100', null, 453 XMLDB_NOTNULL, NULL, null, null, null); 454 $f = $table->addFieldInfo('summary', XMLDB_TYPE_TEXT, 'medium', null, 455 XMLDB_NOTNULL, NULL, null, null, null); 456 $f = $table->addFieldInfo('startdate', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 457 XMLDB_NOTNULL, NULL, null, null, 0); 458 $f = $table->addFieldInfo('cost', XMLDB_TYPE_CHAR, '10', null, 459 XMLDB_NOTNULL, NULL, null, null, null); 460 $f = $table->addFieldInfo('currency', XMLDB_TYPE_CHAR, '3', null, 461 XMLDB_NOTNULL, NULL, null, null, null); 462 $f = $table->addFieldInfo('defaultroleid', XMLDB_TYPE_INTEGER, '4', XMLDB_UNSIGNED, 463 XMLDB_NOTNULL, NULL, null, null, 0); 464 $f = $table->addFieldInfo('defaultrolename', XMLDB_TYPE_CHAR, '255', null, 465 XMLDB_NOTNULL, NULL, null, null, null); 466 // PK and indexes 467 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 468 $table->addIndexInfo('hostid_remoteid', XMLDB_INDEX_UNIQUE, array('hostid', 'remoteid')); 469 // Create the table 470 $result = $result && create_table($table); 471 472 473 $table = new XMLDBTable('mnet_enrol_assignments'); 474 475 $table->comment = 'Information about enrolments on courses on remote hosts'; 476 $f = $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', false, 477 XMLDB_NOTNULL,XMLDB_SEQUENCE, null, null, null); 478 $f = $table->addFieldInfo('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 479 XMLDB_NOTNULL, NULL, null, null, 0); 480 $f = $table->addFieldInfo('hostid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 481 XMLDB_NOTNULL, NULL, null, null, 0); 482 $f = $table->addFieldInfo('courseid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 483 XMLDB_NOTNULL, NULL, null, null, 0); 484 $f = $table->addFieldInfo('rolename', XMLDB_TYPE_CHAR, '255', null, 485 XMLDB_NOTNULL, NULL, null, null, null); 486 $f = $table->addFieldInfo('enroltime', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, 487 XMLDB_NOTNULL, NULL, null, null, 0); 488 $f = $table->addFieldInfo('enroltype', XMLDB_TYPE_CHAR, '20', null, 489 XMLDB_NOTNULL, NULL, null, null, null); 490 491 // PK and indexes 492 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 493 $table->addIndexInfo('hostid_courseid', XMLDB_INDEX_NOTUNIQUE, array('hostid', 'courseid')); 494 $table->addIndexInfo('userid', XMLDB_INDEX_NOTUNIQUE, array('userid')); 495 // Create the table 496 $result = $result && create_table($table); 497 498 upgrade_main_savepoint($result, 2007010301); 499 } 500 501 if ($result && $oldversion < 2007010404) { 502 503 /// Define field shortname to be added to user_info_field 504 $table = new XMLDBTable('user_info_field'); 505 $field = new XMLDBField('shortname'); 506 $field->setAttributes(XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, 'shortname', 'id'); 507 508 /// Launch add field shortname 509 $result = $result && add_field($table, $field); 510 511 /// Changing type of field name on table user_info_field to text 512 $table = new XMLDBTable('user_info_field'); 513 $field = new XMLDBField('name'); 514 $field->setAttributes(XMLDB_TYPE_TEXT, 'big', null, XMLDB_NOTNULL, null, null, null, null, 'shortname'); 515 516 /// Launch change of type for field name 517 $result = $result && change_field_type($table, $field); 518 519 /// For existing fields use 'name' as the 'shortname' entry 520 if ($fields = get_records_select('user_info_field', '', '', 'id, name')) { 521 foreach ($fields as $field) { 522 $field->shortname = clean_param($field->name, PARAM_ALPHANUM); 523 $result && update_record('user_info_field', $field); 524 } 525 } 526 527 upgrade_main_savepoint($result, 2007010404); 528 } 529 530 if ($result && $oldversion < 2007011501) { 531 if (!empty($CFG->enablerecordcache) && empty($CFG->rcache) && 532 // Note: won't force-load these settings into CFG 533 // we don't need or want cache during the upgrade itself 534 empty($CFG->cachetype) && empty($CFG->intcachemax)) { 535 set_config('cachetype', 'internal'); 536 set_config('rcache', true); 537 set_config('intcachemax', $CFG->enablerecordcache); 538 unset_config('enablerecordcache'); 539 unset($CFG->enablerecordcache); 540 } 541 542 upgrade_main_savepoint($result, 2007011501); 543 } 544 545 if ($result && $oldversion < 2007012100) { 546 /// Some old PG servers have user->firstname & user->lastname with 30cc. They must be 100cc. 547 /// Fixing that conditionally. MDL-7110 548 if ($CFG->dbfamily == 'postgres') { 549 /// Get Metadata from user table 550 $cols = array_change_key_case($db->MetaColumns($CFG->prefix . 'user'), CASE_LOWER); 551 552 /// Process user->firstname if needed 553 if ($col = $cols['firstname']) { 554 if ($col->max_length < 100) { 555 /// Changing precision of field firstname on table user to (100) 556 $table = new XMLDBTable('user'); 557 $field = new XMLDBField('firstname'); 558 $field->setAttributes(XMLDB_TYPE_CHAR, '100', null, XMLDB_NOTNULL, null, null, null, null, 'idnumber'); 559 560 /// Launch change of precision for field firstname 561 $result = $result && change_field_precision($table, $field); 562 } 563 } 564 565 /// Process user->lastname if needed 566 if ($col = $cols['lastname']) { 567 if ($col->max_length < 100) { 568 /// Changing precision of field lastname on table user to (100) 569 $table = new XMLDBTable('user'); 570 $field = new XMLDBField('lastname'); 571 $field->setAttributes(XMLDB_TYPE_CHAR, '100', null, XMLDB_NOTNULL, null, null, null, null, 'firstname'); 572 573 /// Launch change of precision for field lastname 574 $result = $result && change_field_precision($table, $field); 575 } 576 } 577 } 578 579 upgrade_main_savepoint($result, 2007012100); 580 } 581 582 if ($result && $oldversion < 2007012101) { 583 584 /// Changing precision of field lang on table course to (30) 585 $table = new XMLDBTable('course'); 586 $field = new XMLDBField('lang'); 587 $field->setAttributes(XMLDB_TYPE_CHAR, '30', null, XMLDB_NOTNULL, null, null, null, null, 'groupmodeforce'); 588 589 /// Launch change of precision for field course->lang 590 $result = $result && change_field_precision($table, $field); 591 592 /// Changing precision of field lang on table user to (30) 593 $table = new XMLDBTable('user'); 594 $field = new XMLDBField('lang'); 595 $field->setAttributes(XMLDB_TYPE_CHAR, '30', null, XMLDB_NOTNULL, null, null, null, 'en', 'country'); 596 597 /// Launch change of precision for field user->lang 598 $result = $result && change_field_precision($table, $field); 599 600 upgrade_main_savepoint($result, 2007012101); 601 } 602 603 if ($result && $oldversion < 2007012400) { 604 605 /// Rename field access on table mnet_sso_access_control to accessctrl 606 $table = new XMLDBTable('mnet_sso_access_control'); 607 $field = new XMLDBField('access'); 608 $field->setAttributes(XMLDB_TYPE_CHAR, '20', null, XMLDB_NOTNULL, null, null, null, 'allow', 'mnet_host_id'); 609 610 /// Launch rename field accessctrl 611 $result = $result && rename_field($table, $field, 'accessctrl'); 612 613 upgrade_main_savepoint($result, 2007012400); 614 } 615 616 if ($result && $oldversion < 2007012500) { 617 execute_sql("DELETE FROM {$CFG->prefix}user WHERE username='changeme'", true); 618 619 upgrade_main_savepoint($result, 2007012500); 620 } 621 622 if ($result && $oldversion < 2007020400) { 623 /// Only for MySQL and PG, declare the user->ajax field as not null. MDL-8421. 624 if ($CFG->dbfamily == 'mysql' || $CFG->dbfamily == 'postgres') { 625 /// Changing nullability of field ajax on table user to not null 626 $table = new XMLDBTable('user'); 627 $field = new XMLDBField('ajax'); 628 $field->setAttributes(XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '1', 'htmleditor'); 629 630 /// Launch change of nullability for field ajax 631 $result = $result && change_field_notnull($table, $field); 632 } 633 634 upgrade_main_savepoint($result, 2007020400); 635 } 636 637 if (!empty($CFG->rolesactive) && $result && $oldversion < 2007021401) { 638 /// create default logged in user role if not present - upgrade rom 1.7.x 639 if (empty($CFG->defaultuserroleid) or empty($CFG->guestroleid) or $CFG->defaultuserroleid == $CFG->guestroleid) { 640 if (!get_records('role', 'shortname', 'user')) { 641 $userroleid = create_role(addslashes(get_string('authenticateduser')), 'user', 642 addslashes(get_string('authenticateduserdescription')), 'moodle/legacy:user'); 643 if ($userroleid) { 644 reset_role_capabilities($userroleid); 645 set_config('defaultuserroleid', $userroleid); 646 } 647 } 648 } 649 650 upgrade_main_savepoint($result, 2007021401); 651 } 652 653 if ($result && $oldversion < 2007021501) { 654 /// delete removed setting from config 655 unset_config('tabselectedtofront'); 656 657 upgrade_main_savepoint($result, 2007021501); 658 } 659 660 661 if ($result && $oldversion < 2007032200) { 662 663 /// Define table role_sortorder to be created 664 $table = new XMLDBTable('role_sortorder'); 665 666 /// Adding fields to table role_sortorder 667 $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 668 $table->addFieldInfo('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 669 $table->addFieldInfo('roleid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 670 $table->addFieldInfo('contextid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 671 $table->addFieldInfo('sortoder', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, null); 672 673 /// Adding keys to table role_sortorder 674 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 675 $table->addKeyInfo('userid', XMLDB_KEY_FOREIGN, array('userid'), 'user', array('id')); 676 $table->addKeyInfo('roleid', XMLDB_KEY_FOREIGN, array('roleid'), 'role', array('id')); 677 $table->addKeyInfo('contextid', XMLDB_KEY_FOREIGN, array('contextid'), 'context', array('id')); 678 679 /// Adding indexes to table role_sortorder 680 $table->addIndexInfo('userid-roleid-contextid', XMLDB_INDEX_UNIQUE, array('userid', 'roleid', 'contextid')); 681 682 /// Launch create table for role_sortorder 683 $result = $result && create_table($table); 684 685 upgrade_main_savepoint($result, 2007032200); 686 } 687 688 689 /// code to change lenghen tag field to 255, MDL-9095 690 if ($result && $oldversion < 2007040400) { 691 692 /// Define index text (not unique) to be dropped form tags 693 $table = new XMLDBTable('tags'); 694 $index = new XMLDBIndex('text'); 695 $index->setAttributes(XMLDB_INDEX_NOTUNIQUE, array('text')); 696 697 /// Launch drop index text 698 $result = $result && drop_index($table, $index); 699 700 $field = new XMLDBField('text'); 701 $field->setAttributes(XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null, 'userid'); 702 703 /// Launch change of type for field text 704 $result = $result && change_field_type($table, $field); 705 706 $index = new XMLDBIndex('text'); 707 $index->setAttributes(XMLDB_INDEX_NOTUNIQUE, array('text')); 708 709 /// Launch add index text 710 $result = $result && add_index($table, $index); 711 712 upgrade_main_savepoint($result, 2007040400); 713 } 714 715 if ($result && $oldversion < 2007041100) { 716 717 /// Define field idnumber to be added to course_modules 718 $table = new XMLDBTable('course_modules'); 719 $field = new XMLDBField('idnumber'); 720 $field->setAttributes(XMLDB_TYPE_CHAR, '100', null, null, null, null, null, null, 'section'); 721 722 /// Launch add field idnumber 723 $result = $result && add_field($table, $field); 724 725 upgrade_main_savepoint($result, 2007041100); 726 } 727 728 /* Changes to the custom profile menu type - store values rather than indices. 729 We could do all this with one tricky SQL statement but it's a one-off so no 730 harm in using PHP loops */ 731 if ($result && $oldversion < 2007041600) { 732 733 /// Get the menu fields 734 if ($fields = get_records('user_info_field', 'datatype', 'menu')) { 735 foreach ($fields as $field) { 736 737 /// Get user data for the menu field 738 if ($data = get_records('user_info_data', 'fieldid', $field->id)) { 739 740 /// Get the menu options 741 $options = explode("\n", $field->param1); 742 foreach ($data as $d) { 743 $key = array_search($d->data, $options); 744 745 /// If the data is an integer and is not one of the options, 746 /// set the respective option value 747 if (is_int($d->data) and (($key === NULL) or ($key === false)) and isset($options[$d->data])) { 748 $d->data = $options[$d->data]; 749 $result = $result && update_record('user_info_data', $d); 750 } 751 } 752 } 753 } 754 } 755 756 upgrade_main_savepoint($result, 2007041600); 757 } 758 759 /// adding new gradebook tables 760 if ($result && $oldversion < 2007041800) { 761 762 /// Define table events_handlers to be created 763 $table = new XMLDBTable('events_handlers'); 764 765 /// Adding fields to table events_handlers 766 $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 767 $table->addFieldInfo('eventname', XMLDB_TYPE_CHAR, '166', null, XMLDB_NOTNULL, null, null, null, null); 768 $table->addFieldInfo('handlermodule', XMLDB_TYPE_CHAR, '166', null, XMLDB_NOTNULL, null, null, null, null); 769 $table->addFieldInfo('handlerfile', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null); 770 $table->addFieldInfo('handlerfunction', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null); 771 772 /// Adding keys to table events_handlers 773 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 774 775 /// Adding indexes to table events_handlers 776 $table->addIndexInfo('eventname-handlermodule', XMLDB_INDEX_UNIQUE, array('eventname', 'handlermodule')); 777 778 /// Launch create table for events_handlers 779 $result = $result && create_table($table); 780 781 /// Define table events_queue to be created 782 $table = new XMLDBTable('events_queue'); 783 784 /// Adding fields to table events_queue 785 $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 786 $table->addFieldInfo('eventdata', XMLDB_TYPE_TEXT, 'big', null, XMLDB_NOTNULL, null, null, null, null); 787 $table->addFieldInfo('schedule', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null); 788 $table->addFieldInfo('stackdump', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null); 789 $table->addFieldInfo('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 790 $table->addFieldInfo('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 791 792 /// Adding keys to table events_queue 793 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 794 $table->addKeyInfo('userid', XMLDB_KEY_FOREIGN, array('userid'), 'user', array('id')); 795 796 /// Launch create table for events_queue 797 $result = $result && create_table($table); 798 799 /// Define table events_queue_handlers to be created 800 $table = new XMLDBTable('events_queue_handlers'); 801 802 /// Adding fields to table events_queue_handlers 803 $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 804 $table->addFieldInfo('queuedeventid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 805 $table->addFieldInfo('handlerid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 806 $table->addFieldInfo('status', XMLDB_TYPE_INTEGER, '10', null, null, null, null, null, null); 807 $table->addFieldInfo('errormessage', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null); 808 $table->addFieldInfo('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 809 810 /// Adding keys to table events_queue_handlers 811 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 812 $table->addKeyInfo('queuedeventid', XMLDB_KEY_FOREIGN, array('queuedeventid'), 'events_queue', array('id')); 813 $table->addKeyInfo('handlerid', XMLDB_KEY_FOREIGN, array('handlerid'), 'events_handlers', array('id')); 814 815 /// Launch create table for events_queue_handlers 816 $result = $result && create_table($table); 817 818 upgrade_main_savepoint($result, 2007041800); 819 } 820 821 if ($result && $oldversion < 2007043001) { 822 823 /// Define field schedule to be added to events_handlers 824 $table = new XMLDBTable('events_handlers'); 825 $field = new XMLDBField('schedule'); 826 $field->setAttributes(XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null, 'handlerfunction'); 827 828 /// Launch add field schedule 829 $result = $result && add_field($table, $field); 830 831 /// Define field status to be added to events_handlers 832 $table = new XMLDBTable('events_handlers'); 833 $field = new XMLDBField('status'); 834 $field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'schedule'); 835 836 /// Launch add field status 837 $result = $result && add_field($table, $field); 838 839 upgrade_main_savepoint($result, 2007043001); 840 } 841 842 if ($result && $oldversion < 2007050201) { 843 844 /// Define field theme to be added to course_categories 845 $table = new XMLDBTable('course_categories'); 846 $field = new XMLDBField('theme'); 847 $field->setAttributes(XMLDB_TYPE_CHAR, '50', null, null, null, null, null, null, 'path'); 848 849 /// Launch add field theme 850 $result = $result && add_field($table, $field); 851 852 upgrade_main_savepoint($result, 2007050201); 853 } 854 855 if ($result && $oldversion < 2007051100) { 856 857 /// Define field forceunique to be added to user_info_field 858 $table = new XMLDBTable('user_info_field'); 859 $field = new XMLDBField('forceunique'); 860 $field->setAttributes(XMLDB_TYPE_INTEGER, '2', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'visible'); 861 862 /// Launch add field forceunique 863 $result = $result && add_field($table, $field); 864 865 /// Define field signup to be added to user_info_field 866 $table = new XMLDBTable('user_info_field'); 867 $field = new XMLDBField('signup'); 868 $field->setAttributes(XMLDB_TYPE_INTEGER, '2', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'forceunique'); 869 870 /// Launch add field signup 871 $result = $result && add_field($table, $field); 872 873 upgrade_main_savepoint($result, 2007051100); 874 } 875 876 if (!empty($CFG->rolesactive) && $result && $oldversion < 2007051801) { 877 // Get the role id of the "Auth. User" role and check if the default role id is different 878 // note: use of assign_capability() is discouraged in upgrade script! 879 $userrole = get_record( 'role', 'shortname', 'user' ); 880 $defaultroleid = $CFG->defaultuserroleid; 881 882 if( $defaultroleid != $userrole->id ) { 883 // Add in the new moodle/my:manageblocks capibility to the default user role 884 $context = get_context_instance(CONTEXT_SYSTEM); 885 assign_capability('moodle/my:manageblocks',CAP_ALLOW,$defaultroleid,$context->id); 886 } 887 888 upgrade_main_savepoint($result, 2007051801); 889 } 890 891 if ($result && $oldversion < 2007052200) { 892 893 /// Define field schedule to be dropped from events_queue 894 $table = new XMLDBTable('events_queue'); 895 $field = new XMLDBField('schedule'); 896 897 /// Launch drop field stackdump 898 $result = $result && drop_field($table, $field); 899 900 upgrade_main_savepoint($result, 2007052200); 901 } 902 903 if ($result && $oldversion < 2007052300) { 904 require_once($CFG->dirroot . '/question/upgrade.php'); 905 $result = $result && question_remove_rqp_qtype(); 906 907 upgrade_main_savepoint($result, 2007052300); 908 } 909 910 if ($result && $oldversion < 2007060500) { 911 912 /// Define field usermodified to be added to post 913 $table = new XMLDBTable('post'); 914 $field = new XMLDBField('usermodified'); 915 $field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null, 'created'); 916 917 /// Launch add field usermodified 918 $result = $result && add_field($table, $field); 919 920 /// Define key usermodified (foreign) to be added to post 921 $table = new XMLDBTable('post'); 922 $key = new XMLDBKey('usermodified'); 923 $key->setAttributes(XMLDB_KEY_FOREIGN, array('usermodified'), 'user', array('id')); 924 925 /// Launch add key usermodified 926 $result = $result && add_key($table, $key); 927 928 upgrade_main_savepoint($result, 2007060500); 929 } 930 931 if ($result && $oldversion < 2007070603) { 932 // Small update of guest user to be 100% sure it has the correct mnethostid (MDL-10375) 933 set_field('user', 'mnethostid', $CFG->mnet_localhost_id, 'username', 'guest'); 934 935 upgrade_main_savepoint($result, 2007070603); 936 } 937 938 if ($result && $oldversion < 2007071400) { 939 /** 940 ** mnet application table 941 **/ 942 $table = new XMLDBTable('mnet_application'); 943 $table->comment = 'Information about applications on remote hosts'; 944 $f = $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', false, 945 XMLDB_NOTNULL,XMLDB_SEQUENCE, null, null, null); 946 $f = $table->addFieldInfo('name', XMLDB_TYPE_CHAR, '50', null, 947 XMLDB_NOTNULL, NULL, null, null, null); 948 $f = $table->addFieldInfo('display_name', XMLDB_TYPE_CHAR, '50', null, 949 XMLDB_NOTNULL, NULL, null, null, null); 950 $f = $table->addFieldInfo('xmlrpc_server_url', XMLDB_TYPE_CHAR, '255', null, 951 XMLDB_NOTNULL, NULL, null, null, null); 952 $f = $table->addFieldInfo('sso_land_url', XMLDB_TYPE_CHAR, '255', null, 953 XMLDB_NOTNULL, NULL, null, null, null); 954 955 // PK and indexes 956 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 957 // Create the table 958 $result = $result && create_table($table); 959 960 // Insert initial applications (moodle and mahara) 961 $application = new stdClass(); 962 $application->name = 'moodle'; 963 $application->display_name = 'Moodle'; 964 $application->xmlrpc_server_url = '/mnet/xmlrpc/server.php'; 965 $application->sso_land_url = '/auth/mnet/land.php'; 966 if ($result) { 967 $newid = insert_record('mnet_application', $application, false); 968 } 969 970 $application = new stdClass(); 971 $application->name = 'mahara'; 972 $application->display_name = 'Mahara'; 973 $application->xmlrpc_server_url = '/api/xmlrpc/server.php'; 974 $application->sso_land_url = '/auth/xmlrpc/land.php'; 975 $result = $result && insert_record('mnet_application', $application, false); 976 977 // New mnet_host->applicationid field 978 $table = new XMLDBTable('mnet_host'); 979 $field = new XMLDBField('applicationid'); 980 $field->setAttributes(XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, $newid , 'last_log_id'); 981 982 $result = $result && add_field($table, $field); 983 984 /// Define key applicationid (foreign) to be added to mnet_host 985 $table = new XMLDBTable('mnet_host'); 986 $key = new XMLDBKey('applicationid'); 987 $key->setAttributes(XMLDB_KEY_FOREIGN, array('applicationid'), 'mnet_application', array('id')); 988 989 /// Launch add key applicationid 990 $result = $result && add_key($table, $key); 991 992 upgrade_main_savepoint($result, 2007071400); 993 } 994 995 if ($result && $oldversion < 2007071607) { 996 require_once($CFG->dirroot . '/question/upgrade.php'); 997 $result = $result && question_remove_rqp_qtype_config_string(); 998 999 upgrade_main_savepoint($result, 2007071607); 1000 } 1001 1002 if ($result && $oldversion < 2007072200) { 1003 1004 /// Remove all grade tables used in development phases - we need new empty tables for final gradebook upgrade 1005 $tables = array('grade_categories', 1006 'grade_items', 1007 'grade_calculations', 1008 'grade_grades', 1009 'grade_grades_raw', 1010 'grade_grades_final', 1011 'grade_grades_text', 1012 'grade_outcomes', 1013 'grade_outcomes_courses', 1014 'grade_history', 1015 'grade_import_newitem', 1016 'grade_import_values'); 1017 1018 foreach ($tables as $table) { 1019 $table = new XMLDBTable($table); 1020 if (table_exists($table)) { 1021 drop_table($table); 1022 } 1023 } 1024 1025 $tables = array('grade_categories_history', 1026 'grade_items_history', 1027 'grade_grades_history', 1028 'grade_grades_text_history', 1029 'grade_scale_history', 1030 'grade_outcomes_history'); 1031 1032 foreach ($tables as $table) { 1033 $table = new XMLDBTable($table); 1034 if (table_exists($table)) { 1035 drop_table($table); 1036 } 1037 } 1038 1039 1040 /// Define table grade_outcomes to be created 1041 $table = new XMLDBTable('grade_outcomes'); 1042 1043 /// Adding fields to table grade_outcomes 1044 $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 1045 $table->addFieldInfo('courseid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1046 $table->addFieldInfo('shortname', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null); 1047 $table->addFieldInfo('fullname', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, null, null, null); 1048 $table->addFieldInfo('scaleid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1049 $table->addFieldInfo('description', XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null); 1050 $table->addFieldInfo('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1051 $table->addFieldInfo('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1052 $table->addFieldInfo('usermodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1053 1054 /// Adding keys to table grade_outcomes 1055 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 1056 $table->addKeyInfo('courseid', XMLDB_KEY_FOREIGN, array('courseid'), 'course', array('id')); 1057 $table->addKeyInfo('scaleid', XMLDB_KEY_FOREIGN, array('scaleid'), 'scale', array('id')); 1058 $table->addKeyInfo('usermodified', XMLDB_KEY_FOREIGN, array('usermodified'), 'user', array('id')); 1059 1060 /// Launch create table for grade_outcomes 1061 $result = $result && create_table($table); 1062 1063 1064 /// Define table grade_categories to be created 1065 $table = new XMLDBTable('grade_categories'); 1066 1067 /// Adding fields to table grade_categories 1068 $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 1069 $table->addFieldInfo('courseid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 1070 $table->addFieldInfo('parent', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1071 $table->addFieldInfo('depth', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1072 $table->addFieldInfo('path', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null); 1073 $table->addFieldInfo('fullname', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null); 1074 $table->addFieldInfo('aggregation', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1075 $table->addFieldInfo('keephigh', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1076 $table->addFieldInfo('droplow', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1077 $table->addFieldInfo('aggregateonlygraded', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1078 $table->addFieldInfo('aggregateoutcomes', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1079 $table->addFieldInfo('aggregatesubcats', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1080 $table->addFieldInfo('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 1081 $table->addFieldInfo('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 1082 1083 /// Adding keys to table grade_categories 1084 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 1085 $table->addKeyInfo('courseid', XMLDB_KEY_FOREIGN, array('courseid'), 'course', array('id')); 1086 $table->addKeyInfo('parent', XMLDB_KEY_FOREIGN, array('parent'), 'grade_categories', array('id')); 1087 1088 /// Launch create table for grade_categories 1089 $result = $result && create_table($table); 1090 1091 1092 /// Define table grade_items to be created 1093 $table = new XMLDBTable('grade_items'); 1094 1095 /// Adding fields to table grade_items 1096 $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 1097 $table->addFieldInfo('courseid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1098 $table->addFieldInfo('categoryid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1099 $table->addFieldInfo('itemname', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null); 1100 $table->addFieldInfo('itemtype', XMLDB_TYPE_CHAR, '30', null, XMLDB_NOTNULL, null, null, null, null); 1101 $table->addFieldInfo('itemmodule', XMLDB_TYPE_CHAR, '30', null, null, null, null, null, null); 1102 $table->addFieldInfo('iteminstance', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1103 $table->addFieldInfo('itemnumber', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1104 $table->addFieldInfo('iteminfo', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null); 1105 $table->addFieldInfo('idnumber', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null); 1106 $table->addFieldInfo('calculation', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null); 1107 $table->addFieldInfo('gradetype', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, null, null, '1'); 1108 $table->addFieldInfo('grademax', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '100'); 1109 $table->addFieldInfo('grademin', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0'); 1110 $table->addFieldInfo('scaleid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1111 $table->addFieldInfo('outcomeid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1112 $table->addFieldInfo('gradepass', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0'); 1113 $table->addFieldInfo('multfactor', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '1.0'); 1114 $table->addFieldInfo('plusfactor', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0'); 1115 $table->addFieldInfo('aggregationcoef', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0'); 1116 $table->addFieldInfo('sortorder', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1117 $table->addFieldInfo('display', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1118 $table->addFieldInfo('decimals', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, null, null, null, null, null); 1119 $table->addFieldInfo('hidden', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1120 $table->addFieldInfo('locked', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1121 $table->addFieldInfo('locktime', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1122 $table->addFieldInfo('needsupdate', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1123 $table->addFieldInfo('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1124 $table->addFieldInfo('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1125 1126 /// Adding keys to table grade_items 1127 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 1128 $table->addKeyInfo('courseid', XMLDB_KEY_FOREIGN, array('courseid'), 'course', array('id')); 1129 $table->addKeyInfo('categoryid', XMLDB_KEY_FOREIGN, array('categoryid'), 'grade_categories', array('id')); 1130 $table->addKeyInfo('scaleid', XMLDB_KEY_FOREIGN, array('scaleid'), 'scale', array('id')); 1131 $table->addKeyInfo('outcomeid', XMLDB_KEY_FOREIGN, array('outcomeid'), 'grade_outcomes', array('id')); 1132 1133 /// Adding indexes to table grade_grades 1134 $table->addIndexInfo('locked-locktime', XMLDB_INDEX_NOTUNIQUE, array('locked', 'locktime')); 1135 $table->addIndexInfo('itemtype-needsupdate', XMLDB_INDEX_NOTUNIQUE, array('itemtype', 'needsupdate')); 1136 $table->addIndexInfo('gradetype', XMLDB_INDEX_NOTUNIQUE, array('gradetype')); 1137 1138 /// Launch create table for grade_items 1139 $result = $result && create_table($table); 1140 1141 1142 /// Define table grade_grades to be created 1143 $table = new XMLDBTable('grade_grades'); 1144 1145 /// Adding fields to table grade_grades 1146 $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 1147 $table->addFieldInfo('itemid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 1148 $table->addFieldInfo('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 1149 $table->addFieldInfo('rawgrade', XMLDB_TYPE_NUMBER, '10, 5', null, null, null, null, null, null); 1150 $table->addFieldInfo('rawgrademax', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '100'); 1151 $table->addFieldInfo('rawgrademin', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0'); 1152 $table->addFieldInfo('rawscaleid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1153 $table->addFieldInfo('usermodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1154 $table->addFieldInfo('finalgrade', XMLDB_TYPE_NUMBER, '10, 5', null, null, null, null, null, null); 1155 $table->addFieldInfo('hidden', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1156 $table->addFieldInfo('locked', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1157 $table->addFieldInfo('locktime', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1158 $table->addFieldInfo('exported', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1159 $table->addFieldInfo('overridden', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1160 $table->addFieldInfo('excluded', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1161 $table->addFieldInfo('feedback', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null); 1162 $table->addFieldInfo('feedbackformat', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1163 $table->addFieldInfo('information', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null); 1164 $table->addFieldInfo('informationformat', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1165 $table->addFieldInfo('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1166 $table->addFieldInfo('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1167 1168 /// Adding keys to table grade_grades 1169 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 1170 $table->addKeyInfo('itemid', XMLDB_KEY_FOREIGN, array('itemid'), 'grade_items', array('id')); 1171 $table->addKeyInfo('userid', XMLDB_KEY_FOREIGN, array('userid'), 'user', array('id')); 1172 $table->addKeyInfo('rawscaleid', XMLDB_KEY_FOREIGN, array('rawscaleid'), 'scale', array('id')); 1173 $table->addKeyInfo('usermodified', XMLDB_KEY_FOREIGN, array('usermodified'), 'user', array('id')); 1174 1175 /// Adding indexes to table grade_grades 1176 $table->addIndexInfo('locked-locktime', XMLDB_INDEX_NOTUNIQUE, array('locked', 'locktime')); 1177 1178 /// Launch create table for grade_grades 1179 $result = $result && create_table($table); 1180 1181 1182 /// Define table grade_outcomes_history to be created 1183 $table = new XMLDBTable('grade_outcomes_history'); 1184 1185 /// Adding fields to table grade_outcomes_history 1186 $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 1187 $table->addFieldInfo('action', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1188 $table->addFieldInfo('oldid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 1189 $table->addFieldInfo('source', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null); 1190 $table->addFieldInfo('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1191 $table->addFieldInfo('loggeduser', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1192 $table->addFieldInfo('courseid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1193 $table->addFieldInfo('shortname', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null); 1194 $table->addFieldInfo('fullname', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, null, null, null); 1195 $table->addFieldInfo('scaleid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1196 $table->addFieldInfo('description', XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null); 1197 1198 /// Adding keys to table grade_outcomes_history 1199 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 1200 $table->addKeyInfo('oldid', XMLDB_KEY_FOREIGN, array('oldid'), 'grade_outcomes', array('id')); 1201 $table->addKeyInfo('courseid', XMLDB_KEY_FOREIGN, array('courseid'), 'course', array('id')); 1202 $table->addKeyInfo('scaleid', XMLDB_KEY_FOREIGN, array('scaleid'), 'scale', array('id')); 1203 $table->addKeyInfo('loggeduser', XMLDB_KEY_FOREIGN, array('loggeduser'), 'user', array('id')); 1204 1205 /// Adding indexes to table grade_outcomes_history 1206 $table->addIndexInfo('action', XMLDB_INDEX_NOTUNIQUE, array('action')); 1207 1208 /// Launch create table for grade_outcomes_history 1209 $result = $result && create_table($table); 1210 1211 1212 /// Define table grade_categories_history to be created 1213 $table = new XMLDBTable('grade_categories_history'); 1214 1215 /// Adding fields to table grade_categories_history 1216 $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 1217 $table->addFieldInfo('action', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1218 $table->addFieldInfo('oldid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 1219 $table->addFieldInfo('source', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null); 1220 $table->addFieldInfo('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1221 $table->addFieldInfo('loggeduser', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1222 $table->addFieldInfo('courseid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 1223 $table->addFieldInfo('parent', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1224 $table->addFieldInfo('depth', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1225 $table->addFieldInfo('path', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null); 1226 $table->addFieldInfo('fullname', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null); 1227 $table->addFieldInfo('aggregation', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1228 $table->addFieldInfo('keephigh', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1229 $table->addFieldInfo('droplow', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1230 $table->addFieldInfo('aggregateonlygraded', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1231 $table->addFieldInfo('aggregateoutcomes', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1232 $table->addFieldInfo('aggregatesubcats', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1233 1234 /// Adding keys to table grade_categories_history 1235 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 1236 $table->addKeyInfo('oldid', XMLDB_KEY_FOREIGN, array('oldid'), 'grade_categories', array('id')); 1237 $table->addKeyInfo('courseid', XMLDB_KEY_FOREIGN, array('courseid'), 'course', array('id')); 1238 $table->addKeyInfo('parent', XMLDB_KEY_FOREIGN, array('parent'), 'grade_categories', array('id')); 1239 $table->addKeyInfo('loggeduser', XMLDB_KEY_FOREIGN, array('loggeduser'), 'user', array('id')); 1240 1241 /// Adding indexes to table grade_categories_history 1242 $table->addIndexInfo('action', XMLDB_INDEX_NOTUNIQUE, array('action')); 1243 1244 /// Launch create table for grade_categories_history 1245 $result = $result && create_table($table); 1246 1247 1248 /// Define table grade_items_history to be created 1249 $table = new XMLDBTable('grade_items_history'); 1250 1251 /// Adding fields to table grade_items_history 1252 $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 1253 $table->addFieldInfo('action', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1254 $table->addFieldInfo('oldid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 1255 $table->addFieldInfo('source', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null); 1256 $table->addFieldInfo('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1257 $table->addFieldInfo('loggeduser', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1258 $table->addFieldInfo('courseid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1259 $table->addFieldInfo('categoryid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1260 $table->addFieldInfo('itemname', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null); 1261 $table->addFieldInfo('itemtype', XMLDB_TYPE_CHAR, '30', null, XMLDB_NOTNULL, null, null, null, null); 1262 $table->addFieldInfo('itemmodule', XMLDB_TYPE_CHAR, '30', null, null, null, null, null, null); 1263 $table->addFieldInfo('iteminstance', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1264 $table->addFieldInfo('itemnumber', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1265 $table->addFieldInfo('iteminfo', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null); 1266 $table->addFieldInfo('idnumber', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null); 1267 $table->addFieldInfo('calculation', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null); 1268 $table->addFieldInfo('gradetype', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, null, null, '1'); 1269 $table->addFieldInfo('grademax', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '100'); 1270 $table->addFieldInfo('grademin', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0'); 1271 $table->addFieldInfo('scaleid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1272 $table->addFieldInfo('outcomeid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1273 $table->addFieldInfo('gradepass', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0'); 1274 $table->addFieldInfo('multfactor', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '1.0'); 1275 $table->addFieldInfo('plusfactor', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0'); 1276 $table->addFieldInfo('aggregationcoef', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0'); 1277 $table->addFieldInfo('sortorder', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1278 $table->addFieldInfo('display', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1279 $table->addFieldInfo('decimals', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, null, null, null, null, null); 1280 $table->addFieldInfo('hidden', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1281 $table->addFieldInfo('locked', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1282 $table->addFieldInfo('locktime', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1283 $table->addFieldInfo('needsupdate', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0'); 1284 1285 /// Adding keys to table grade_items_history 1286 $table->addKeyInfo('primary', XMLDB_KEY_PRIMARY, array('id')); 1287 $table->addKeyInfo('oldid', XMLDB_KEY_FOREIGN, array('oldid'), 'grade_items', array('id')); 1288 $table->addKeyInfo('courseid', XMLDB_KEY_FOREIGN, array('courseid'), 'course', array('id')); 1289 $table->addKeyInfo('categoryid', XMLDB_KEY_FOREIGN, array('categoryid'), 'grade_categories', array('id')); 1290 $table->addKeyInfo('scaleid', XMLDB_KEY_FOREIGN, array('scaleid'), 'scale', array('id')); 1291 $table->addKeyInfo('outcomeid', XMLDB_KEY_FOREIGN, array('outcomeid'), 'grade_outcomes', array('id')); 1292 $table->addKeyInfo('loggeduser', XMLDB_KEY_FOREIGN, array('loggeduser'), 'user', array('id')); 1293 1294 /// Adding indexes to table grade_items_history 1295 $table->addIndexInfo('action', XMLDB_INDEX_NOTUNIQUE, array('action')); 1296 1297 /// Launch create table for grade_items_history 1298 $result = $result && create_table($table); 1299 1300 1301 /// Define table grade_grades_history to be created 1302 $table = new XMLDBTable('grade_grades_history'); 1303 1304 /// Adding fields to table grade_grades_history 1305 $table->addFieldInfo('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null); 1306 $table->addFieldInfo('action', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1307 $table->addFieldInfo('oldid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 1308 $table->addFieldInfo('source', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null); 1309 $table->addFieldInfo('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1310 $table->addFieldInfo('loggeduser', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1311 $table->addFieldInfo('itemid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 1312 $table->addFieldInfo('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null); 1313 $table->addFieldInfo('rawgrade', XMLDB_TYPE_NUMBER, '10, 5', null, null, null, null, null, null); 1314 $table->addFieldInfo('rawgrademax', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '100'); 1315 $table->addFieldInfo('rawgrademin', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0'); 1316 $table->addFieldInfo('rawscaleid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1317 $table->addFieldInfo('usermodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null); 1318 $table->addFieldInfo('finalgrade', XMLDB_TYPE_NUMBER, '10, 5', null, null, null, null, null, null); 1319 $table->addFieldInfo('hidden', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1320 $table->addFieldInfo('locked', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0'); 1321 $table->