mirror of
https://github.com/moodle/moodle.git
synced 2025-02-10 10:41:57 +01:00
======================================= WARNING: DEV IS CURRENTLY VERY UNSTABLE. This is a mega-checkin of the new Roles system. A lot of changes have been made in core and modules. Currently there are a lot of rough edges and known problems. We are working hard on these .. .the reason for getting this into HEAD at this stage is enable us to move faster (our branch was diverging from HEAD too much). Please keep an eye on http://docs.moodle.org/en/Roles for current status and information for developers on how to use the new Roles system.
179 lines
8.4 KiB
PHP
179 lines
8.4 KiB
PHP
<?php // $Id$
|
|
|
|
function forum_upgrade($oldversion) {
|
|
// This function does anything necessary to upgrade
|
|
// older versions to match current functionality
|
|
|
|
global $CFG;
|
|
|
|
if ($oldversion < 2003042402) {
|
|
execute_sql("INSERT INTO {$CFG->prefix}log_display (module, action, mtable, field) VALUES ('forum', 'move discussion', 'forum_discussions', 'name')");
|
|
}
|
|
|
|
if ($oldversion < 2003082500) {
|
|
table_column("forum", "", "assesstimestart", "integer", "10", "unsigned", "0", "", "assessed");
|
|
table_column("forum", "", "assesstimefinish", "integer", "10", "unsigned", "0", "", "assesstimestart");
|
|
}
|
|
|
|
if ($oldversion < 2003082502) {
|
|
execute_sql("UPDATE {$CFG->prefix}forum SET scale = (- scale)");
|
|
}
|
|
|
|
if ($oldversion < 2003100600) {
|
|
table_column("forum", "", "maxbytes", "integer", "10", "unsigned", "0", "", "scale");
|
|
}
|
|
|
|
if ($oldversion < 2004010100) {
|
|
table_column("forum", "", "assesspublic", "integer", "4", "unsigned", "0", "", "assessed");
|
|
}
|
|
|
|
if ($oldversion < 2004011404) {
|
|
table_column("forum_discussions", "", "userid", "integer", "10", "unsigned", "0", "", "firstpost");
|
|
|
|
if ($discussions = get_records_sql("SELECT d.id, p.userid
|
|
FROM {$CFG->prefix}forum_discussions as d,
|
|
{$CFG->prefix}forum_posts as p
|
|
WHERE d.firstpost = p.id")) {
|
|
foreach ($discussions as $discussion) {
|
|
update_record("forum_discussions", $discussion);
|
|
}
|
|
}
|
|
}
|
|
if ($oldversion < 2004012200) {
|
|
table_column("forum_discussions", "", "groupid", "integer", "10", "unsigned", "0", "", "userid");
|
|
}
|
|
|
|
if ($oldversion < 2004020600) {
|
|
table_column("forum_discussions", "", "usermodified", "integer", "10", "unsigned", "0", "", "timemodified");
|
|
}
|
|
|
|
if ($oldversion < 2004050300) {
|
|
table_column("forum","","rsstype","integer","2", "unsigned", "0", "", "forcesubscribe");
|
|
table_column("forum","","rssarticles","integer","2", "unsigned", "0", "", "rsstype");
|
|
set_config("forum_enablerssfeeds",0);
|
|
}
|
|
|
|
if ($oldversion < 2004060100) {
|
|
modify_database('', "CREATE TABLE prefix_forum_queue (
|
|
id SERIAL PRIMARY KEY,
|
|
userid integer default 0 NOT NULL,
|
|
discussionid integer default 0 NOT NULL,
|
|
postid integer default 0 NOT NULL
|
|
);");
|
|
}
|
|
|
|
if ($oldversion < 2004070700) { // This may be redoing it from STABLE but that's OK
|
|
table_column("forum_discussions", "groupid", "groupid", "integer", "10", "", "0", "");
|
|
}
|
|
|
|
|
|
if ($oldversion < 2004111700) {
|
|
execute_sql(" DROP INDEX {$CFG->prefix}forum_posts_parent_idx;",false);
|
|
execute_sql(" DROP INDEX {$CFG->prefix}forum_posts_discussion_idx;",false);
|
|
execute_sql(" DROP INDEX {$CFG->prefix}forum_posts_userid_idx;",false);
|
|
execute_sql(" DROP INDEX {$CFG->prefix}forum_discussions_forum_idx;",false);
|
|
execute_sql(" DROP INDEX {$CFG->prefix}forum_discussions_userid_idx;",false);
|
|
|
|
execute_sql(" CREATE INDEX {$CFG->prefix}forum_posts_parent_idx ON {$CFG->prefix}forum_posts (parent) ");
|
|
execute_sql(" CREATE INDEX {$CFG->prefix}forum_posts_discussion_idx ON {$CFG->prefix}forum_posts (discussion) ");
|
|
execute_sql(" CREATE INDEX {$CFG->prefix}forum_posts_userid_idx ON {$CFG->prefix}forum_posts (userid) ");
|
|
execute_sql(" CREATE INDEX {$CFG->prefix}forum_discussions_forum_idx ON {$CFG->prefix}forum_discussions (forum) ");
|
|
execute_sql(" CREATE INDEX {$CFG->prefix}forum_discussions_userid_idx ON {$CFG->prefix}forum_discussions (userid) ");
|
|
}
|
|
|
|
if ($oldversion < 2004111200) {
|
|
execute_sql("DROP INDEX {$CFG->prefix}forum_course_idx;",false);
|
|
execute_sql("DROP INDEX {$CFG->prefix}forum_queue_userid_idx;",false);
|
|
execute_sql("DROP INDEX {$CFG->prefix}forum_queue_discussion_idx;",false);
|
|
execute_sql("DROP INDEX {$CFG->prefix}forum_queue_postid_idx;",false);
|
|
execute_sql("DROP INDEX {$CFG->prefix}forum_ratings_userid_idx;",false);
|
|
execute_sql("DROP INDEX {$CFG->prefix}forum_ratings_post_idx;",false);
|
|
execute_sql("DROP INDEX {$CFG->prefix}forum_subscriptions_userid_idx;",false);
|
|
execute_sql("DROP INDEX {$CFG->prefix}forum_subscriptions_forum_idx;",false);
|
|
|
|
modify_database('','CREATE INDEX prefix_forum_course_idx ON prefix_forum (course);');
|
|
modify_database('','CREATE INDEX prefix_forum_queue_userid_idx ON prefix_forum_queue (userid);');
|
|
modify_database('','CREATE INDEX prefix_forum_queue_discussion_idx ON prefix_forum_queue (discussionid);');
|
|
modify_database('','CREATE INDEX prefix_forum_queue_postid_idx ON prefix_forum_queue (postid);');
|
|
modify_database('','CREATE INDEX prefix_forum_ratings_userid_idx ON prefix_forum_ratings (userid);');
|
|
modify_database('','CREATE INDEX prefix_forum_ratings_post_idx ON prefix_forum_ratings (post);');
|
|
modify_database('','CREATE INDEX prefix_forum_subscriptions_userid_idx ON prefix_forum_subscriptions (userid);');
|
|
modify_database('','CREATE INDEX prefix_forum_subscriptions_forum_idx ON prefix_forum_subscriptions (forum);');
|
|
}
|
|
|
|
if ($oldversion < 2005011500) {
|
|
modify_database('','CREATE TABLE prefix_forum_read (
|
|
id SERIAL PRIMARY KEY,
|
|
userid integer default 0 NOT NULL,
|
|
forumid integer default 0 NOT NULL,
|
|
discussionid integer default 0 NOT NULL,
|
|
postid integer default 0 NOT NULL,
|
|
firstread integer default 0 NOT NULL,
|
|
lastread integer default 0 NOT NULL
|
|
);');
|
|
|
|
modify_database('','CREATE INDEX prefix_forum_user_forum_idx ON prefix_forum_read (userid, forumid);');
|
|
modify_database('','CREATE INDEX prefix_forum_user_discussion_idx ON prefix_forum_read (userid, discussionid);');
|
|
modify_database('','CREATE INDEX prefix_forum_user_post_idx ON prefix_forum_read (userid, postid);');
|
|
|
|
set_config('upgrade', 'forumread'); // The upgrade of this table will be done later by admin/upgradeforumread.php
|
|
}
|
|
|
|
if ($oldversion < 2005032900) {
|
|
modify_database('','CREATE INDEX prefix_forum_posts_created_idx ON prefix_forum_posts (created);');
|
|
modify_database('','CREATE INDEX prefix_forum_posts_mailed_idx ON prefix_forum_posts (mailed);');
|
|
}
|
|
|
|
if ($oldversion < 2005041100) { // replace wiki-like with markdown
|
|
include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" );
|
|
$wtm = new WikiToMarkdown();
|
|
$sql = "select course from {$CFG->prefix}forum_discussions, {$CFG->prefix}forum_posts ";
|
|
$sql .= "where {$CFG->prefix}forum_posts.discussion = {$CFG->prefix}forum_discussions.id ";
|
|
$sql .= "and {$CFG->prefix}forum_posts.id = ";
|
|
$wtm->update( 'forum_posts','message','format',$sql );
|
|
}
|
|
|
|
if ($oldversion < 2005042300) { // Add tracking prefs table
|
|
modify_database('','CREATE TABLE prefix_forum_track_prefs (
|
|
id SERIAL PRIMARY KEY,
|
|
userid integer default 0 NOT NULL,
|
|
forumid integer default 0 NOT NULL
|
|
);');
|
|
}
|
|
|
|
if ($oldversion < 2005042600) {
|
|
table_column('forum','','trackingtype','integer','2', 'unsigned', '1', '', 'forcesubscribe');
|
|
modify_database('','CREATE INDEX prefix_forum_track_user_forum_idx ON prefix_forum_track_prefs (userid, forumid);');
|
|
}
|
|
|
|
if ($oldversion < 2005042601) { // Mass cleanup of bad postgres upgrade scripts
|
|
modify_database('','ALTER TABLE prefix_forum ALTER trackingtype SET NOT NULL');
|
|
}
|
|
|
|
if ($oldversion < 2005111100) {
|
|
table_column('forum_discussions','','timestart','integer');
|
|
table_column('forum_discussions','','timeend','integer');
|
|
}
|
|
|
|
if ($oldversion < 2006011600) {
|
|
execute_sql("ALTER TABLE {$CFG->prefix}forum DROP CONSTRAINT {$CFG->prefix}forum_type");
|
|
execute_sql("ALTER TABLE {$CFG->prefix}forum ADD CONSTRAINT {$CFG->prefix}forum_type CHECK (type IN ('single','news','general','social','eachuser','teacher','qanda')) ");
|
|
}
|
|
|
|
if ($oldversion < 2006011601) {
|
|
table_column('forum','','warnafter');
|
|
table_column('forum','','blockafter');
|
|
table_column('forum','','blockperiod');
|
|
}
|
|
|
|
if ($oldversion < 2006011700) {
|
|
table_column('forum_posts','','mailnow','integer');
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
?>
|