id int(10) unsigned NOT NULL auto_increment,
attempt int(10) unsigned NOT NULL default '0',
question int(10) unsigned NOT NULL default '0',
- score smallint(6) unsigned NOT NULL default '0',
- weighting smallint(6) unsigned NOT NULL default '0',
+ score smallint(6) NOT NULL default '0',
+ weighting smallint(6) NOT NULL default '0',
correct varchar(255) NOT NULL default '',
wrong varchar(255) NOT NULL default '',
ignored varchar(255) NOT NULL default '',
$ok = $ok && hotpot_remove_orphans('hotpot_responses', 'question', 'hotpot_questions');
$ok = $ok && hotpot_remove_orphans('hotpot_details', 'attempt', 'hotpot_attempts');
+ // allow negative weighting and scores
+
+ $ok = $ok && hotpot_denull_int_field('hotpot_responses', 'weighting', '6', false);
+ $ok = $ok && hotpot_denull_int_field('hotpot_responses', 'score', '6', false);
+
return $ok;
}
function hotpot_remove_orphans($secondarytable, $secondarykeyfield, $primarytable, $primarykeyfield='id') {
$ok = $ok && hotpot_denull_int_field('hotpot_questions', 'type', '4');
$ok = $ok && hotpot_denull_int_field('hotpot_questions', 'text', '10');
- $ok = $ok && hotpot_denull_int_field('hotpot_responses', 'weighting', '6');
- $ok = $ok && hotpot_denull_int_field('hotpot_responses', 'score', '6');
+ $ok = $ok && hotpot_denull_int_field('hotpot_responses', 'weighting', '6', false);
+ $ok = $ok && hotpot_denull_int_field('hotpot_responses', 'score', '6', false);
$ok = $ok && hotpot_denull_int_field('hotpot_responses', 'hints', '6');
$ok = $ok && hotpot_denull_int_field('hotpot_responses', 'clues', '6');
$ok = $ok && hotpot_denull_int_field('hotpot_responses', 'checks', '6');
return $ok;
}
-function hotpot_denull_int_field($table, $field, $size) {
+function hotpot_denull_int_field($table, $field, $size, $unsigned=true) {
global $CFG;
$ok = true;
$ok = $ok && execute_sql("UPDATE {$CFG->prefix}$table SET $field=0 WHERE $field IS NULL", false);
- $ok = $ok && hotpot_db_update_field_type($table, $field, $field, 'INTEGER', $size, 'UNSIGNED', 'NOT NULL', 0);
+ $ok = $ok && hotpot_db_update_field_type($table, $field, $field, 'INTEGER', $size, $unsigned, 'NOT NULL', 0);
return $ok;
}
/// Code fragment to define the version of hotpot
/// This fragment is called by moodle_needs_upgrading() and /admin/index.php
/////////////////////////////////////////////////////////////////////////////////
-$module->version = 2006042802; // release date of this version (see note below)
+$module->version = 2006042803; // release date of this version (see note below)
$module->release = 'v2.1.18'; // human-friendly version name (used in mod/hotpot/lib.php)
$module->cron = 0; // period for cron to check this module (secs)
// interpretation of YYYYMMDDXY version numbers