diff options
Diffstat (limited to 'sqlbox/db/upgrade.php')
-rw-r--r-- | sqlbox/db/upgrade.php | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/sqlbox/db/upgrade.php b/sqlbox/db/upgrade.php new file mode 100644 index 0000000..7f74831 --- /dev/null +++ b/sqlbox/db/upgrade.php @@ -0,0 +1,165 @@ +<?php + +// This file is part of Moodle - http://moodle.org/ +// +// Moodle is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Moodle is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Moodle. If not, see <http://www.gnu.org/licenses/>. + +/** + * This file keeps track of upgrades to the newmodule module + * + * Sometimes, changes between versions involve alterations to database + * structures and other major things that may break installations. The upgrade + * function in this file will attempt to perform all the necessary actions to + * upgrade your older installation to the current version. If there's something + * it cannot do itself, it will tell you what you need to do. The commands in + * here will all be database-neutral, using the functions defined in DLL libraries. + * + * @package mod + * @subpackage newmodule + * @copyright 2011 Your Name + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +/** + * Execute newmodule upgrade from the given old version + * + * @param int $oldversion + * @return bool + */ +function xmldb_newmodule_upgrade($oldversion) { + global $DB; + + $dbman = $DB->get_manager(); // loads ddl manager and xmldb classes + + // And upgrade begins here. For each one, you'll need one + // block of code similar to the next one. Please, delete + // this comment lines once this file start handling proper + // upgrade code. + + // if ($oldversion < YYYYMMDD00) { //New version in version.php + // + // } + + // Lines below (this included) MUST BE DELETED once you get the first version + // of your module ready to be installed. They are here only + // for demonstrative purposes and to show how the newmodule + // iself has been upgraded. + + // For each upgrade block, the file newmodule/version.php + // needs to be updated . Such change allows Moodle to know + // that this file has to be processed. + + // To know more about how to write correct DB upgrade scripts it's + // highly recommended to read information available at: + // http://docs.moodle.org/en/Development:XMLDB_Documentation + // and to play with the XMLDB Editor (in the admin menu) and its + // PHP generation posibilities. + + // First example, some fields were added to install.xml on 2007/04/01 + if ($oldversion < 2007040100) { + + // Define field course to be added to newmodule + $table = new xmldb_table('newmodule'); + $field = new xmldb_field('course', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'id'); + + // Add field course + if (!$dbman->field_exists($table, $field)) { + $dbman->add_field($table, $field); + } + + // Define field intro to be added to newmodule + $table = new xmldb_table('newmodule'); + $field = new xmldb_field('intro', XMLDB_TYPE_TEXT, 'medium', null, null, null, null,'name'); + + // Add field intro + if (!$dbman->field_exists($table, $field)) { + $dbman->add_field($table, $field); + } + + // Define field introformat to be added to newmodule + $table = new xmldb_table('newmodule'); + $field = new xmldb_field('introformat', XMLDB_TYPE_INTEGER, '4', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', + 'intro'); + + // Add field introformat + if (!$dbman->field_exists($table, $field)) { + $dbman->add_field($table, $field); + } + + // Once we reach this point, we can store the new version and consider the module + // upgraded to the version 2007040100 so the next time this block is skipped + upgrade_mod_savepoint(true, 2007040100, 'newmodule'); + } + + // Second example, some hours later, the same day 2007/04/01 + // two more fields and one index were added to install.xml (note the micro increment + // "01" in the last two digits of the version + if ($oldversion < 2007040101) { + + // Define field timecreated to be added to newmodule + $table = new xmldb_table('newmodule'); + $field = new xmldb_field('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', + 'introformat'); + + // Add field timecreated + if (!$dbman->field_exists($table, $field)) { + $dbman->add_field($table, $field); + } + + // Define field timemodified to be added to newmodule + $table = new xmldb_table('newmodule'); + $field = new xmldb_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', + 'timecreated'); + + // Add field timemodified + if (!$dbman->field_exists($table, $field)) { + $dbman->add_field($table, $field); + } + + // Define index course (not unique) to be added to newmodule + $table = new xmldb_table('newmodule'); + $index = new xmldb_index('courseindex', XMLDB_INDEX_NOTUNIQUE, array('course')); + + // Add index to course field + if (!$dbman->index_exists($table, $index)) { + $dbman->add_index($table, $index); + } + + // Another save point reached + upgrade_mod_savepoint(true, 2007040101, 'newmodule'); + } + + // Third example, the next day, 2007/04/02 (with the trailing 00), some actions were performed to install.php, + // related with the module + if ($oldversion < 2007040200) { + + // insert here code to perform some actions (same as in install.php) + + upgrade_mod_savepoint(true, 2007040200, 'newmodule'); + } + + // And that's all. Please, examine and understand the 3 example blocks above. Also + // it's interesting to look how other modules are using this script. Remember that + // the basic idea is to have "blocks" of code (each one being executed only once, + // when the module version (version.php) is updated. + + // Lines above (this included) MUST BE DELETED once you get the first version of + // yout module working. Each time you need to modify something in the module (DB + // related, you'll raise the version and add one upgrade block here. + + // Final return of upgrade result (true, all went good) to Moodle. + return true; +} |