From eee1ed4d7cd8227c7d8037e6278ea012f7a89b71 Mon Sep 17 00:00:00 2001
From: Luke Hudson <luke@catalyst.net.nz>
Date: Fri, 2 May 2008 16:16:12 +1200
Subject: [PATCH] mod/questionnaire/: Fixes ENUM case change for PostgreSQL

---
 mod/questionnaire/db/upgrade.php |   39 +++++++++++++++++++++++++++++--------
 1 files changed, 30 insertions(+), 9 deletions(-)

diff --git a/mod/questionnaire/db/upgrade.php b/mod/questionnaire/db/upgrade.php
index 88d2c0d..1a5fbd4 100644
--- a/mod/questionnaire/db/upgrade.php
+++ b/mod/questionnaire/db/upgrade.php
@@ -16,17 +16,26 @@ function xmldb_questionnaire_upgrade($oldversion=0) {
         $table = new XMLDBTable('questionnaire_question');
 
         $field = new XMLDBField('required');
-        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, XMLDB_ENUM, array('y', 'n'), '\'n\'');
+        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
+        $result &= execute_sql_arr($table->getModifyEnumSQL($CFG->dbtype, $CFG->prefix, $field, false), false);
+        $result &= execute_sql("UPDATE {$CFG->prefix}questionnaire_question SET required = LOWER(required)");
+        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, XMLDB_ENUM, $enumvals, '\'n\'');
         $result &= execute_sql_arr($table->getModifyEnumSQL($CFG->dbtype, $CFG->prefix, $field, false), false);
         unset($field);
 
         $field = new XMLDBField('deleted');
-        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, XMLDB_ENUM, array('y', 'n'), '\'n\'');
+        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
+        $result &= execute_sql_arr($table->getModifyEnumSQL($CFG->dbtype, $CFG->prefix, $field, false), false);
+        $result &= execute_sql("UPDATE {$CFG->prefix}questionnaire_question SET deleted = LOWER(deleted)");
+        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, XMLDB_ENUM, $enumvals, '\'n\'');
         $result &= execute_sql_arr($table->getModifyEnumSQL($CFG->dbtype, $CFG->prefix, $field, false), false);
         unset($field);
 
         $field = new XMLDBField('public');
-        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, XMLDB_ENUM, array('y', 'n'), '\'y\'');
+        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
+        $result &= execute_sql_arr($table->getModifyEnumSQL($CFG->dbtype, $CFG->prefix, $field, false), false);
+        $result &= execute_sql("UPDATE {$CFG->prefix}questionnaire_question SET public = LOWER(public)");
+        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, XMLDB_ENUM, $enumvals, '\'y\'');
         $result &= execute_sql_arr($table->getModifyEnumSQL($CFG->dbtype, $CFG->prefix, $field, false), false);
         unset($field);
 
@@ -36,7 +45,10 @@ function xmldb_questionnaire_upgrade($oldversion=0) {
         $table = new XMLDBTable('questionnaire_question_type');
 
         $field = new XMLDBField('has_choices');
-        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, XMLDB_ENUM, array('y', 'n'), '\'y\'');
+        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
+        $result &= execute_sql_arr($table->getModifyEnumSQL($CFG->dbtype, $CFG->prefix, $field, false), false);
+        $result &= execute_sql("UPDATE {$CFG->prefix}questionnaire_question_type SET has_choices = LOWER(has_choices)");
+        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, XMLDB_ENUM, $enumvals, '\'y\'');
         $result &= execute_sql_arr($table->getModifyEnumSQL($CFG->dbtype, $CFG->prefix, $field, false), false);
         unset($field);
 
@@ -46,7 +58,10 @@ function xmldb_questionnaire_upgrade($oldversion=0) {
         $table = new XMLDBTable('questionnaire_response');
 
         $field = new XMLDBField('complete');
-        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, XMLDB_ENUM, array('y', 'n'), '\'n\'');
+        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
+        $result &= execute_sql_arr($table->getModifyEnumSQL($CFG->dbtype, $CFG->prefix, $field, false), false);
+        $result &= execute_sql("UPDATE {$CFG->prefix}questionnaire_response SET complete = LOWER(complete)");
+        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, XMLDB_ENUM, $enumvals, '\'n\'');
         $result &= execute_sql_arr($table->getModifyEnumSQL($CFG->dbtype, $CFG->prefix, $field, false), false);
         unset($field);
 
@@ -56,7 +71,10 @@ function xmldb_questionnaire_upgrade($oldversion=0) {
         $table = new XMLDBTable('questionnaire_response_bool');
 
         $field = new XMLDBField('choice_id');
-        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, XMLDB_ENUM, array('y', 'n'), '\'y\'');
+        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
+        $result &= execute_sql_arr($table->getModifyEnumSQL($CFG->dbtype, $CFG->prefix, $field, false), false);
+        $result &= execute_sql("UPDATE {$CFG->prefix}questionnaire_response_bool SET choice_id = LOWER(choice_id)");
+        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, XMLDB_ENUM, $enumvals, '\'y\'');
         $result &= execute_sql_arr($table->getModifyEnumSQL($CFG->dbtype, $CFG->prefix, $field, false), false);
         unset($field);
 
@@ -66,7 +84,10 @@ function xmldb_questionnaire_upgrade($oldversion=0) {
         $table = new XMLDBTable('questionnaire_survey');
 
         $field = new XMLDBField('public');
-        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, XMLDB_ENUM, array('y', 'n'), '\'y\'');
+        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
+        $result &= execute_sql_arr($table->getModifyEnumSQL($CFG->dbtype, $CFG->prefix, $field, false), false);
+        $result &= execute_sql("UPDATE {$CFG->prefix}questionnaire_survey SET public = LOWER(public)");
+        $field->setAttributes('char', '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, XMLDB_ENUM, $enumvals, '\'y\'');
         $result &= execute_sql_arr($table->getModifyEnumSQL($CFG->dbtype, $CFG->prefix, $field, false), false);
         unset($field);
 
@@ -135,7 +156,7 @@ function xmldb_questionnaire_upgrade($oldversion=0) {
             while ($recstart < $numrecs) {
                 if ($records = get_records('questionnaire_question_type', '', '', '', '*', $recstart, $recstoget)) {
                     foreach ($records as $record) {
-                        $status &= set_field('questionnaire_question_type', 'typeid', $record->id, 'id', $record->id);
+                        $status &= ( set_field('questionnaire_question_type', 'typeid', $record->id, 'id', $record->id) !== false );
                     }
                 }
                 $recstart += $recstoget;
@@ -144,4 +165,4 @@ function xmldb_questionnaire_upgrade($oldversion=0) {
     
         return $status;
     }
-?>
\ No newline at end of file
+?>
-- 
1.5.1.1.3686.gce85b

