From 2a1a1860a4573aa157df4256bcd80eb292f42cff Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Wed, 11 Nov 2026 11:17:08 +0100 Subject: [PATCH] fix(submission): keep the text of an answer "Other" as typed Storing an answer "Other" removes only the prefix system-other-answer: at its start, as the submit view does, instead of every occurrence of it in the text. Assisted-by: Claude Code:claude-opus-5-5 Signed-off-by: Andy Scherzinger --- lib/Controller/ApiController.php | 2 +- tests/Unit/Controller/ApiControllerTest.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/Controller/ApiController.php b/lib/Controller/ApiController.php index 74a7c1011..8162e70f0 100644 --- a/lib/Controller/ApiController.php +++ b/lib/Controller/ApiController.php @@ -1911,7 +1911,7 @@ private function storeAnswersForQuestion(Form $form, $submissionId, array $quest if ($optionIndex !== false) { $answerText = $question['options'][$optionIndex]['text']; } elseif (!empty($question['extraSettings']['allowOtherAnswer']) && str_starts_with($answer, Constants::QUESTION_EXTRASETTINGS_OTHER_PREFIX)) { - $answerText = str_replace(Constants::QUESTION_EXTRASETTINGS_OTHER_PREFIX, '', $answer); + $answerText = substr($answer, strlen(Constants::QUESTION_EXTRASETTINGS_OTHER_PREFIX)); } } elseif ($question['type'] === Constants::ANSWER_TYPE_FILE) { $uploadedFile = $this->uploadedFileMapper->getForSubmission( diff --git a/tests/Unit/Controller/ApiControllerTest.php b/tests/Unit/Controller/ApiControllerTest.php index 398ed263a..c2f0355f7 100644 --- a/tests/Unit/Controller/ApiControllerTest.php +++ b/tests/Unit/Controller/ApiControllerTest.php @@ -873,7 +873,7 @@ public function testNewSubmission_answers() { $answers = [ 1 => ['3'], - 2 => ['2', '5', Constants::QUESTION_EXTRASETTINGS_OTHER_PREFIX . 'other answer'], + 2 => ['2', '5', Constants::QUESTION_EXTRASETTINGS_OTHER_PREFIX . 'other answer ' . Constants::QUESTION_EXTRASETTINGS_OTHER_PREFIX], 3 => ['short anwer'], 4 => [['uploadedFileId' => 100, 'uploadToken' => 'valid-upload-token']], 5 => ['ignore unknown question'], @@ -912,7 +912,7 @@ public function testNewSubmission_answers() { } break; case 2: - if (!in_array($answer->getText(), ['other answer', 'test id 2'])) { + if (!in_array($answer->getText(), ['other answer ' . Constants::QUESTION_EXTRASETTINGS_OTHER_PREFIX, 'test id 2'], true)) { return false; } break;