From 248d6fd0a6ffcdc22386dc7bcf1d3dbfa0b65eb8 Mon Sep 17 00:00:00 2001 From: Christian Beeznest Date: Tue, 3 Dec 2024 18:20:24 -0500 Subject: [PATCH] Internal: Fix score calculation across reports and interfaces - refs BT#22096 --- public/main/inc/lib/TrackingCourseLog.php | 6 +----- public/main/inc/lib/exercise.lib.php | 4 +++- public/main/inc/lib/tracking.lib.php | 9 +++------ src/CourseBundle/Repository/CQuizRepository.php | 4 +++- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/public/main/inc/lib/TrackingCourseLog.php b/public/main/inc/lib/TrackingCourseLog.php index 636d6f9a19..e458ae55b6 100644 --- a/public/main/inc/lib/TrackingCourseLog.php +++ b/public/main/inc/lib/TrackingCourseLog.php @@ -664,11 +664,7 @@ class TrackingCourseLog $totalSurveys = 0; $totalExercises = ExerciseLib::get_all_exercises( $courseInfo, - $sessionId, - false, - null, - false, - 3 + $sessionId ); if (empty($sessionId)) { diff --git a/public/main/inc/lib/exercise.lib.php b/public/main/inc/lib/exercise.lib.php index f7a339b77b..c363f6cef2 100644 --- a/public/main/inc/lib/exercise.lib.php +++ b/public/main/inc/lib/exercise.lib.php @@ -3000,7 +3000,9 @@ EOT; $repo = Container::getQuizRepository(); - return $repo->findAllByCourse($course, $session, (string) $search, $active); + return $repo->findAllByCourse($course, $session, (string) $search, $active) + ->getQuery() + ->getResult(); } /** diff --git a/public/main/inc/lib/tracking.lib.php b/public/main/inc/lib/tracking.lib.php index 763af042d2..8373faa687 100644 --- a/public/main/inc/lib/tracking.lib.php +++ b/public/main/inc/lib/tracking.lib.php @@ -2640,11 +2640,6 @@ class Tracking $sessionId ) { $result = 0; - - if ($exercise_list instanceof \Doctrine\ORM\QueryBuilder) { - $exercise_list = $exercise_list->getQuery()->getResult(); - } - if (!empty($exercise_list) && (is_array($exercise_list) || $exercise_list instanceof \Countable)) { foreach ($exercise_list as $exercise_data) { $exercise_id = $exercise_data->getIid(); @@ -2652,7 +2647,8 @@ class Tracking $user_id, $exercise_id, $courseId, - $sessionId + $sessionId, + false ); if (!empty($best_attempt) && !empty($best_attempt['max_score'])) { @@ -2940,6 +2936,7 @@ class Tracking WHERE lp_id IN (".implode(',', $lp_list).") $condition_user1 + $sessionCondition GROUP BY lp_id, user_id"; //AND session_id = $sessionId diff --git a/src/CourseBundle/Repository/CQuizRepository.php b/src/CourseBundle/Repository/CQuizRepository.php index cf95c8a689..08f20b322d 100644 --- a/src/CourseBundle/Repository/CQuizRepository.php +++ b/src/CourseBundle/Repository/CQuizRepository.php @@ -40,7 +40,9 @@ final class CQuizRepository extends ResourceRepository implements ResourceWithLi $this->addCategoryQueryBuilder($categoryId, $qb); $this->addActiveQueryBuilder($active, $qb); $this->addNotDeletedQueryBuilder($qb); - $this->addTitleQueryBuilder($title, $qb); + if (!empty($title)) { + $this->addTitleQueryBuilder($title, $qb); + } return $qb; }