aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorElmar Ludwig <elmar.ludwig@uni-osnabrueck.de>2025-06-19 10:36:38 +0200
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2025-06-20 15:44:21 +0200
commit01566b2cf9ffdc7c79911f24b94b509468568534 (patch)
tree283f4e6eae26385bcd96ff0adad80bbd68e598a1 /lib
parent8f302c13e33fbb9f2a9ad21df588166a31b86f30 (diff)
don't store and count multiple answers for the same user, fixes #3802
Closes #3802 Merge request studip/studip!4265
Diffstat (limited to 'lib')
-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 f29a2de..e6f81c6 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 fc6efc7..382cb75 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)