File: postgres7.php

package info (click to toggle)
moodle 1.6.3-2%2Betch3
  • links: PTS
  • area: main
  • in suites: etch
  • size: 37,172 kB
  • ctags: 51,688
  • sloc: php: 231,916; sql: 5,631; xml: 2,688; sh: 1,185; perl: 638; makefile: 48; pascal: 36
file content (178 lines) | stat: -rw-r--r-- 8,807 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
<?php // $Id: postgres7.php,v 1.21 2006/04/24 09:00:43 vyshane Exp $

function assignment_upgrade($oldversion) {
// This function does anything necessary to upgrade
// older versions to match current functionality

    global $CFG;

    if ($oldversion < 2002080500) {

        execute_sql("
        CREATE TABLE `assignment` (
          `id` SERIAL PRIMARY KEY,
          `course` integer NOT NULL default '0',
          `name` varchar(255) NOT NULL default '',
          `description` text NOT NULL,
          `type` integer NOT NULL default '1',
          `maxbytes` integer NOT NULL default '100000',
          `timedue` integer NOT NULL default '0',
          `grade` integer NOT NULL default '0',
          `timemodified` integer NOT NULL default '0'
        )
        ");
        
        execute_sql("
        CREATE TABLE `assignment_submissions` (
          `id` integer NOT NULL PRIMARY KEY default '0',
          `assignment` integer NOT NULL default '0',
          `user` integer NOT NULL default '0',
          `timecreated` integer NOT NULL default '0',
          `timemodified` integer NOT NULL default '0',
          `numfiles` integer NOT NULL default '0',
          `grade` integer NOT NULL default '0',
          `comment` text NOT NULL,
          `teacher` integer NOT NULL default '0',
          `timemarked` integer NOT NULL default '0',
          `mailed` integer NOT NULL default '0'
        )
        ");
        
        execute_sql(" INSERT INTO log_display (module, action, mtable, field) VALUES ('assignment', 'view', 'assignment', 'name') ");
        execute_sql(" INSERT INTO log_display (module, action, mtable, field) VALUES ('assignment', 'add', 'assignment', 'name') ");
        execute_sql(" INSERT INTO log_display (module, action, mtable, field) VALUES ('assignment', 'update', 'assignment', 'name') ");
        execute_sql(" INSERT INTO log_display (module, action, mtable, field) VALUES ('assignment', 'view submissions', 'assignment', 'name') ");
        execute_sql(" INSERT INTO log_display (module, action, mtable, field) VALUES ('assignment', 'upload', 'assignment', 'name') ");
    }

    if ($oldversion < 2002080701) {
        execute_sql(" ALTER TABLE `assignment_submissions` CHANGE `id` `id` SERIAL PRIMARY KEY ");
    }

    if ($oldversion < 2002082806) {
        // assignment file area was moved, so rename all the directories in existing courses

        notify("Moving location of assignment files...");

        $basedir = opendir("$CFG->dataroot");
        while ($dir = readdir($basedir)) {
            if ($dir == "." || $dir == ".." || $dir == "users") {
                continue;
            }
            if (filetype("$CFG->dataroot/$dir") != "dir") {
                continue;
            }
            $coursedir = "$CFG->dataroot/$dir";

            if (! $coursemoddata = make_mod_upload_directory($dir)) {
                echo "Error: could not create mod upload directory: $coursemoddata";
                continue;
            }

            if (file_exists("$coursedir/assignment")) {
                if (! rename("$coursedir/assignment", "$coursemoddata/assignment")) {
                    echo "Error: could not move $coursedir/assignment to $coursemoddata/assignment\n";
                }
            }
        }
    }

    if ($oldversion < 2002101600) {
        execute_sql(" ALTER TABLE `assignment` ADD `format` INTEGER DEFAULT '0' NOT NULL AFTER `description` ");
    }
    if ($oldversion < 2002110302) {
        execute_sql(" UPDATE `assignment` SET `type` = '1'");
    }
    if ($oldversion < 2003091000) {
        # Old field that was never added!
        table_column("assignment", "", "resubmit", "integer", "2", "unsigned", "0", "", "format");
    }

    if ($oldversion < 2004021700) {
        set_field("log_display", "action", "view submission", "module", "assignment", "action", "view submissions");
    }

    if ($oldversion < 2004040100) {
        include_once("$CFG->dirroot/mod/assignment/lib.php");
        assignment_refresh_events();
    }

    if ($oldversion < 2004111200) { 
        execute_sql("DROP INDEX {$CFG->prefix}assignment_course_idx;",false);
        execute_sql("DROP INDEX {$CFG->prefix}assignment_submissions_assignment_idx;",false); 
        execute_sql("DROP INDEX {$CFG->prefix}assignment_submissions_userid_idx;",false); 
        execute_sql("DROP INDEX {$CFG->prefix}assignment_submissions_mailed_idx;",false);
        execute_sql("DROP INDEX {$CFG->prefix}assignment_submissions_timemarked_idx;",false);

        modify_database('','CREATE INDEX prefix_assignment_course_idx ON prefix_assignment (course);');
        modify_database('','CREATE INDEX prefix_assignment_submissions_assignment_idx ON prefix_assignment_submissions (assignment);');
        modify_database('','CREATE INDEX prefix_assignment_submissions_userid_idx ON prefix_assignment_submissions (userid);');
        modify_database('','CREATE INDEX prefix_assignment_submissions_mailed_idx ON prefix_assignment_submissions (mailed);');
        modify_database('','CREATE INDEX prefix_assignment_submissions_timemarked_idx ON prefix_assignment_submissions (timemarked);');
    }

    if ($oldversion < 2005010500) { 
        table_column('assignment', '', 'emailteachers', 'integer', '2', 'unsigned', 0, 'not null', 'resubmit');
    }

    if ($oldversion < 2005041100) { // replace wiki-like with markdown
        include_once( "$CFG->dirroot/lib/wiki_to_markdown.php" );
        $wtm = new WikiToMarkdown();
        $wtm->update( 'assignment','description','format' );
    }

    if ($oldversion < 2005041400) {  // Add new fields for the new refactored version of assignment
        table_column('assignment', '', 'timeavailable', 'integer', '10', 'unsigned', 0, 'not null', 'timedue');
        table_column('assignment', '', 'assignmenttype', 'varchar', '50', '', '', 'not null', 'format');
        execute_sql("UPDATE {$CFG->prefix}assignment SET assignmenttype = 'offline' WHERE type = '0';",false);
        execute_sql("UPDATE {$CFG->prefix}assignment SET assignmenttype = 'uploadsingle' WHERE type = '1';",false);
        execute_sql('ALTER TABLE '.$CFG->prefix.'assignment DROP type;');
    }

    if ($oldversion < 2005041501) {  // Add two new fields for general data handling, 
                                     // so most assignment types won't need new fields and backups stay simple
        table_column('assignment_submissions', '', 'data2', 'TEXT', '', '', '', 'not null', 'numfiles');
        table_column('assignment_submissions', '', 'data1', 'TEXT', '', '', '', 'not null', 'numfiles');
    }

    if ($oldversion < 2005041600) {  // Add five new fields for general assignment parameters
                                     // so most assignment types won't need new fields and backups stay simple
        table_column('assignment', '', 'var5', 'integer', '10', '', 0, 'null', 'emailteachers');
        table_column('assignment', '', 'var4', 'integer', '10', '', 0, 'null', 'emailteachers');
        table_column('assignment', '', 'var3', 'integer', '10', '', 0, 'null', 'emailteachers');
        table_column('assignment', '', 'var2', 'integer', '10', '', 0, 'null', 'emailteachers');
        table_column('assignment', '', 'var1', 'integer', '10', '', 0, 'null', 'emailteachers');
    }

    if ($oldversion < 2005041700) {  // Allow comments to have a formatting
        table_column('assignment_submissions', '', 'format', 'integer', '4', 'unsigned', '0', 'not null', 'comment');
    }

    if ($oldversion < 2005041800) {  // Prevent late submissions?  (default no)
        table_column('assignment', '', 'preventlate', 'integer', '2', 'unsigned', '0', 'not null', 'resubmit');
    }

    if ($oldversion < 2005060100) {
        include_once("$CFG->dirroot/mod/assignment/lib.php");
        assignment_refresh_events();
    }

    if ($oldversion < 2005060101) { // Mass cleanup of bad upgrade scripts
        modify_database('','ALTER TABLE prefix_assignment ALTER assignmenttype SET NOT NULL');
        modify_database('','ALTER TABLE prefix_assignment ALTER emailteachers SET NOT NULL');
        modify_database('','ALTER TABLE prefix_assignment ALTER preventlate SET NOT NULL');
        modify_database('','ALTER TABLE prefix_assignment ALTER timeavailable SET NOT NULL');
        modify_database('','ALTER TABLE prefix_assignment_submissions ALTER data1 SET NOT NULL');
        modify_database('','ALTER TABLE prefix_assignment_submissions ALTER data2 SET NOT NULL');
        modify_database('','ALTER TABLE prefix_assignment_submissions ALTER format SET NOT NULL');
    }

/// These lines ALWAYS need to be here at the end of this file.  Don't mess with them. :-)
    include_once("$CFG->dirroot/mod/assignment/lib.php");
    assignment_upgrade_submodules();

    return true;
}


?>