From 02973c5fb06485989847125832c8fd6c1951925e Mon Sep 17 00:00:00 2001 From: Angel Fernando Quiroz Campos Date: Thu, 2 Jul 2015 10:19:34 -0500 Subject: [PATCH] Move function to get session points to GamificationUtils - refs BT#9901 #TMI --- main/inc/lib/GamificationUtils.php | 49 +++++++++++++++++++++++++++-- main/inc/lib/sessionmanager.lib.php | 37 ---------------------- main/inc/lib/userportal.lib.php | 2 +- 3 files changed, 47 insertions(+), 41 deletions(-) diff --git a/main/inc/lib/GamificationUtils.php b/main/inc/lib/GamificationUtils.php index f13fb57274..69e328674b 100644 --- a/main/inc/lib/GamificationUtils.php +++ b/main/inc/lib/GamificationUtils.php @@ -29,12 +29,55 @@ class GamificationUtils } foreach ($sessions as $session) { - $points += SessionManager::getPointsFromGamification( - $session['id'] - ); + $points += self::getSessionPoints($session['id'], $userId); } return $points; } + /** + * Get the achieved points for a user in a session + * @param int $sessionId The session id + * @param int $userId The user ID + * @return int The count of points + */ + public static function getSessionPoints($sessionId, $userId) + { + $totalPoints = 0; + $courses = SessionManager::get_course_list_by_session_id($sessionId); + + if (empty($courses)) { + return 0; + } + + foreach ($courses as $course) { + $learnPathListObject = new LearnpathList( + $userId, + $course['code'], + $sessionId + ); + $learnPaths = $learnPathListObject->get_flat_list(); + + $score = 0; + + foreach ($learnPaths as $learnPathId => $learnPathInfo) { + if (empty($learnPathInfo['seriousgame_mode'])) { + continue; + } + + $learnPath = new learnpath( + $course['code'], + $learnPathId, + $userId + ); + + $score += $learnPath->getCalculateScore($sessionId); + } + + $totalPoints += $score; + } + + return $totalPoints / count($courses); + } + } diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php index c87b73ed72..ddd8159998 100755 --- a/main/inc/lib/sessionmanager.lib.php +++ b/main/inc/lib/sessionmanager.lib.php @@ -7041,41 +7041,4 @@ class SessionManager return $progress / count($courses); } - /** - * Get the achieved points in a session when gamification mode is activated - * @param int $sessionId The session id - * @return int The count of points - */ - public static function getPointsFromGamification($sessionId) - { - $totalPoints = 0; - $userId = api_get_user_id(); - $courses = SessionManager::get_course_list_by_session_id($sessionId); - - if (empty($courses)) { - return 0; - } - - foreach ($courses as $course) { - $learnPathListObject = new LearnpathList($userId, $course['code'], $sessionId); - $learnPaths = $learnPathListObject->get_flat_list(); - - $score = 0; - - foreach ($learnPaths as $learnPathId => $learnPathInfo) { - if (empty($learnPathInfo['seriousgame_mode'])) { - continue; - } - - $learnPath = new learnpath($course['code'], $learnPathId, $userId); - - $score += $learnPath->getCalculateScore($sessionId); - } - - $totalPoints += $score; - } - - return $totalPoints / count($courses); - } - } diff --git a/main/inc/lib/userportal.lib.php b/main/inc/lib/userportal.lib.php index a90fe3637c..b81ebf5083 100755 --- a/main/inc/lib/userportal.lib.php +++ b/main/inc/lib/userportal.lib.php @@ -1264,7 +1264,7 @@ class IndexManager if ($gamificationModeIsActive) { $params['stars'] = SessionManager::getNumberOfStarsFromGamification($params['id']); $params['progress'] = SessionManager::getProgressFromGamification($params['id']); - $params['points'] = SessionManager::getPointsFromGamification($params['id']); + $params['points'] = GamificationUtils::getSessionPoints($params['id'], $this->user_id); } $this->tpl->assign('session', $params);