Fixed missing 'throw' keyword
[moodle.git] / db / upgrade.php
1 <?php
2 // This file is part of Book module for Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17 /**
18  * Book module upgrade code
19  *
20  * @package    mod
21  * @subpackage book
22  * @copyright  2009-2011 Petr Skoda  {@link http://skodak.org}
23  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  */
26 defined('MOODLE_INTERNAL') || die;
28 function xmldb_book_upgrade($oldversion) {
29     global $CFG, $DB;
31     $dbman = $DB->get_manager();
33     if ($oldversion < 2004081100) {
34         throw new upgrade_exception('mod_book', $oldversion, 'Can not upgrade such an old book module, sorry, you should have upgraded it long time ago in 1.9 already.');
35     }
37     if ($oldversion < 2007052001) {
39     /// Changing type of field importsrc on table book_chapters to char
40         $table = new xmldb_table('book_chapters');
41         $field = new xmldb_field('importsrc', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, 'timemodified');
43     /// Launch change of type for field importsrc
44         $dbman->change_field_type($table, $field);
46         upgrade_mod_savepoint(true, 2007052001, 'book');
47     }
49 //===== 1.9.0 upgrade line ======//
51     if ($oldversion < 2010120801) {
52        // Rename field summary on table book to intro
53         $table = new xmldb_table('book');
54         $field = new xmldb_field('summary', XMLDB_TYPE_TEXT, 'small', null, null, null, null, 'name');
56         // Launch rename field summary
57         if ($dbman->field_exists($table, $field)) {
58             $dbman->rename_field($table, $field, 'intro');
59         }
61         // book savepoint reached
62         upgrade_mod_savepoint(true, 2010120801, 'book');
63     }
65     if ($oldversion < 2010120802) {
66        // Rename field summary on table book to intro
67         $table = new xmldb_table('book');
68         $field = new xmldb_field('intro', XMLDB_TYPE_TEXT, 'big', null, null, null, null, 'name');
70         // Launch rename field summary
71         $dbman->change_field_precision($table, $field);
73         // book savepoint reached
74         upgrade_mod_savepoint(true, 2010120802, 'book');
75     }
77     if ($oldversion < 2010120803) {
78         // Define field introformat to be added to book
79         $table = new xmldb_table('book');
80         $field = new xmldb_field('introformat', XMLDB_TYPE_INTEGER, '4', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'intro');
82         // Launch add field introformat
83         if (!$dbman->field_exists($table, $field)) {
84             $dbman->add_field($table, $field);
85         }
87         $DB->set_field('book', 'introformat', FORMAT_HTML, array());
89         // book savepoint reached
90         upgrade_mod_savepoint(true, 2010120803, 'book');
91     }
93     if ($oldversion < 2010120804) {
94         // Define field introformat to be added to book
95         $table = new xmldb_table('book_chapters');
96         $field = new xmldb_field('contentformat', XMLDB_TYPE_INTEGER, '4', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'content');
98         // Launch add field introformat
99         if (!$dbman->field_exists($table, $field)) {
100             $dbman->add_field($table, $field);
101         }
103         $DB->set_field('book_chapters', 'contentformat', FORMAT_HTML, array());
105         // book savepoint reached
106         upgrade_mod_savepoint(true, 2010120804, 'book');
107     }
109     if ($oldversion < 2010120805) {
110         require_once("$CFG->dirroot/mod/book/db/upgradelib.php");
112         $sqlfrom = "FROM {book} b
113                     JOIN {modules} m ON m.name = 'book'
114                     JOIN {course_modules} cm ON (cm.module = m.id AND cm.instance = b.id)";
116         $count = $DB->count_records_sql("SELECT COUNT('x') $sqlfrom");
118         if ($rs = $DB->get_recordset_sql("SELECT b.id, b.course, cm.id AS cmid $sqlfrom ORDER BY b.course, b.id")) {
120             $pbar = new progress_bar('migratebookfiles', 500, true);
122             $i = 0;
123             foreach ($rs as $book) {
124                 $i++;
125                 upgrade_set_timeout(360); // set up timeout, may also abort execution
126                 $pbar->update($i, $count, "Migrating book files - $i/$count.");
128                 $context = get_context_instance(CONTEXT_MODULE, $book->cmid);
130                 book_migrate_moddata_dir_to_legacy($book, $context, '/');
132                 // remove dirs if empty
133                 @rmdir("$CFG->dataroot/$book->course/$CFG->moddata/book/$book->id/");
134                 @rmdir("$CFG->dataroot/$book->course/$CFG->moddata/book/");
135                 @rmdir("$CFG->dataroot/$book->course/$CFG->moddata/");
136                 @rmdir("$CFG->dataroot/$book->course/");
137             }
138             $rs->close();
139         }
141         // book savepoint reached
142         upgrade_mod_savepoint(true, 2010120805, 'book');
143     }
145     if ($oldversion < 2011011600) {
146         // Define field disableprinting to be dropped from book
147         $table = new xmldb_table('book');
148         $field = new xmldb_field('disableprinting');
150         // Conditionally launch drop field disableprinting
151         if ($dbman->field_exists($table, $field)) {
152             $dbman->drop_field($table, $field);
153         }
155         // book savepoint reached
156         upgrade_mod_savepoint(true, 2011011600, 'book');
157     }
159     if ($oldversion < 2011011601) {
160         unset_config('book_tocwidth');
162         // book savepoint reached
163         upgrade_mod_savepoint(true, 2011011601, 'book');
164     }
167     //TODO: migrate the legacy file.php links to new pluginfile.php and file areas per chapter
170     return true;