]> git.mjollnir.org Git - moodle.git/commitdiff
remove orphans records, if any, from hotpot tables, reduce size of "score" and "weigh...
authorgbateson <gbateson>
Fri, 28 Apr 2006 00:56:14 +0000 (00:56 +0000)
committergbateson <gbateson>
Fri, 28 Apr 2006 00:56:14 +0000 (00:56 +0000)
mod/hotpot/db/mysql.php
mod/hotpot/db/mysql.sql
mod/hotpot/db/postgres7.php
mod/hotpot/db/update_to_v2.php
mod/hotpot/version.php

index 746d3e37aa1f0dc3cdfb7dd577f9c3fb75f12de9..a867684f77bc2a65e2bc0b9e1c13d045d890404b 100644 (file)
@@ -2,49 +2,42 @@
 function hotpot_upgrade($oldversion) {\r
        global $CFG;\r
        $ok = true;\r
+\r
        if ($oldversion < 2004021400) {\r
                execute_sql(" ALTER TABLE `{$CFG->prefix}hotpot_events` ADD `starttime` INT(10) unsigned NOT NULL DEFAULT '0' AFTER `time`");\r
                execute_sql(" ALTER TABLE `{$CFG->prefix}hotpot_events` ADD `endtime` INT(10) unsigned NOT NULL DEFAULT '0' AFTER `time`");\r
        }\r
+\r
+       // set path to update functions\r
+       $update_to_v2 = "$CFG->dirroot/mod/hotpot/db/update_to_v2.php";\r
+\r
        // update from HotPot v1 to HotPot v2\r
        if ($oldversion < 2005031400) {\r
-               $ok = $ok && hotpot_get_update_to_v2();\r
+               require_once $update_to_v2;\r
                $ok = $ok && hotpot_update_to_v2_from_v1();\r
        }\r
-       // update to HotPot v2.1\r
        if ($oldversion < 2005090700) {\r
-               $ok = $ok && hotpot_get_update_to_v2();\r
+               require_once $update_to_v2;\r
                $ok = $ok && hotpot_update_to_v2_1();\r
        }\r
-       // update to from HotPot v2.1.0 or v2.1.1 to HotPot v2.1.2\r
        if ($oldversion > 2005031419 && $oldversion < 2005090702) {\r
-               $ok = $ok && hotpot_get_update_to_v2();\r
+               // update to from HotPot v2.1.0 or v2.1.1\r
+               require_once $update_to_v2;\r
                $ok = $ok && hotpot_update_to_v2_1_2();\r
        }\r
-       // update to HotPot v2.1.16\r
        if ($oldversion < 2006042103) {\r
-               $ok = $ok && hotpot_get_update_to_v2();\r
+               require_once $update_to_v2;\r
                $ok = $ok && hotpot_update_to_v2_1_16();\r
        }\r
-\r
-       // update to HotPot v2.1.17\r
        if ($oldversion < 2006042601) {\r
-               $ok = $ok && hotpot_get_update_to_v2();\r
+               require_once $update_to_v2;\r
                $ok = $ok && hotpot_update_to_v2_1_17();\r
        }\r
-       \r
-       return $ok;\r
-}\r
-function hotpot_get_update_to_v2() {\r
-       global $CFG;\r
-       $filepath = "$CFG->dirroot/mod/hotpot/db/update_to_v2.php";\r
-       if (file_exists($filepath) && is_readable($filepath)) {\r
-               include_once $filepath;\r
-               $ok = true;\r
-       } else {\r
-               $ok = false;\r
+       if ($oldversion < 2006042800) {\r
+               require_once $update_to_v2;\r
+               $ok = $ok && hotpot_update_to_v2_1_18();\r
        }\r
+\r
        return $ok;\r
 }\r
-\r
 ?>\r
index 635ba00b416f8e6871048c2955cb56610e7a0e5b..747c7d0d0067c2bed91a8f40355ce9ed4d278171 100644 (file)
@@ -77,8 +77,8 @@ CREATE TABLE prefix_hotpot_responses (
     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(8) unsigned NOT NULL default '0',
-    weighting smallint(8) unsigned NOT NULL default '0',
+    score smallint(6) unsigned NOT NULL default '0',
+    weighting smallint(6) unsigned NOT NULL default '0',
     correct varchar(255) NOT NULL default '',
     wrong varchar(255) NOT NULL default '',
     ignored varchar(255) NOT NULL default '',
index d50172947c6ff4349a9349638a06bc637d64a316..ac898bc32ff29e72fdc9158f38372f9db8ea1f49 100644 (file)
@@ -2,51 +2,44 @@
 function hotpot_upgrade($oldversion) {\r
        global $CFG;\r
        $ok = true;\r
+\r
+       // set path to update functions\r
+       $update_to_v2 = "$CFG->dirroot/mod/hotpot/db/update_to_v2.php";\r
+\r
        // update from HotPot v1 to HotPot v2\r
        if ($oldversion < 2005031400) {\r
-               $ok = $ok && hotpot_get_update_to_v2();\r
+               require_once $update_to_v2;\r
                $ok = $ok && hotpot_update_to_v2_from_v1();\r
        }\r
        // update to HotPot v2.1\r
        if ($oldversion < 2005090700) {\r
-               $ok = $ok && hotpot_get_update_to_v2();\r
+               require_once $update_to_v2;\r
                $ok = $ok && hotpot_update_to_v2_1();\r
        }\r
-       // update to from HotPot v2.1.0 or v2.1.1 to HotPot v2.1.2\r
        if ($oldversion > 2005031419 && $oldversion < 2005090702) {\r
-               $ok = $ok && hotpot_get_update_to_v2();\r
+               // update to from HotPot v2.1.0 or v2.1.1\r
+               require_once $update_to_v2;\r
                $ok = $ok && hotpot_update_to_v2_1_2();\r
        }\r
-       // update to HotPot v2.1.6\r
        if ($oldversion < 2005090706) {\r
-               $ok = $ok && hotpot_get_update_to_v2();\r
+               require_once $update_to_v2;\r
                $ok = $ok && hotpot_update_to_v2_1_6();\r
        }\r
-       // update to HotPot v2.1.8\r
        if ($oldversion < 2005090708) {\r
-               $ok = $ok && hotpot_get_update_to_v2();\r
+               require_once $update_to_v2;\r
                $ok = $ok && hotpot_update_to_v2_1_8();\r
        }\r
-       // update to HotPot v2.1.16\r
        if ($oldversion < 2006042103) {\r
-               $ok = $ok && hotpot_get_update_to_v2();\r
+               require_once $update_to_v2;\r
                $ok = $ok && hotpot_update_to_v2_1_16();\r
        }\r
-       // update to HotPot v2.1.17\r
        if ($oldversion < 2006042602) {\r
-               $ok = $ok && hotpot_get_update_to_v2();\r
+               require_once $update_to_v2;\r
                $ok = $ok && hotpot_update_to_v2_1_17();\r
        }\r
-       return $ok;\r
-}\r
-function hotpot_get_update_to_v2() {\r
-       global $CFG;\r
-       $filepath = "$CFG->dirroot/mod/hotpot/db/update_to_v2.php";\r
-       if (file_exists($filepath) && is_readable($filepath)) {\r
-               include_once $filepath;\r
-               $ok = true;\r
-       } else {\r
-               $ok = false;\r
+       if ($oldversion < 2006042800) {\r
+               require_once $update_to_v2;\r
+               $ok = $ok && hotpot_update_to_v2_1_18();\r
        }\r
        return $ok;\r
 }\r
index f0eb1ced3a01d055d3625c1583cfef52be4c1447..d6ce9a2a60d459ed0a6f8cd50542d7cb2bc194a4 100644 (file)
@@ -1,8 +1,54 @@
 <?PHP\r
+function hotpot_update_to_v2_1_18() {\r
+       $ok = true;\r
+\r
+       // remove all orphan records (there shouldn't be any, but if there are they can mess up the utfdbmigrate)\r
+\r
+       $ok = $ok && hotpot_remove_orphans('hotpot_attempts', 'hotpot', 'hotpot');\r
+       $ok = $ok && hotpot_remove_orphans('hotpot_questions', 'hotpot', 'hotpot');\r
+       $ok = $ok && hotpot_remove_orphans('hotpot_responses', 'attempt', 'hotpot_attempts');\r
+       $ok = $ok && hotpot_remove_orphans('hotpot_responses', 'question', 'hotpot_questions');\r
+       $ok = $ok && hotpot_remove_orphans('hotpot_details', 'attempt', 'hotpot_attempts');\r
+\r
+       return $ok;\r
+}\r
+function hotpot_remove_orphans($secondarytable, $secondarykeyfield, $primarytable, $primarykeyfield='id') {\r
+       global $CFG;\r
+       $ok = true;\r
+\r
+       // save and switch off SQL message echo\r
+       $debug = $db->debug;\r
+       $db->debug = false;\r
+\r
+       $records = get_records_sql("\r
+               SELECT \r
+                       t2.$secondarykeyfield, t2.$secondarykeyfield\r
+               FROM \r
+                       {$CFG->prefix}$secondarytable AS t2 LEFT JOIN {$CFG->prefix}$primarytable AS t1 \r
+                       ON (t2.$secondarykeyfield = t1.$primarykeyfield)\r
+               WHERE \r
+                       t1.$primarykeyfield IS NULL\r
+               ORDER BY \r
+                       t2.$secondarykeyfield\r
+       ");\r
+\r
+       // restore SQL message echo setting\r
+       $db->debug = $debug;\r
+\r
+       if ($records) {\r
+               $ids = implode(',', array_keys($records));\r
+               print 'removing '.count($ids).' orphan record(s) from {$CFG->prefix}$secondarytable (key=$secondarykeyfield) ...<br>';\r
+               $ok = $ok && execute_sql("DELETE FROM {$CFG->prefix}$secondarytable WHERE $secondarykeyfield IN ($ids)");\r
+       }\r
+\r
+       return $ok;\r
+}\r
 function hotpot_update_to_v2_1_17() {\r
        global $CFG;\r
        $ok = true;\r
 \r
+       // convert and disable null values on certain numeric fields\r
+\r
        $ok = $ok && hotpot_denull_int_field('hotpot_attempts', 'starttime', '10');\r
        $ok = $ok && hotpot_denull_int_field('hotpot_attempts', 'endtime', '10');\r
        $ok = $ok && hotpot_denull_int_field('hotpot_attempts', 'score', '6');\r
@@ -14,12 +60,11 @@ function hotpot_update_to_v2_1_17() {
        $ok = $ok && hotpot_denull_int_field('hotpot_questions', 'type', '4');\r
        $ok = $ok && hotpot_denull_int_field('hotpot_questions', 'text', '10');\r
 \r
-       $ok = $ok && hotpot_denull_int_field('hotpot_responses', 'weighting', '8');\r
-       $ok = $ok && hotpot_denull_int_field('hotpot_responses', 'score', '8');\r
+       $ok = $ok && hotpot_denull_int_field('hotpot_responses', 'weighting', '6');\r
+       $ok = $ok && hotpot_denull_int_field('hotpot_responses', 'score', '6');\r
        $ok = $ok && hotpot_denull_int_field('hotpot_responses', 'hints', '6');\r
        $ok = $ok && hotpot_denull_int_field('hotpot_responses', 'clues', '6');\r
        $ok = $ok && hotpot_denull_int_field('hotpot_responses', 'checks', '6');\r
-\r
        return $ok;\r
 }\r
 function hotpot_denull_int_field($table, $field, $size) {\r
index 17d7ccffd572af8eeac5661e2d4fa2f4855240a0..25644e89253cf856bb6bcd0ac9c3354e9e9815cb 100644 (file)
@@ -3,8 +3,8 @@
 ///  Code fragment to define the version of hotpot
 ///  This fragment is called by moodle_needs_upgrading() and /admin/index.php
 /////////////////////////////////////////////////////////////////////////////////
-$module->version  = 2006042602;  // release date of this version (see note below)
-$module->release  = 'v2.1.17';    // human-friendly version name (used in mod/hotpot/lib.php)
+$module->version  = 2006042800;  // 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
 //     YYYY : year