Skip to content

Commit c2a4c6e

Browse files
authored
Correcting version tag for file type questions (#709)
* Correcting version tag for file type questions. * New code checker requirement.
1 parent 5f1d0cf commit c2a4c6e

File tree

3 files changed

+33
-31
lines changed

3 files changed

+33
-31
lines changed

classes/privacy/provider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
3232
*/
3333
class provider implements
34-
\core_privacy\local\request\core_userlist_provider,
3534
\core_privacy\local\metadata\provider,
35+
\core_privacy\local\request\core_userlist_provider,
3636
\core_privacy\local\request\plugin\provider {
3737
/**
3838
* Returns meta data about this system.

db/upgrade.php

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,13 +1029,41 @@ function xmldb_questionnaire_upgrade($oldversion = 0) {
10291029
upgrade_mod_savepoint(true, 2022121601.01, 'questionnaire');
10301030
}
10311031

1032-
if ($oldversion < 2023101500) {
1032+
if ($oldversion < 2025041400.02) {
1033+
$table = new xmldb_table('questionnaire_question');
1034+
$index = new xmldb_index('quest_question_sididx', XMLDB_INDEX_NOTUNIQUE, ['surveyid', 'deleted']);
1035+
if ($dbman->index_exists($table, $index)) {
1036+
$dbman->drop_index($table, $index);
1037+
}
1038+
$field = new xmldb_field('deleted', XMLDB_TYPE_CHAR, '10', XMLDB_UNSIGNED, null, null, null, 'required');
1039+
if ($dbman->field_exists($table, $field)) {
1040+
$dbman->change_field_type($table, $field);
1041+
}
1042+
unset($field);
1043+
1044+
$field = new xmldb_field('deleted', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, 'required');
1045+
if ($dbman->field_exists($table, $field)) {
1046+
// Instead of updating all 'deleted' = 'y' to a timestamp (which could be slow on large tables),
1047+
// simply delete those records, as they were not restorable before this upgrade.
1048+
$DB->delete_records('questionnaire_question', ['deleted' => 'y']);
1049+
// Optionally, clear 'deleted' = 'n' to null if required by new logic.
1050+
$DB->set_field('questionnaire_question', 'deleted', null, ['deleted' => 'n']);
1051+
$dbman->change_field_type($table, $field);
1052+
}
1053+
unset($field);
1054+
// Questionnaire savepoint reached.
1055+
upgrade_mod_savepoint(true, 2025041400.02, 'questionnaire');
1056+
}
1057+
1058+
if ($oldversion < 2025041400.03) {
10331059
$questiontype = new stdClass();
10341060
$questiontype->typeid = 12;
10351061
$questiontype->type = 'File';
10361062
$questiontype->has_choices = 'n';
10371063
$questiontype->response_table = 'response_file';
1038-
$id = $DB->insert_record('questionnaire_question_type', $questiontype);
1064+
if (!$DB->record_exists('questionnaire_question_type', ['typeid' => 12])) {
1065+
$id = $DB->insert_record('questionnaire_question_type', $questiontype);
1066+
}
10391067

10401068
// Define table questionnaire_response_file to be created.
10411069
$table = new xmldb_table('questionnaire_response_file');
@@ -1059,33 +1087,7 @@ function xmldb_questionnaire_upgrade($oldversion = 0) {
10591087
}
10601088

10611089
// Questionnaire savepoint reached.
1062-
upgrade_mod_savepoint(true, 2023101500, 'questionnaire');
1063-
}
1064-
1065-
if ($oldversion < 2025041400.02) {
1066-
$table = new xmldb_table('questionnaire_question');
1067-
$index = new xmldb_index('quest_question_sididx', XMLDB_INDEX_NOTUNIQUE, ['surveyid', 'deleted']);
1068-
if ($dbman->index_exists($table, $index)) {
1069-
$dbman->drop_index($table, $index);
1070-
}
1071-
$field = new xmldb_field('deleted', XMLDB_TYPE_CHAR, '10', XMLDB_UNSIGNED, null, null, null, 'required');
1072-
if ($dbman->field_exists($table, $field)) {
1073-
$dbman->change_field_type($table, $field);
1074-
}
1075-
unset($field);
1076-
1077-
$field = new xmldb_field('deleted', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, 'required');
1078-
if ($dbman->field_exists($table, $field)) {
1079-
// Instead of updating all 'deleted' = 'y' to a timestamp (which could be slow on large tables),
1080-
// simply delete those records, as they were not restorable before this upgrade.
1081-
$DB->delete_records('questionnaire_question', ['deleted' => 'y']);
1082-
// Optionally, clear 'deleted' = 'n' to null if required by new logic.
1083-
$DB->set_field('questionnaire_question', 'deleted', null, ['deleted' => 'n']);
1084-
$dbman->change_field_type($table, $field);
1085-
}
1086-
unset($field);
1087-
// Questionnaire savepoint reached.
1088-
upgrade_mod_savepoint(true, 2025041400.02, 'questionnaire');
1090+
upgrade_mod_savepoint(true, 2025041400.03, 'questionnaire');
10891091
}
10901092

10911093
return true;

version.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
defined('MOODLE_INTERNAL') || die();
2727

28-
$plugin->version = 2025041400.02;
28+
$plugin->version = 2025041400.03;
2929
$plugin->requires = 2025041400.00; // Moodle 5.0 and up.
3030

3131
$plugin->component = 'mod_questionnaire';

0 commit comments

Comments
 (0)