Forráskód Böngészése

Merge branch '1.9.x' of github.com:beeznest/chamilo-lms-utp into 1.9.x

Francis Gonzales 11 éve
szülő
commit
63fb3902cf

+ 10 - 10
main/inc/lib/sessionmanager.lib.php

@@ -814,7 +814,7 @@ class SessionManager
         $sql_query = vsprintf($sql, $queryVariables);
         $sql_query = vsprintf($sql, $queryVariables);
 
 
         if (self::$_debug) {
         if (self::$_debug) {
-            error_log($sql_query);
+            error_log(preg_replace('/\s+/', ' ', $sql_query));
         }
         }
         $rs = Database::query($sql_query);
         $rs = Database::query($sql_query);
         while ($user = Database::fetch_array($rs)) {
         while ($user = Database::fetch_array($rs)) {
@@ -828,7 +828,7 @@ class SessionManager
         WHERE c_id = %s ";  //AND session_id = %s
         WHERE c_id = %s ";  //AND session_id = %s
         $sql_query = sprintf($sql, $course['real_id']);
         $sql_query = sprintf($sql, $course['real_id']);
         if (self::$_debug) {
         if (self::$_debug) {
-            error_log($sql_query);
+            error_log(preg_replace('/\s+/', ' ', $sql_query));
         }
         }
         $result = Database::query($sql_query);
         $result = Database::query($sql_query);
         $lessons_total = 0;
         $lessons_total = 0;
@@ -870,7 +870,7 @@ class SessionManager
 
 
         $sql_query = sprintf($sql, $course['real_id'], $sessionId);
         $sql_query = sprintf($sql, $course['real_id'], $sessionId);
         if (self::$_debug) {
         if (self::$_debug) {
-            error_log($sql_query);
+            error_log(preg_replace('/\s+/', ' ', $sql_query));
         }
         }
         $result = Database::query($sql_query);
         $result = Database::query($sql_query);
         $row = Database::fetch_array($result);
         $row = Database::fetch_array($result);
@@ -888,7 +888,7 @@ class SessionManager
         }
         }
         $sql_query = sprintf($sql, $course['real_id'], $sessionId);
         $sql_query = sprintf($sql, $course['real_id'], $sessionId);
         if (self::$_debug) {
         if (self::$_debug) {
-            error_log($sql_query);
+            error_log(preg_replace('/\s+/', ' ', $sql_query));
         }
         }
         $result = Database::query($sql_query);
         $result = Database::query($sql_query);
         $row = Database::fetch_array($result);
         $row = Database::fetch_array($result);
@@ -925,7 +925,7 @@ class SessionManager
         }
         }
         $sql_query = sprintf($sql, $course['real_id'], $sessionId);
         $sql_query = sprintf($sql, $course['real_id'], $sessionId);
         if (self::$_debug) {
         if (self::$_debug) {
-            error_log($sql_query);
+            error_log(preg_replace('/\s+/', ' ', $sql_query));
         }
         }
         $result = Database::query($sql_query);
         $result = Database::query($sql_query);
         $row = Database::fetch_array($result);
         $row = Database::fetch_array($result);
@@ -944,7 +944,7 @@ class SessionManager
             AND access_user_id = %s ";
             AND access_user_id = %s ";
             $sql_query  = sprintf($sql, $course['code'], $user['id_session'], $user['user_id']);
             $sql_query  = sprintf($sql, $course['code'], $user['id_session'], $user['user_id']);
             if (self::$_debug) {
             if (self::$_debug) {
-                error_log($sql_query);
+                error_log(preg_replace('/\s+/', ' ', $sql_query));
             }
             }
             $result     = Database::query($sql_query);
             $result     = Database::query($sql_query);
             $row        = Database::fetch_array($result);
             $row        = Database::fetch_array($result);
@@ -958,7 +958,7 @@ class SessionManager
 
 
             //Exercises
             //Exercises
             $exercises_progress     = str_replace('%', '', Tracking::get_exercise_student_progress($exercises, $user['user_id'], $course['code'], $user['id_session']));
             $exercises_progress     = str_replace('%', '', Tracking::get_exercise_student_progress($exercises, $user['user_id'], $course['code'], $user['id_session']));
-            $exercises_done         = ($exercises_progress * $exercises_total) / 100;
+            $exercises_done         = round(($exercises_progress * $exercises_total) / 100);
             $exercises_left         = $exercises_total - $exercises_done;
             $exercises_left         = $exercises_total - $exercises_done;
 
 
             //Assignments
             //Assignments
@@ -978,7 +978,7 @@ class SessionManager
             where c_id = %s and session_id = %s and user_id = %s";
             where c_id = %s and session_id = %s and user_id = %s";
             $sql_query  = sprintf($sql, $course['real_id'], $user['id_session'], $user['user_id']);
             $sql_query  = sprintf($sql, $course['real_id'], $user['id_session'], $user['user_id']);
             if (self::$_debug) {
             if (self::$_debug) {
-                error_log($sql_query);
+                error_log(preg_replace('/\s+/', ' ', $sql_query));
             }
             }
             $result     = Database::query($sql_query);
             $result     = Database::query($sql_query);
             $row        = Database::fetch_array($result);
             $row        = Database::fetch_array($result);
@@ -993,7 +993,7 @@ class SessionManager
             AND c_id = %s";
             AND c_id = %s";
             $sql_query  = sprintf($sql, $user['user_id'], $course['code'], $course['real_id']);
             $sql_query  = sprintf($sql, $user['user_id'], $course['code'], $course['real_id']);
             if (self::$_debug) {
             if (self::$_debug) {
-                error_log($sql_query);
+                error_log(preg_replace('/\s+/', ' ', $sql_query));
             }
             }
             $result     = Database::query($sql_query);
             $result     = Database::query($sql_query);
             $row        = Database::fetch_array($result);
             $row        = Database::fetch_array($result);
@@ -1023,7 +1023,7 @@ class SessionManager
             WHERE p.poster_id = %s and f.session_id = %s and p.c_id = %s";
             WHERE p.poster_id = %s and f.session_id = %s and p.c_id = %s";
             $sql_query  = sprintf($sql, $user['user_id'], $user['id_session'], $course['real_id']);
             $sql_query  = sprintf($sql, $user['user_id'], $user['id_session'], $course['real_id']);
             if (self::$_debug) {
             if (self::$_debug) {
-                error_log($sql_query);
+                error_log(preg_replace('/\s+/', ' ', $sql_query));
             }
             }
             $result     = Database::query($sql_query);
             $result     = Database::query($sql_query);
             $row        = Database::fetch_array($result);
             $row        = Database::fetch_array($result);

+ 80 - 21
main/inc/lib/tracking.lib.php

@@ -351,13 +351,22 @@ class Tracking
     /**
     /**
      * Gets the score average from all tests in a course by student
      * Gets the score average from all tests in a course by student
      *
      *
-     * @param    mixed		Student(s) id
-     * @param    string 	Course code
-     * @param    int    	Exercise id (optional), filtered by exercise
-     * @param    int    	Session id (optional), if param $session_id is null it'll return results including sessions, 0 = session is not filtered
-     * @return   string 	value (number %) Which represents a round integer about the score average.
+     * @param $student_id
+     * @param $course_code
+     * @param int $exercise_id
+     * @param null $session_id
+     * @param int $active_filter    2 for consider all tests
+     *                              1 for active <> -1
+     *                              0 for active <> 0
+     * @param int $into_lp  1 for all exercises
+     *                      0 for whitout LP
+     * @internal param \Student $mixed id
+     * @internal param \Course $string code
+     * @internal param \Exercise $int id (optional), filtered by exercise
+     * @internal param \Session $int id (optional), if param $session_id is null it'll return results including sessions, 0 = session is not filtered
+     * @return   string    value (number %) Which represents a round integer about the score average.
      */
      */
-    public static function get_avg_student_exercise_score($student_id, $course_code, $exercise_id = 0, $session_id = null) {
+    public static function get_avg_student_exercise_score($student_id, $course_code, $exercise_id = 0, $session_id = null, $active_filter = 1, $into_lp = 0) {
     	$course_info = api_get_course_info($course_code);
     	$course_info = api_get_course_info($course_code);
 
 
     	if (!empty($course_info)) {
     	if (!empty($course_info)) {
@@ -378,8 +387,23 @@ class Tracking
     			$session_id = intval($session_id);
     			$session_id = intval($session_id);
     			$condition_session = " AND session_id = $session_id ";
     			$condition_session = " AND session_id = $session_id ";
     		}
     		}
+            if ($active_filter == 1) {
+                $condition_active = 'AND active <> -1';
+            } elseif ($active_filter == 0) {
+                $condition_active = 'AND active <> 0';
+            } else {
+                $condition_active = '';
+            }
+            $condition_into_lp = '';
+            $select_lp_id = '';
+            if ($into_lp == 0) {
+                $condition_into_lp = 'AND orig_lp_id = 0 AND orig_lp_item_id = 0';
+            } else {
+                $select_lp_id = ', orig_lp_id as lp_id ';
+            }
+
     		$sql = "SELECT count(id) FROM $tbl_course_quiz
     		$sql = "SELECT count(id) FROM $tbl_course_quiz
-    				WHERE c_id = {$course_info['real_id']} AND active <> -1 $condition_quiz ";
+    				WHERE c_id = {$course_info['real_id']} $condition_active $condition_quiz ";
     		$count_quiz = Database::fetch_row(Database::query($sql));
     		$count_quiz = Database::fetch_row(Database::query($sql));
 
 
     		if (!empty($count_quiz[0]) && !empty($student_id)) {
     		if (!empty($count_quiz[0]) && !empty($student_id)) {
@@ -392,7 +416,7 @@ class Tracking
 
 
     			if (empty($exercise_id)) {
     			if (empty($exercise_id)) {
     				$sql = "SELECT id FROM $tbl_course_quiz
     				$sql = "SELECT id FROM $tbl_course_quiz
-    						WHERE c_id = {$course_info['real_id']} AND active <> -1 $condition_quiz";
+    						WHERE c_id = {$course_info['real_id']} $condition_active $condition_quiz";
                     $result = Database::query($sql);
                     $result = Database::query($sql);
                     $exercise_list = array();
                     $exercise_list = array();
     				$exercise_id = null;
     				$exercise_id = null;
@@ -409,18 +433,19 @@ class Tracking
     			$count_quiz = Database::fetch_row(Database::query($sql));
     			$count_quiz = Database::fetch_row(Database::query($sql));
 
 
     			$sql = "SELECT SUM(exe_result/exe_weighting*100) as avg_score, COUNT(*) as num_attempts
     			$sql = "SELECT SUM(exe_result/exe_weighting*100) as avg_score, COUNT(*) as num_attempts
+    			        $select_lp_id
                         FROM $tbl_stats_exercise
                         FROM $tbl_stats_exercise
                         WHERE exe_exo_id IN ('".$exercise_id."')
                         WHERE exe_exo_id IN ('".$exercise_id."')
     			        $condition_user AND
     			        $condition_user AND
-                        orig_lp_id = 0 AND
                         status = '' AND
                         status = '' AND
-                        exe_cours_id = '$course_code' AND
-                        orig_lp_item_id = 0 $condition_session
+                        exe_cours_id = '$course_code'
+                        $condition_session
+                        $condition_into_lp
                         ORDER BY exe_date DESC";
                         ORDER BY exe_date DESC";
 
 
     			$res = Database::query($sql);
     			$res = Database::query($sql);
     			$row = Database::fetch_array($res);
     			$row = Database::fetch_array($res);
-    			$quiz_avg_score = 0;
+    			$quiz_avg_score = null;
 
 
     			if (!empty($row['avg_score'])) {
     			if (!empty($row['avg_score'])) {
     				$quiz_avg_score = round($row['avg_score'],2);
     				$quiz_avg_score = round($row['avg_score'],2);
@@ -432,7 +457,26 @@ class Tracking
     			if (is_array($student_id)) {
     			if (is_array($student_id)) {
     				$quiz_avg_score = round($quiz_avg_score / count($student_id), 2);
     				$quiz_avg_score = round($quiz_avg_score / count($student_id), 2);
     			}
     			}
-    			return $quiz_avg_score;
+                if ($into_lp == 0) {
+                    return $quiz_avg_score;
+                } else {
+                    if (!empty($row['lp_id'])) {
+                        $tbl_lp = Database::get_course_table(TABLE_LP_MAIN);
+                        $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
+                        $sql = "SELECT lp.name FROM $tbl_lp as lp, $tbl_course as c WHERE
+                            c.code = '$course_code' AND
+                            lp.id = ".$row['lp_id']." AND
+                            lp.c_id = c.id
+                            LIMIT 1;
+                            ";
+                        $result = Database::query($sql);
+                        $row_lp = Database::fetch_row($result);
+                        $lp_name = $row_lp[0];
+                        return array($quiz_avg_score, $lp_name);
+                    } else {
+                        return array($quiz_avg_score, null);
+                    }
+                }
     		}
     		}
     	}
     	}
     	return null;
     	return null;
@@ -441,14 +485,23 @@ class Tracking
 
 
     /**
     /**
      * Get count student's exercise COMPLETED attempts
      * Get count student's exercise COMPLETED attempts
-     * @param    int     Student id
-     * @param    string    Course code
-     * @param    int        Exercise id
-     * @param    int        Learning path id (optional), for showing attempts inside a learning path $lp_id and $lp_item_id params are required.
-     * @param    int        Learning path item id (optional), for showing attempts inside a learning path $lp_id and $lp_item_id params are required.
+     * @param $student_id
+     * @param $course_code
+     * @param $exercise_id
+     * @param int $lp_id
+     * @param int $lp_item_id
+     * @param int $session_id
+     * @param int $find_all_lp  0 = just LP specified
+     *                          1 = LP specified or whitout LP,
+     *                          2 = all rows
+     * @internal param \Student $int id
+     * @internal param \Course $string code
+     * @internal param \Exercise $int id
+     * @internal param \Learning $int path id (optional), for showing attempts inside a learning path $lp_id and $lp_item_id params are required.
+     * @internal param \Learning $int path item id (optional), for showing attempts inside a learning path $lp_id and $lp_item_id params are required.
      * @return  int     count of attempts
      * @return  int     count of attempts
      */
      */
-    public static function count_student_exercise_attempts($student_id, $course_code, $exercise_id, $lp_id = 0, $lp_item_id = 0, $session_id = 0) {
+    public static function count_student_exercise_attempts($student_id, $course_code, $exercise_id, $lp_id = 0, $lp_item_id = 0, $session_id = 0, $find_all_lp = 0) {
     	$course_code = Database::escape_string($course_code);
     	$course_code = Database::escape_string($course_code);
     	$student_id  = intval($student_id);
     	$student_id  = intval($student_id);
     	$exercise_id = intval($exercise_id);
     	$exercise_id = intval($exercise_id);
@@ -465,11 +518,17 @@ class Tracking
                 WHERE  ex.exe_cours_id = '$course_code'
                 WHERE  ex.exe_cours_id = '$course_code'
                 AND ex.exe_exo_id = $exercise_id
                 AND ex.exe_exo_id = $exercise_id
                 AND status = ''
                 AND status = ''
-                AND orig_lp_id = $lp_id
-                AND orig_lp_item_id = $lp_item_id
                 AND exe_user_id= $student_id
                 AND exe_user_id= $student_id
                 AND session_id = $session_id ";
                 AND session_id = $session_id ";
 
 
+        if ($find_all_lp == 1) {
+            $sql .= "AND (orig_lp_id = $lp_id OR orig_lp_id = 0)
+                AND (orig_lp_item_id = $lp_item_id OR orig_lp_item_id = 0)";
+        } elseif ($find_all_lp == 0) {
+            $sql .= "AND orig_lp_id = $lp_id
+                AND orig_lp_item_id = $lp_item_id";
+        }
+
     	$rs = Database::query($sql);
     	$rs = Database::query($sql);
     	$row = Database::fetch_row($rs);
     	$row = Database::fetch_row($rs);
     	$count_attempts = $row[0];
     	$count_attempts = $row[0];

+ 13 - 16
main/mySpace/index.php

@@ -659,8 +659,8 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
 
 
         $sessionList = array();
         $sessionList = array();
         $courseList = array();
         $courseList = array();
-        $sessionId = isset($_GET['session_id']) ? $_GET['session_id'] : null;
-        $courseId = isset($_GET['course_id']) ? $_GET['course_id'] : null;
+        $sessionId = isset($_GET['session_id']) ? intval(Security::remove_XSS($_GET['session_id'])) : null;
+        $courseId = isset($_GET['course_id']) ? intval(Security::remove_XSS($_GET['course_id'])) : null;
 
 
         if (!empty($sessionId)) {
         if (!empty($sessionId)) {
             $sessionList = array();
             $sessionList = array();
@@ -683,7 +683,7 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
 
 
         }
         }
 
 
-        $url = $ajax_path . 'session.ajax.php?a='. $an . '&course_id=' . $_GET['course_id'];
+        $url = $ajax_path . 'session.ajax.php?a='. $an . '&course_id=' . $courseId;
         $sessionFilter->addElement('select_ajax', 'session_name', get_lang('SearchSession'), null, array('url' => $url, 'defaults' => $sessionList, 'width' => '400px', 'minimumInputLength' => $minimumInputLength));
         $sessionFilter->addElement('select_ajax', 'session_name', get_lang('SearchSession'), null, array('url' => $url, 'defaults' => $sessionList, 'width' => '400px', 'minimumInputLength' => $minimumInputLength));
 
 
         //course filter
         //course filter
@@ -698,19 +698,18 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
         }
         }
 
 
         */
         */
-
-        $url = $ajax_path . 'course.ajax.php?a='. $a .'&session_id=' . $_GET['session_id'];
+        $url = $ajax_path . 'course.ajax.php?a='. $a .'&session_id=' . $sessionId;
         $sessionFilter->addElement('select_ajax', 'course_name', get_lang('SearchCourse'), null, array('url' => $url, 'defaults' => $courseList, 'width' => '400px', 'minimumInputLength' => $minimumInputLength));
         $sessionFilter->addElement('select_ajax', 'course_name', get_lang('SearchCourse'), null, array('url' => $url, 'defaults' => $courseList, 'width' => '400px', 'minimumInputLength' => $minimumInputLength));
         
         
         //Exercise filter    
         //Exercise filter    
         if (in_array($display, array('exerciseprogress'))) {
         if (in_array($display, array('exerciseprogress'))) {
 
 
-            $url = $ajax_path .'course.ajax.php?a=search_exercise_by_course&session_id=' . $_GET['session_id'] . '&course_id=' . $_GET['course_id'];
+            $url = $ajax_path .'course.ajax.php?a=search_exercise_by_course&session_id=' . $sessionId . '&course_id=' . $courseId;
             $exerciseList = array();
             $exerciseList = array();
-            $exerciseId = isset($_GET['exercise_id']) ? $_GET['exercise_id'] : null;
+            $exerciseId = isset($_GET['exercise_id']) ? Security::remove_XSS($_GET['exercise_id']) : null;
             if (!empty($exerciseId)) {
             if (!empty($exerciseId)) {
                 $exerciseList = array();
                 $exerciseList = array();
-                $exerciseInfo = current(get_exercise_by_id($exerciseId, $_GET['course_id']));
+                $exerciseInfo = current(get_exercise_by_id($exerciseId, $courseId));
                 $exerciseList[] = array('id' => $exerciseInfo['id'], 'text' => api_html_entity_decode($exerciseInfo['title']));
                 $exerciseList[] = array('id' => $exerciseInfo['id'], 'text' => api_html_entity_decode($exerciseInfo['title']));
             }
             }
             $sessionFilter->addElement('select_ajax', 'exercise_name', get_lang('SearchExercise'), null, array('url' => $url, 'defaults' => $exerciseList, 'width' => '400px', 'minimumInputLength' => $minimumInputLength));
             $sessionFilter->addElement('select_ajax', 'exercise_name', get_lang('SearchExercise'), null, array('url' => $url, 'defaults' => $exerciseList, 'width' => '400px', 'minimumInputLength' => $minimumInputLength));
@@ -720,10 +719,9 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
         //survey filter
         //survey filter
         if (in_array($display, array('surveyoverview'))) {
         if (in_array($display, array('surveyoverview'))) {
 
 
-            $url = $ajax_path . 'course.ajax.php?a=search_survey_by_course&session_id=' . $_GET['session_id'] . '&course_id=' . $_GET['course_id'] . '&survey_id=' . $_GET['survey_id'];
             $surveyList = array();
             $surveyList = array();
-            $surveyId = isset($_GET['survey_id']) ? intval($_GET['survey_id']) : null;
-            $courseId = isset($_GET['course_id']) ? intval($_GET['course_id']) : null;
+            $surveyId = isset($_GET['survey_id']) ? intval(Security::remove_XSS($_GET['survey_id'])) : null;
+            $url = $ajax_path . 'course.ajax.php?a=search_survey_by_course&session_id=' . $sessionId . '&course_id=' . $courseId . '&survey_id=' . $surveyId;
             if (!empty($surveyId)) {
             if (!empty($surveyId)) {
                 $course = api_get_course_info_by_id($courseId);
                 $course = api_get_course_info_by_id($courseId);
                 $surveyList = array();
                 $surveyList = array();
@@ -738,9 +736,9 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
         //Student and profile filter
         //Student and profile filter
         if (in_array($display, array('accessoverview'))) {
         if (in_array($display, array('accessoverview'))) {
 
 
-            $url = $ajax_path . 'course.ajax.php?a=search_user_by_course&session_id=' . $_GET['session_id'] . '&course_id=' . $_GET['course_id'];
+            $url = $ajax_path . 'course.ajax.php?a=search_user_by_course&session_id=' . $sessionId . '&course_id=' . $courseId;
             $studentList = array();
             $studentList = array();
-            $studentId = isset($_GET['student_id']) ? $_GET['student_id'] : null;
+            $studentId = isset($_GET['student_id']) ? intval(Security::remove_XSS($_GET['student_id'])) : null;
             if (!empty($studentId)) {
             if (!empty($studentId)) {
                 $studentList = array();
                 $studentList = array();
                 $studentInfo = UserManager::get_user_info_by_id($studentId);
                 $studentInfo = UserManager::get_user_info_by_id($studentId);
@@ -819,8 +817,7 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
         echo $sessionFilter->return_form();
         echo $sessionFilter->return_form();
         echo '</div>';
         echo '</div>';
         $a = 'search_course';
         $a = 'search_course';
-        
-        if (!empty($_GET['session_id'])) {
+        if (!empty($sessionId)) {
            $a = 'search_course_by_session';
            $a = 'search_course_by_session';
         }
         }
         
         
@@ -828,7 +825,7 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
             $a = 'search_course_by_session_all';
             $a = 'search_course_by_session_all';
         }
         }
        
        
-        $url = $ajax_path . 'course.ajax.php?a='. $a .'&session_id=' . $_GET['session_id'];
+        $url = $ajax_path . 'course.ajax.php?a='. $a .'&session_id=' . $sessionId;
         echo '<script>
         echo '<script>
         $(function() {
         $(function() {
             if (display == "lpprogressoverview" || display == "progressoverview" || display == "surveyoverview") {
             if (display == "lpprogressoverview" || display == "progressoverview" || display == "surveyoverview") {

+ 3 - 3
main/mySpace/lp_tracking.php

@@ -89,7 +89,7 @@ $table_title = ($session_name? Display::return_icon('session.png', get_lang('Ses
                 Display::return_icon('user.png', get_lang('User'), array(), ICON_SIZE_SMALL).' '.$name;
                 Display::return_icon('user.png', get_lang('User'), array(), ICON_SIZE_SMALL).' '.$name;
 echo Display::page_header($table_title);
 echo Display::page_header($table_title);
 echo Display::page_subheader('<h3>'.Display::return_icon('learnpath.png', get_lang('ToolLearnpath'), array(), ICON_SIZE_SMALL).' '.$lp_title.'</h3>');
 echo Display::page_subheader('<h3>'.Display::return_icon('learnpath.png', get_lang('ToolLearnpath'), array(), ICON_SIZE_SMALL).' '.$lp_title.'</h3>');
- 
+
 //Needed in newscorm/lp_stats.php
 //Needed in newscorm/lp_stats.php
 $list = learnpath :: get_flat_ordered_items_list($lp_id, 0, $course_info['real_id']);
 $list = learnpath :: get_flat_ordered_items_list($lp_id, 0, $course_info['real_id']);
 
 
@@ -101,8 +101,8 @@ if ($export_csv) {
 	ob_start();
 	ob_start();
 	require_once  api_get_path(SYS_CODE_PATH).'newscorm/lp_stats.php';
 	require_once  api_get_path(SYS_CODE_PATH).'newscorm/lp_stats.php';
 	$tracking_content = ob_get_contents();
 	$tracking_content = ob_get_contents();
-	ob_end_clean();    
+	ob_end_clean();
 	echo api_utf8_decode($tracking_content, $charset);
 	echo api_utf8_decode($tracking_content, $charset);
-    
+
 }
 }
 Display :: display_footer();
 Display :: display_footer();

+ 27 - 10
main/mySpace/myStudents.php

@@ -858,7 +858,8 @@ if (empty($_GET['details'])) {
 		<table class="data_table">
 		<table class="data_table">
 			<tr>
 			<tr>
 				<th><?php echo get_lang('Exercices'); ?></th>
 				<th><?php echo get_lang('Exercices'); ?></th>
-				<th><?php echo get_lang('AverageScore').' '.Display :: return_icon('info3.gif', get_lang('AverageScore'), array('align' => 'absmiddle', 'hspace' => '3px')) ?></th>
+                <th><?php echo get_lang('LearningPath');?></th>
+				<th><?php echo get_lang('AvgCourseScore').' '.Display :: return_icon('info3.gif', get_lang('AverageScore'), array('align' => 'absmiddle', 'hspace' => '3px')) ?></th>
 				<th><?php echo get_lang('Attempts'); ?></th>
 				<th><?php echo get_lang('Attempts'); ?></th>
 				<th><?php echo get_lang('LatestAttempt'); ?></th>
 				<th><?php echo get_lang('LatestAttempt'); ?></th>
 				<th><?php echo get_lang('AllAttempts'); ?></th>
 				<th><?php echo get_lang('AllAttempts'); ?></th>
@@ -875,7 +876,6 @@ if (empty($_GET['details'])) {
 		$t_quiz = Database :: get_course_table(TABLE_QUIZ_TEST);
 		$t_quiz = Database :: get_course_table(TABLE_QUIZ_TEST);
 		$sql_exercices = "SELECT quiz.title, id FROM " . $t_quiz . " AS quiz
 		$sql_exercices = "SELECT quiz.title, id FROM " . $t_quiz . " AS quiz
 						  WHERE quiz.c_id =  ".$info_course['real_id']." AND
 						  WHERE quiz.c_id =  ".$info_course['real_id']." AND
-						  		active='1' AND
 								(quiz.session_id = $session_id OR quiz.session_id = 0)
 								(quiz.session_id = $session_id OR quiz.session_id = 0)
 							ORDER BY quiz.title ASC ";
 							ORDER BY quiz.title ASC ";
 
 
@@ -884,14 +884,23 @@ if (empty($_GET['details'])) {
 		if (Database :: num_rows($result_exercices) > 0) {
 		if (Database :: num_rows($result_exercices) > 0) {
 			while ($exercices = Database :: fetch_array($result_exercices)) {
 			while ($exercices = Database :: fetch_array($result_exercices)) {
 				$exercise_id = intval($exercices['id']);
 				$exercise_id = intval($exercices['id']);
-
-				$count_attempts   = Tracking::count_student_exercise_attempts($student_id, $course_code, $exercise_id, 0, 0, $session_id);
-				$score_percentage = Tracking::get_avg_student_exercise_score($student_id, $course_code, $exercise_id, $session_id);
-
+                $lp_name = '';
+				$count_attempts   = Tracking::count_student_exercise_attempts($student_id, $course_code, $exercise_id, 0, 0, $session_id, 2);
+				$score_percentage = Tracking::get_avg_student_exercise_score($student_id, $course_code, $exercise_id, $session_id, 1, 0);
+
+                if (!isset($score_percentage) && $count_attempts > 0) {
+                    $scores_lp = Tracking::get_avg_student_exercise_score($student_id, $course_code, $exercise_id, $session_id, 2, 1);
+                    $score_percentage = $scores_lp[0];
+                    $lp_name = $scores_lp[1];
+                } else {
+                    $lp_name = '-';
+                }
+                $lp_name = (!empty($lp_name))? $lp_name: get_lang('NoLearnpath');
 				$csv_content[] = array (
 				$csv_content[] = array (
 					$exercices['title'],
 					$exercices['title'],
 					$score_percentage . '%',
 					$score_percentage . '%',
 					$count_attempts
 					$count_attempts
+
 				);
 				);
 
 
 				if ($i % 2) $css_class = 'row_odd';
 				if ($i % 2) $css_class = 'row_odd';
@@ -899,7 +908,17 @@ if (empty($_GET['details'])) {
 
 
 				echo '<tr class="'.$css_class.'"><td>'.$exercices['title'].'</td>';
 				echo '<tr class="'.$css_class.'"><td>'.$exercices['title'].'</td>';
 
 
-				echo '<td>';
+                echo '<td>';
+
+                if (!empty($lp_name)) {
+                    echo $lp_name;
+                } else {
+                    echo '-';
+                }
+
+                echo '</td>';
+
+                echo '<td>';
 
 
 				if ($count_attempts > 0) {
 				if ($count_attempts > 0) {
 					echo $score_percentage . '%';
 					echo $score_percentage . '%';
@@ -917,9 +936,7 @@ if (empty($_GET['details'])) {
 				                            exe_user_id     ="'.$student_id.'" AND
 				                            exe_user_id     ="'.$student_id.'" AND
 				                            exe_cours_id    ="'.$course_code.'" AND
 				                            exe_cours_id    ="'.$course_code.'" AND
                                             session_id      ="'.$session_id.'" AND
                                             session_id      ="'.$session_id.'" AND
-				                            status          = "" AND
-				                            orig_lp_id      = 0 AND
-				                            orig_lp_item_id = 0
+				                            status          = ""
 				                            ORDER BY exe_date DESC LIMIT 1';
 				                            ORDER BY exe_date DESC LIMIT 1';
 				$result_last_attempt = Database::query($sql_last_attempt);
 				$result_last_attempt = Database::query($sql_last_attempt);
 				if (Database :: num_rows($result_last_attempt) > 0) {
 				if (Database :: num_rows($result_last_attempt) > 0) {

+ 5 - 5
main/newscorm/lp_stats.php

@@ -48,7 +48,7 @@ $course_id = $course_info['real_id'];
 if (isset($_GET['student_id'])) {
 if (isset($_GET['student_id'])) {
     $student_id = intval($_GET['student_id']);
     $student_id = intval($_GET['student_id']);
 }
 }
-$session_id = api_get_session_id();
+$session_id = ($_GET['id_session'])? intval($_GET['id_session']) : api_get_session_id();
 $session_condition = api_get_session_condition($session_id);
 $session_condition = api_get_session_condition($session_id);
 
 
 //When origin is not set that means that the lp_stats are viewed from the "man running" icon
 //When origin is not set that means that the lp_stats are viewed from the "man running" icon
@@ -859,10 +859,10 @@ if (!empty($a_my_id)) {
     //var_dump($my_studen_id, $my_course_id,$a_my_id);
     //var_dump($my_studen_id, $my_course_id,$a_my_id);
     if (isset($_GET['extend_attempt'])) {
     if (isset($_GET['extend_attempt'])) {
         //"Right green cross" extended
         //"Right green cross" extended
-        $total_score = Tracking::get_avg_student_score($my_studen_id, $my_course_id, $a_my_id, api_get_session_id(), false, false);
+        $total_score = Tracking::get_avg_student_score($my_studen_id, $my_course_id, $a_my_id, $session_id, false, false);
     } else {
     } else {
         //"Left green cross" extended
         //"Left green cross" extended
-        $total_score = Tracking::get_avg_student_score($my_studen_id, $my_course_id, $a_my_id, api_get_session_id(), false, true);
+        $total_score = Tracking::get_avg_student_score($my_studen_id, $my_course_id, $a_my_id, $session_id, false, true);
     }
     }
 } else {
 } else {
     // Extend all "left green cross"
     // Extend all "left green cross"
@@ -870,12 +870,12 @@ if (!empty($a_my_id)) {
         $my_course_id = Database::escape_string($_GET['course']);
         $my_course_id = Database::escape_string($_GET['course']);
         //    var_dump($student_id, $my_course_id );
         //    var_dump($student_id, $my_course_id );
         if (!empty($student_id) && !empty($my_course_id)) {
         if (!empty($student_id) && !empty($my_course_id)) {
-            $total_score = Tracking::get_avg_student_score($student_id, $my_course_id, array(intval($_GET['lp_id'])), api_get_session_id(), false, false);
+            $total_score = Tracking::get_avg_student_score($student_id, $my_course_id, array(intval($_GET['lp_id'])), $session_id, false, false);
         } else {
         } else {
             $total_score = 0;
             $total_score = 0;
         }
         }
     } else {
     } else {
-        $total_score = Tracking::get_avg_student_score(api_get_user_id(), api_get_course_id(), array(intval($_GET['lp_id'])), api_get_session_id(), false, false);
+        $total_score = Tracking::get_avg_student_score(api_get_user_id(), api_get_course_id(), array(intval($_GET['lp_id'])), $session_id, false, false);
     }
     }
 }
 }