database module MDL-24470 change 'notification' column ('data' table) default and NOT NULL. Update code for restore operation to support old backup with NULL value into 'notification'.

This commit is contained in:
jerome mouneyrac
2010-10-05 01:56:10 +00:00
parent 00067c196e
commit a3ed90bb6c
4 changed files with 23 additions and 3 deletions
+2 -2
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<XMLDB PATH="mod/data/db" VERSION="20080226" COMMENT="XMLDB file for Moodle mod/data"
<XMLDB PATH="mod/data/db" VERSION="20101001" COMMENT="XMLDB file for Moodle mod/data"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd"
>
@@ -35,7 +35,7 @@
<FIELD NAME="defaultsort" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="assessed" NEXT="defaultsortdir"/>
<FIELD NAME="defaultsortdir" TYPE="int" LENGTH="4" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="defaultsort" NEXT="editany"/>
<FIELD NAME="editany" TYPE="int" LENGTH="4" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="defaultsortdir" NEXT="notification"/>
<FIELD NAME="notification" TYPE="int" LENGTH="10" NOTNULL="false" UNSIGNED="false" SEQUENCE="false" ENUM="false" COMMENT="Notify people when things change" PREVIOUS="editany"/>
<FIELD NAME="notification" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" ENUM="false" COMMENT="Notify people when things change" PREVIOUS="editany"/>
</FIELDS>
<KEYS>
<KEY NAME="primary" TYPE="primary" FIELDS="id"/>
+14
View File
@@ -132,6 +132,20 @@ function xmldb_data_upgrade($oldversion=0) {
}
}
if ($result && $oldversion < 2007101515) {
// Upgrade all the data->notification currently being
// NULL to 0
$sql = "UPDATE {$CFG->prefix}data SET notification=0 WHERE notification IS NULL";
$result = execute_sql($sql);
$table = new XMLDBTable('data');
$field = new XMLDBField('notification');
// First step, Set NOT NULL
$field->setAttributes(XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0', 'editany');
$result = $result && change_field_notnull($table, $field);
// Second step, Set default to 0
$result = $result && change_field_default($table, $field);
}
return $result;
}
+6
View File
@@ -97,6 +97,12 @@ function data_restore_mods($mod,$restore) {
$database->defaultsortdir = backup_todb($info['MOD']['#']['DEFAULTSORTDIR']['0']['#']);
$database->editany = backup_todb($info['MOD']['#']['EDITANY']['0']['#']);
$database->notification = backup_todb($info['MOD']['#']['NOTIFICATION']['0']['#']);
//fix related to MDL-24470: if someone restore a backup previous to this fix it would fail
//if notification = NULL as the column can not be NULL anymore
if (empty($database->notification)) {
$database->notification = 0;
}
// We have to recode the scale field if it's <0 (positive is a grade, not a scale)
if ($database->scale < 0) {
+1 -1
View File
@@ -5,7 +5,7 @@
// This fragment is called by /admin/index.php
////////////////////////////////////////////////////////////////////////////////
$module->version = 2007101514;
$module->version = 2007101515;
$module->requires = 2007101509; // Requires this Moodle version
$module->cron = 60;