aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElmar Ludwig <elmar.ludwig@uni-osnabrueck.de>2025-06-19 10:36:38 +0200
committerElmar Ludwig <elmar.ludwig@uni-osnabrueck.de>2025-06-19 10:36:38 +0200
commitfafe09daf59e8a2138af7c895da62b23735ee8ab (patch)
tree8aea1de7e53e797251bf69584c2903bd365d0974
parentc579bfcf3591eb538eb11d90b06383c0be09c00f (diff)
don't store and count multiple answers for the same user, fixes #3802
Closes #3802 Merge request studip/studip!4265
-rw-r--r--lib/models/Questionnaire.php7
-rw-r--r--lib/models/QuestionnaireInfo.php2
2 files changed, 3 insertions, 6 deletions
diff --git a/lib/models/Questionnaire.php b/lib/models/Questionnaire.php
index f8cc703..3135dbd 100644
--- a/lib/models/Questionnaire.php
+++ b/lib/models/Questionnaire.php
@@ -50,13 +50,10 @@ class Questionnaire extends SimpleORMap implements PrivacyObject
public function countAnswers()
{
$statement = DBManager::get()->prepare("
- SELECT COUNT(*) as `count_answers`
+ SELECT COUNT(DISTINCT user_id)
FROM questionnaire_answers
- INNER JOIN questionnaire_questions ON (questionnaire_answers.question_id = questionnaire_questions.question_id)
+ JOIN questionnaire_questions USING (question_id)
WHERE questionnaire_id = :questionnaire_id
- GROUP BY questionnaire_answers.question_id
- ORDER BY `count_answers` DESC
- LIMIT 1
");
$statement->execute([
'questionnaire_id' => $this->getId()
diff --git a/lib/models/QuestionnaireInfo.php b/lib/models/QuestionnaireInfo.php
index 185ac68..f0b277a 100644
--- a/lib/models/QuestionnaireInfo.php
+++ b/lib/models/QuestionnaireInfo.php
@@ -58,7 +58,7 @@ class QuestionnaireInfo extends QuestionnaireQuestion implements QuestionType
public function createAnswer()
{
- return new QuestionnaireAnswer(); // Unused but necessary
+ return $this->getMyAnswer();
}
public function getUserIdsOfFilteredAnswer($answer_option)