3 // This file keeps track of upgrades to
6 // Sometimes, changes between versions involve
7 // alterations to database structures and other
8 // major things that may break installations.
10 // The upgrade function in this file will attempt
11 // to perform all the necessary actions to upgrade
12 // your older installtion to the current version.
14 // If there's something it cannot do itself, it
15 // will tell you what you need to do.
17 // The commands in here will all be database-neutral,
18 // using the functions defined in lib/ddllib.php
20 function xmldb_forum_upgrade($oldversion=0) {
22 global $CFG, $THEME, $db;
26 /// And upgrade begins here. For each one, you'll need one
27 /// block of code similar to the next one. Please, delete
28 /// this comment lines once this file start handling proper
31 /// if ($result && $oldversion < YYYYMMDD00) { //New version in version.php
32 /// $result = result of "/lib/ddllib.php" function calls
35 if ($result && $oldversion < 2007101000) {
37 /// Define field timemodified to be added to forum_queue
38 $table = new XMLDBTable('forum_queue');
39 $field = new XMLDBField('timemodified');
40 $field->setAttributes(XMLDB_TYPE_INTEGER
, '10', XMLDB_UNSIGNED
, XMLDB_NOTNULL
, null, null, null, '0', 'postid');
42 /// Launch add field timemodified
43 $result = $result && add_field($table, $field);
46 //===== 1.9.0 upgrade line ======//
48 if ($result and $oldversion < 2007101511) {
49 notify('Processing forum grades, this may take a while if there are many forums...', 'notifysuccess');
50 //MDL-13866 - send forum ratins to gradebook again
51 require_once($CFG->dirroot
.'/mod/forum/lib.php');
52 // too much debug output
54 forum_update_grades();
58 if ($result && $oldversion < 2007101512) {
60 /// Cleanup the forum subscriptions
61 notify('Removing stale forum subscriptions', 'notifysuccess');
63 $roles = get_roles_with_capability('moodle/course:view', CAP_ALLOW
);
64 $roles = array_keys($roles);
65 $roles = implode(',', $roles);
67 $sql = "SELECT fs.userid, f.id AS forumid
68 FROM {$CFG->prefix}forum f
69 JOIN {$CFG->prefix}course c ON c.id = f.course
70 JOIN {$CFG->prefix}context ctx ON (ctx.instanceid = c.id AND ctx.contextlevel = ".CONTEXT_COURSE
.")
71 JOIN {$CFG->prefix}forum_subscriptions fs ON fs.forum = f.id
72 LEFT JOIN {$CFG->prefix}role_assignments ra ON (ra.contextid = ctx.id AND ra.userid = fs.userid AND ra.roleid IN ($roles))
75 if ($rs = get_recordset_sql($sql)) {
77 while ($remove = rs_fetch_next_record($rs)) {
78 delete_records('forum_subscriptions', 'userid', $remove->userid
, 'forum', $remove->forumid
);