a30ea55129d8a6a991c4eaf377d3f3df5ef00db8
[moodle.git] / mod / feedback / db / upgrade.php
1 <?php
3 // This file keeps track of upgrades to
4 // the feedback module
5 //
6 // Sometimes, changes between versions involve
7 // alterations to database structures and other
8 // major things that may break installations.
9 //
10 // The upgrade function in this file will attempt
11 // to perform all the necessary actions to upgrade
12 // your older installation to the current version.
13 //
14 // If there's something it cannot do itself, it
15 // will tell you what you need to do.
16 //
17 // The commands in here will all be database-neutral,
18 // using the methods of database_manager class
19 //
20 // Please do not forget to use upgrade_set_timeout()
21 // before any action that may take longer time to finish.
23 function xmldb_feedback_upgrade($oldversion) {
24     global $CFG, $DB;
26     $dbman = $DB->get_manager();
28     if ($oldversion < 2007012310) {
30         //create a new table feedback_completedtmp and the field-definition
31         $table = new xmldb_table('feedback_completedtmp');
33         $field = new xmldb_field('id');
34         $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, true, null, null);
35         $table->addField($field);
37         $field = new xmldb_field('feedback');
38         $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null);
39         $table->addField($field);
41         $field = new xmldb_field('userid');
42         $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null);
43         $table->addField($field);
45         $field = new xmldb_field('guestid');
46         $field->set_attributes(XMLDB_TYPE_CHAR, '255', null, null, false, '', null);
47         $table->addField($field);
49         $field = new xmldb_field('timemodified');
50         $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null);
51         $table->addField($field);
53         $key = new xmldb_key('PRIMARY');
54         $key->set_attributes(XMLDB_KEY_PRIMARY, array('id'));
55         $table->addKey($key);
57         $key = new xmldb_key('feedback');
58         $key->set_attributes(XMLDB_KEY_FOREIGN, array('feedback'), 'feedback', 'id');
59         $table->addKey($key);
61         $dbman->create_table($table);
62         ////////////////////////////////////////////////////////////
63         ////////////////////////////////////////////////////////////
64         //create a new table feedback_valuetmp and the field-definition
65         $table = new xmldb_table('feedback_valuetmp');
67         $field = new xmldb_field('id');
68         $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, true, null, null);
69         $table->addField($field);
71         $field = new xmldb_field('course_id');
72         $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null);
73         $table->addField($field);
75         $field = new xmldb_field('item');
76         $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null);
77         $table->addField($field);
79         $field = new xmldb_field('completed');
80         $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null);
81         $table->addField($field);
83         $field = new xmldb_field('tmp_completed');
84         $field->set_attributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null);
85         $table->addField($field);
87         $field = new xmldb_field('value');
88         $field->set_attributes(XMLDB_TYPE_TEXT, null, null, null, false, '', null);
89         $table->addField($field);
91         $key = new xmldb_key('PRIMARY');
92         $key->set_attributes(XMLDB_KEY_PRIMARY, array('id'));
93         $table->addKey($key);
95         $key = new xmldb_key('feedback');
96         $key->set_attributes(XMLDB_KEY_FOREIGN, array('item'), 'feedback_item', 'id');
97         $table->addKey($key);
99         $dbman->create_table($table);
100         ////////////////////////////////////////////////////////////
101         upgrade_mod_savepoint(true, 2007012310, 'feedback');
102     }
104     if ($oldversion < 2007050504) {
106         /// Define field random_response to be added to feedback_completed
107         $table = new xmldb_table('feedback_completed');
108         $field = new xmldb_field('random_response', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null);
109         /// Launch add field1
110         $dbman->add_field($table, $field);
112         /// Define field anonymous_response to be added to feedback_completed
113         $table = new xmldb_table('feedback_completed');
114         $field = new xmldb_field('anonymous_response', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '1', null);
115         /// Launch add field2
116         $dbman->add_field($table, $field);
118         /// Define field random_response to be added to feedback_completed
119         $table = new xmldb_table('feedback_completedtmp');
120         $field = new xmldb_field('random_response', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '0', null);
121         /// Launch add field1
122         $dbman->add_field($table, $field);
124         /// Define field anonymous_response to be added to feedback_completed
125         $table = new xmldb_table('feedback_completedtmp');
126         $field = new xmldb_field('anonymous_response', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '1', null);
127         /// Launch add field2
128         $dbman->add_field($table, $field);
130         ////////////////////////////////////////////////////////////
131         upgrade_mod_savepoint(true, 2007050504, 'feedback');
132     }
134     if ($oldversion < 2007102600) {
135         // public is a reserved word on Oracle
137         $table = new xmldb_table('feedback_template');
138         $field = new xmldb_field('ispublic', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, false, '1', null);
139         if (!$dbman->field_exists($table, $field)) {
140             $dbman->add_field($table, $field);
141         }
142         upgrade_mod_savepoint(true, 2007102600, 'feedback');
143     }
145     if ($oldversion < 2008042400) { //New version in version.php
146         if ($all_nonanonymous_feedbacks = $DB->get_records('feedback', 'anonymous', 2)) {
147             $update_sql = 'UPDATE {feedback_completed} SET anonymous_response = 2 WHERE feedback = ';
148             foreach ($all_nonanonymous_feedbacks as $fb) {
149                 $DB->execute($update_sql.$fb->id);
150             }
151         }
152         upgrade_mod_savepoint(true, 2008042400, 'feedback');
153     }
155     if ($oldversion < 2008042401) { //New version in version.php
156         $concat_radio    = $DB->sql_concat("'r>>>>>'",'presentation');
157         $concat_check    = $DB->sql_concat("'c>>>>>'",'presentation');
158         $concat_dropdown = $DB->sql_concat("'d>>>>>'",'presentation');
160         $update_sql1 = "UPDATE {feedback_item} SET presentation = ".$concat_radio." WHERE typ IN('radio','radiorated')";
161         $update_sql2 = "UPDATE {feedback_item} SET presentation = ".$concat_dropdown." WHERE typ IN('dropdown','dropdownrated')";
162         $update_sql3 = "UPDATE {feedback_item} SET presentation = ".$concat_check." WHERE typ = 'check'";
164         $DB->execute($update_sql1);
165         $DB->execute($update_sql2);
166         $DB->execute($update_sql3);
168         $update_sql1 = "UPDATE {feedback_item} SET typ = 'multichoice' WHERE typ IN('radio','check','dropdown')";
169         $update_sql2 = "UPDATE {feedback_item} SET typ = 'multichoicerated' WHERE typ IN('radiorated','dropdownrated')";
170         $DB->execute($update_sql1);
171         $DB->execute($update_sql2);
173         upgrade_mod_savepoint(true, 2008042401, 'feedback');
174     }
176     if ($oldversion < 2008042801) {
177         $new_log_display = new object();
178         $new_log_display->module = 'feedback';
179         $new_log_display->action = 'startcomplete';
180         $new_log_display->mtable = 'feedback';
181         $new_log_display->field = 'name';
182         $DB->insert_record('log_display', $new_log_display);
184         $new_log_display = clone($new_log_display);
185         $new_log_display->action = 'submit';
186         $DB->insert_record('log_display', $new_log_display);
188         $new_log_display = clone($new_log_display);
189         $new_log_display->action = 'delete';
190         $DB->insert_record('log_display', $new_log_display);
192         $new_log_display = clone($new_log_display);
193         $new_log_display->action = 'view';
194         $DB->insert_record('log_display', $new_log_display);
196         $new_log_display = clone($new_log_display);
197         $new_log_display->action = 'view all';
198         $new_log_display->mtable = 'course';
199         $new_log_display->field = 'shortname';
200         $DB->insert_record('log_display', $new_log_display);
202         upgrade_mod_savepoint(true, 2008042801, 'feedback');
203     }
205     if ($oldversion < 2008042900) {
206         /// Define field autonumbering to be added to feedback
207         $table = new xmldb_table('feedback');
208         $field = new xmldb_field('autonumbering', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '1', 'multiple_submit');
209         /// Launch add field2
210         $dbman->add_field($table, $field);
212         upgrade_mod_savepoint(true, 2008042900, 'feedback');
213     }
215     if ($oldversion < 2008050104) {
216         /// Define field site_after_submit to be added to feedback
217         $table = new xmldb_table('feedback');
218         $field = new xmldb_field('site_after_submit', XMLDB_TYPE_CHAR, '255', null, null, false, '', 'autonumbering');
219         /// Launch add field2
220         $dbman->add_field($table, $field);
222         upgrade_mod_savepoint(true, 2008050104, 'feedback');
223     }
225     if ($oldversion < 2008050105) {
226         //field count is not more needed
227         $table = new xmldb_table('feedback_tracking');
228         $field = new xmldb_field('count');
229         $dbman->drop_field($table, $field);
231         upgrade_mod_savepoint(true, 2008050105, 'feedback');
232     }
234     if ($oldversion < 2008073002) {
235         $update_sql = "UPDATE {feedback_item} SET presentation = '-|-' WHERE " . $DB->sql_compare_text('presentation') . " = '0|0' AND typ = 'numeric'";
236         $DB->execute($update_sql);
238         upgrade_mod_savepoint(true, 2008073002, 'feedback');
239     }
241     if ($oldversion < 2009031301) {
242         /// Define field label to be added to feedback_item
243         $table = new xmldb_table('feedback_item');
244         $field = new xmldb_field('label', XMLDB_TYPE_CHAR, '255', null, null, false, '', 'name');
245         /// Launch add field2
246         $dbman->add_field($table, $field);
248         upgrade_mod_savepoint(true, 2009031301, 'feedback');
249     }
251     if ($oldversion < 2009042000) {
253     /// Rename field summary on table feedback to intro
254         $table = new xmldb_table('feedback');
255         $field = new xmldb_field('summary', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, null, 'name');
257     /// Launch rename field summary
258         $dbman->rename_field($table, $field, 'intro');
260     /// feedback savepoint reached
261         upgrade_mod_savepoint(true, 2009042000, 'feedback');
262     }
264     if ($oldversion < 2009042001) {
266     /// Define field introformat to be added to feedback
267         $table = new xmldb_table('feedback');
268         $field = new xmldb_field('introformat', XMLDB_TYPE_INTEGER, '4', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'intro');
270     /// Launch add field introformat
271         $dbman->add_field($table, $field);
273     /// feedback savepoint reached
274         upgrade_mod_savepoint(true, 2009042001, 'feedback');
275     }
277     if ($oldversion < 2009112000) {
278         /// Define field page_after_submitformat to be added to feedback
279         $table = new xmldb_table('feedback');
280         $field = new xmldb_field('page_after_submitformat', XMLDB_TYPE_INTEGER, '2', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'page_after_submit');
282         if (!$dbman->field_exists($table, $field)) {
283             // Launch add field page_after_submitformat
284             $dbman->add_field($table, $field);
285         }
287         // feedback savepoint reached
288         upgrade_mod_savepoint(true, 2009112000, 'feedback');
289     }
291     if ($oldversion < 2010051101) {
292         /// Define field options to be added to feedback_item
293         $table = new xmldb_table('feedback_item');
294         $field = new xmldb_field('options', XMLDB_TYPE_CHAR, '255', null, null, false, '', 'required');
295         /// Launch add field
296         $dbman->add_field($table, $field);
298         upgrade_mod_savepoint(true, 2010051101, 'feedback');
299     }
301     if ($oldversion < 2010051600) {
302         /// Define field options to be added to feedback_item
303         $table = new xmldb_table('feedback_item');
304         $field = new xmldb_field('dependitem', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'required');
305         /// Launch add field
306         $dbman->add_field($table, $field);
308         upgrade_mod_savepoint(true, 2010051600, 'feedback');
309     }
311     if ($oldversion < 2010051601) {
312         /// Define field options to be added to feedback_item
313         $table = new xmldb_table('feedback_item');
314         $field = new xmldb_field('dependvalue', XMLDB_TYPE_CHAR, '255', null, null, false, '', 'dependitem');
315         /// Launch add field
316         $dbman->add_field($table, $field);
318         upgrade_mod_savepoint(true, 2010051601, 'feedback');
319     }
321     return true;