diff --git a/lib/db/install.xml b/lib/db/install.xml index e5d4b8767ba..dda0aaa082a 100644 --- a/lib/db/install.xml +++ b/lib/db/install.xml @@ -1,5 +1,5 @@ - @@ -2264,39 +2264,56 @@ - - - - - - - - - - - -
- +
- - - - + + + + + + + + + + + + +
+ + + + + + + +
- +
- - - + + - + + + +
+ + + + + + + + + +
diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index 58fecf4c223..b72731a2508 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -2555,93 +2555,104 @@ WHERE gradeitemid IS NOT NULL AND grademax IS NOT NULL"); upgrade_main_savepoint($result, 2009090800); } - if ($result && $oldversion < 2009090803) { - - /// Define table external_functions to be dropped - $table = new xmldb_table('external_functions'); - - /// Conditionally launch drop table for external_functions - if ($dbman->table_exists($table)) { - $dbman->drop_table($table); + if ($result && $oldversion < 2009091300) { + // drop all previous tables defined during the dev phase + $dropold = array('external_services_functions', 'external_services', 'external_functions'); + foreach ($dropold as $tablename) { + $table = new xmldb_table($tablename); + if ($dbman->table_exists($table)) { + $dbman->drop_table($table); + } } + upgrade_main_savepoint($result, 2009091300); + } - - - /// Define table external_services to be dropped - $table = new xmldb_table('external_services'); - - /// Conditionally launch drop table for external_services - if ($dbman->table_exists($table)) { - $dbman->drop_table($table); - } - - - /// Define table external_services_functions to be dropped - $table = new xmldb_table('external_services_functions'); - - /// Conditionally launch drop table for external_services_functions - if ($dbman->table_exists($table)) { - $dbman->drop_table($table); - } - - + if ($result && $oldversion < 2009091301) { /// Define table external_functions to be created $table = new xmldb_table('external_functions'); /// Adding fields to table external_functions $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); + $table->add_field('name', XMLDB_TYPE_CHAR, '200', null, XMLDB_NOTNULL, null, null); + $table->add_field('classname', XMLDB_TYPE_CHAR, '100', null, XMLDB_NOTNULL, null, null); + $table->add_field('methodname', XMLDB_TYPE_CHAR, '100', null, XMLDB_NOTNULL, null, null); + $table->add_field('classpath', XMLDB_TYPE_CHAR, '255', null, null, null, null); $table->add_field('component', XMLDB_TYPE_CHAR, '100', null, XMLDB_NOTNULL, null, null); - $table->add_field('name', XMLDB_TYPE_CHAR, '150', null, XMLDB_NOTNULL, null, null); - $table->add_field('phpfile', XMLDB_TYPE_CHAR, '255', null, null, null, null); - $table->add_field('contextrestriction', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, null, null, null); /// Adding keys to table external_functions $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); - /// Conditionally launch create table for external_functions - if (!$dbman->table_exists($table)) { - $dbman->create_table($table); - } + /// Adding indexes to table external_functions + $table->add_index('name', XMLDB_INDEX_UNIQUE, array('name')); + /// Launch create table for external_functions + $dbman->create_table($table); + /// Main savepoint reached + upgrade_main_savepoint($result, 2009091301); + } + + if ($result && $oldversion < 2009091302) { /// Define table external_services to be created $table = new xmldb_table('external_services'); /// Adding fields to table external_services $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); - $table->add_field('name', XMLDB_TYPE_CHAR, '150', null, XMLDB_NOTNULL, null, null); - $table->add_field('enabled', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, null); - $table->add_field('custom', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, null); - $table->add_field('customname', XMLDB_TYPE_CHAR, '150', null, null, null, null); + $table->add_field('name', XMLDB_TYPE_CHAR, '200', null, XMLDB_NOTNULL, null, null); + $table->add_field('enabled', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null); + $table->add_field('requiredcapability', XMLDB_TYPE_CHAR, '150', null, null, null, null); + $table->add_field('restrictedusers', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null); + $table->add_field('component', XMLDB_TYPE_CHAR, '100', null, null, null, null); /// Adding keys to table external_services $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); - /// Conditionally launch create table for external_services - if (!$dbman->table_exists($table)) { - $dbman->create_table($table); - } + /// Launch create table for external_services + $dbman->create_table($table); + /// Main savepoint reached + upgrade_main_savepoint($result, 2009091302); + } + if ($result && $oldversion < 2009091303) { /// Define table external_services_functions to be created $table = new xmldb_table('external_services_functions'); /// Adding fields to table external_services_functions $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); $table->add_field('externalserviceid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null); - $table->add_field('externalfunctionid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null); - $table->add_field('enabled', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, null); + $table->add_field('functionname', XMLDB_TYPE_CHAR, '200', null, XMLDB_NOTNULL, null, null); /// Adding keys to table external_services_functions $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); + $table->add_key('externalserviceid', XMLDB_KEY_FOREIGN, array('externalserviceid'), 'external_services', array('id')); - /// Conditionally launch create table for external_services_functions - if (!$dbman->table_exists($table)) { - $dbman->create_table($table); - } + /// Launch create table for external_services_functions + $dbman->create_table($table); /// Main savepoint reached - upgrade_main_savepoint($result, 2009090803); + upgrade_main_savepoint($result, 2009091303); + } + + if ($result && $oldversion < 2009091304) { + /// Define table external_services_users to be created + $table = new xmldb_table('external_services_users'); + + /// Adding fields to table external_services_users + $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); + $table->add_field('externalserviceid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null); + $table->add_field('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null); + + /// Adding keys to table external_services_users + $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); + $table->add_key('externalserviceid', XMLDB_KEY_FOREIGN, array('externalserviceid'), 'external_services', array('id')); + $table->add_key('userid', XMLDB_KEY_FOREIGN, array('userid'), 'user', array('id')); + + /// Launch create table for external_services_users + $dbman->create_table($table); + + /// Main savepoint reached + upgrade_main_savepoint($result, 2009091304); } return $result; diff --git a/version.php b/version.php index 2e01e0dfcfc..0688bd00d09 100644 --- a/version.php +++ b/version.php @@ -6,7 +6,7 @@ // This is compared against the values stored in the database to determine // whether upgrades should be performed (see lib/db/*.php) - $version = 2009090803; // YYYYMMDD = date of the last version bump + $version = 2009091305; // YYYYMMDD = date of the last version bump // XX = daily increments $release = '2.0 dev (Build: 20090913)'; // Human-friendly version name