diff --git a/application/controllers/QuestionAdministrationController.php b/application/controllers/QuestionAdministrationController.php index 3f67fe4c4a0..ad59c549a0a 100644 --- a/application/controllers/QuestionAdministrationController.php +++ b/application/controllers/QuestionAdministrationController.php @@ -452,12 +452,7 @@ public function actionSaveQuestionData() } } else { // TODO: Update subquestions. - if ($question->questionType->answerscales > 0) { - $this->updateAnswerOptions( - $question, - $request->getPost('answeroptions') - ); - } + // TODO: Update answer options. } $transaction->commit(); @@ -2833,77 +2828,38 @@ private function storeAnswerOptions($question, $answerOptionsArray) } } } - return true; - } - - /** - * Like storeAnswerOptions, but adapted for when survey is active (not allowed to change codes). - * - * @param Question $question - * @param array $answerOptionsArray - * @return void - * @throws CHttpException - */ - private function updateAnswerOptions(Question $question, array $answerOptionsArray) - { - $i = 0; - foreach ($answerOptionsArray as $answerOptionId => $answerOptionArray) { - foreach ($answerOptionArray as $scaleId => $data) { - if (!isset($data['code'])) { - throw new Exception( - 'code is not set in data: ' . json_encode($data) - ); - } - $answer = Answer::model()->findByAttributes( - [ - 'qid' => $question->qid, - 'code' => $data['code'] - ] - ); - if (empty($answer)) { - throw new Exception( - 'Found no answer option with code ' . $data['code'] - ); - } - $answer->sortorder = $i; - $i++; - if (isset($data['assessment'])) { - $answer->assessment_value = $data['assessment']; - } else { - $answer->assessment_value = 0; + /* + foreach ($dataSet as $aAnswerOptions) { + foreach ($aAnswerOptions as $iScaleId => $aAnswerOptionDataSet) { + $aAnswerOptionDataSet['sortorder'] = (int)$aAnswerOptionDataSet['sortorder']; + $oAnswer = Answer::model()->findByPk($aAnswerOptionDataSet['aid']); + if ($oAnswer == null || $isCopyProcess) { + $oAnswer = new Answer(); + $oAnswer->qid = $question->qid; + unset($aAnswerOptionDataSet['aid']); + unset($aAnswerOptionDataSet['qid']); } - $answer->scale_id = $scaleId; - if (!$answer->update()) { + + $codeIsEmpty = (!isset($aAnswerOptionDataSet['code'])); + if ($codeIsEmpty) { throw new CHttpException( 500, - gT("Could not save answer option") . PHP_EOL - . print_r($answer->getErrors(), true) + "Answer option code cannot be empty" ); } - $answer->refresh(); - foreach ($data['answeroptionl10n'] as $lang => $answerOptionText) { - $l10n = AnswerL10n::model()->findByAttributes( - [ - 'aid' => $answer->aid, - 'language' => $lang - ] + $oAnswer->setAttributes($aAnswerOptionDataSet); + $answerSaved = $oAnswer->save(); + if (!$answerSaved) { + throw new CHttpException( + 500, + "Answer option couldn't be saved. Error: " + . print_r($oAnswer->getErrors(), true) ); - if (empty($l10n)) { - $l10n = new AnswerL10n(); - } - $l10n->aid = $answer->aid; - $l10n->language = $lang; - $l10n->answer = $answerOptionText; - if (!$l10n->save()) { - throw new CHttpException( - 500, - gT("Could not save answer option") . PHP_EOL - . print_r($l10n->getErrors(), true) - ); - } } + $this->applyAnswerI10N($oAnswer, $question, $aAnswerOptionDataSet); } } + */ return true; } diff --git a/application/views/questionAdministration/answerOptionRow.twig b/application/views/questionAdministration/answerOptionRow.twig index 620f2938c64..836b7d529dd 100644 --- a/application/views/questionAdministration/answerOptionRow.twig +++ b/application/views/questionAdministration/answerOptionRow.twig @@ -47,20 +47,17 @@ /> {% endif %} - + {# If survey is not active, and it's not the first language : no move button, code not editable #} {% else %}