diff --git a/app/controllers/questionnaire.php b/app/controllers/questionnaire.php index 66a4e0b6ad58c3fbc76bc063f41b7e49adc5c7c9..d0766ed132dd2e602fb12423e17606e9ec16323d 100644 --- a/app/controllers/questionnaire.php +++ b/app/controllers/questionnaire.php @@ -148,7 +148,7 @@ class QuestionnaireController extends AuthenticatedController : null; $this->questionnaire['user_id'] = User::findCurrent()->id; - $questions_data = Request::getArray('questions_data'); + $questions_data = json_decode(Request::get('questions_data'), true); $questions = []; foreach ($questions_data as $index => $question_data) { $class = $question_data['questiontype']; diff --git a/db/migrations/5.3.23_fix_questionnaire_questiondata.php b/db/migrations/5.3.23_fix_questionnaire_questiondata.php new file mode 100644 index 0000000000000000000000000000000000000000..be115fc0a924ab91e1eff272933dddf08f56f6c5 --- /dev/null +++ b/db/migrations/5.3.23_fix_questionnaire_questiondata.php @@ -0,0 +1,18 @@ +<?php + +class FixQuestionnaireQuestiondata extends Migration +{ + public function description() + { + return 'fix invalid boolean values in questionnaire_questions'; + } + + public function up() + { + DBManager::get()->exec(" + UPDATE questionnaire_questions + SET questiondata = REPLACE(questiondata, ':\"false\"', ':false') + WHERE questiondata LIKE '%:\"false\"%' + "); + } +} diff --git a/resources/assets/javascripts/lib/questionnaire.js b/resources/assets/javascripts/lib/questionnaire.js index 2bca8c628aa1c0b42ccf6f1d3cfdf93c670afe14..08d3a7565d7292877daf7a2c4c74d76b4ebb6538 100644 --- a/resources/assets/javascripts/lib/questionnaire.js +++ b/resources/assets/javascripts/lib/questionnaire.js @@ -86,7 +86,7 @@ const Questionnaire = { } $.post(STUDIP.URLHelper.getURL('dispatch.php/questionnaire/store/' + (this.data.id || '')), { questionnaire: data, - questions_data: questions, + questions_data: JSON.stringify(questions), range_type: this.range_type, range_id: this.range_id }).done(() => {