From b639fac1e5781bd1d5bc5eb57e6f841c908cfc5a Mon Sep 17 00:00:00 2001 From: christianbeeznst Date: Mon, 29 Jan 2024 12:58:40 -0500 Subject: [PATCH] Reporting: Fix count of downloaded documents - refs #4861 --- public/main/inc/lib/tracking.lib.php | 40 +++++++++---------- public/main/my_space/myStudents.php | 2 +- .../default/my_space/user_details.html.twig | 4 +- 3 files changed, 21 insertions(+), 25 deletions(-) diff --git a/public/main/inc/lib/tracking.lib.php b/public/main/inc/lib/tracking.lib.php index 826b553b70..5940c59abc 100644 --- a/public/main/inc/lib/tracking.lib.php +++ b/public/main/inc/lib/tracking.lib.php @@ -6,6 +6,7 @@ use Chamilo\CoreBundle\Entity\TrackEAttemptQualify; use Chamilo\CoreBundle\Entity\Course; use Chamilo\CoreBundle\Entity\ExtraField as EntityExtraField; use Chamilo\CoreBundle\Entity\Session as SessionEntity; +use Chamilo\CoreBundle\Entity\TrackEDownloads; use Chamilo\CoreBundle\Entity\User; use Chamilo\CoreBundle\Entity\Usergroup; use Chamilo\CoreBundle\Framework\Container; @@ -4270,32 +4271,27 @@ class Tracking return Database::num_rows($rs); } - /** - * Get count student downloaded documents. - * - * @param int Student id - * @param int $courseId - * @param int Session id (optional) - * - * @return int Count downloaded documents - */ - public static function count_student_downloaded_documents($student_id, $courseId, $session_id = 0) + public static function countStudentDownloadedDocuments(int $studentId, int $courseId, int $sessionId = 0): int { - $student_id = (int) $student_id; - $courseId = (int) $courseId; - $session_id = (int) $session_id; + $em = Database::getManager(); + $qb = $em->createQueryBuilder(); - // table definition - $table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_DOWNLOADS); + $qb->select('COUNT(td.downId)') + ->from(TrackEDownloads::class, 'td') + ->leftJoin('td.resourceLink', 'rl') + ->where('td.downUserId = :studentId') + ->andWhere('rl.course = :courseId') + ->setParameter('studentId', $studentId) + ->setParameter('courseId', $courseId); - $sql = 'SELECT 1 - FROM '.$table.' - WHERE down_user_id = '.$student_id.' - AND c_id = "'.$courseId.'" - AND session_id = '.$session_id.' '; - $rs = Database::query($sql); + if ($sessionId > 0) { + $qb->andWhere('rl.session = :sessionId') + ->setParameter('sessionId', $sessionId); + } - return Database::num_rows($rs); + $query = $qb->getQuery(); + + return (int) $query->getSingleScalarResult(); } /** diff --git a/public/main/my_space/myStudents.php b/public/main/my_space/myStudents.php index 15e6e68e38..a9931f8bcd 100644 --- a/public/main/my_space/myStudents.php +++ b/public/main/my_space/myStudents.php @@ -1139,7 +1139,7 @@ if (null !== $course) { $messages = Container::getForumPostRepository()->countUserForumPosts($user, $course, $session); $links = Tracking::count_student_visited_links($studentId, $courseId, $sessionId); $chat_last_connection = Tracking::chat_last_connection($studentId, $courseId, $sessionId); - $documents = Tracking::count_student_downloaded_documents($studentId, $courseId, $sessionId); + $documents = Tracking::countStudentDownloadedDocuments($studentId, $courseId, $sessionId); $uploaded_documents = Tracking::count_student_uploaded_documents($studentId, $courseCode, $sessionId); $tpl->assign('title', $course->getTitle()); diff --git a/public/main/template/default/my_space/user_details.html.twig b/public/main/template/default/my_space/user_details.html.twig index 2cc0b4f760..52b96db19d 100644 --- a/public/main/template/default/my_space/user_details.html.twig +++ b/public/main/template/default/my_space/user_details.html.twig @@ -161,10 +161,10 @@
{{ display.card_widget('First login in platform'|trans, user_extra.first_connection, 'calendar') }} {{ display.card_widget('Latest login in platform'|trans, user_extra.last_connection, 'calendar') }} - {% if (user_extra.time_spent_course) %} + {% if (user_extra.time_spent_course is defined) %} {{ display.card_widget('Time spent in the course'|trans, user_extra.time_spent_course, 'clock-o') }} {% endif %} - {% if user_extra.legal %} + {% if user_extra.legal is defined %} {{ display.card_widget('Legal accepted'|trans, user_extra.legal.datetime, 'gavel', user_extra.legal.icon) }} {% endif %}