diff --git a/main/exercice/exercise.lib.php b/main/exercice/exercise.lib.php index c01abe36fd..d433872b17 100644 --- a/main/exercice/exercise.lib.php +++ b/main/exercice/exercise.lib.php @@ -1295,22 +1295,19 @@ function get_all_exercises_for_course_id($course_info = null, $session_id = 0, $ * @param int session id * @return int the position of the user between his friends in a course (or course within a session) */ -function get_exercise_result_ranking($my_score, $my_exe_id, $exercise_id, $course_code, $session_id = 0, $return_string = true) { - if (empty($session_id)) { - $session_id = 0; - $user_list = UserManager::get_user_list(); - } else { - $user_list = SessionManager::get_users_by_session($session_id); - } +function get_exercise_result_ranking($my_score, $my_exe_id, $exercise_id, $course_code, $session_id = 0, $user_list, $return_string = true) { //No score given we return if (is_null($my_score)) { return '-'; } + if (empty($user_list)) { + return '-'; + } $best_attempts = array(); foreach($user_list as $user_data) { $user_id = $user_data['user_id']; - $best_attempts[$user_id]= get_best_attempt_by_user($user_id,$exercise_id,$course_code,$session_id); + $best_attempts[$user_id]= get_best_attempt_by_user($user_id, $exercise_id, $course_code, $session_id); } $position_data = array(); @@ -1374,7 +1371,7 @@ function get_exercise_result_ranking_by_attempt($my_score, $my_exe_id, $exercise if (is_null($my_score)) { return '-'; } - $user_results = get_all_exercise_results($exercise_id, $course_code, $session_id); + $user_results = get_all_exercise_results($exercise_id, $course_code, $session_id, false); $position_data = array(); if (empty($user_results)) { return 1; @@ -1421,7 +1418,7 @@ function get_exercise_result_ranking_by_attempt($my_score, $my_exe_id, $exercise */ function get_best_attempt_in_course($exercise_id, $course_code, $session_id) { - $user_results = get_all_exercise_results($exercise_id, $course_code, $session_id); + $user_results = get_all_exercise_results($exercise_id, $course_code, $session_id, false); $best_score_data = array(); $best_score = 0; if (!empty($user_results)) { @@ -1442,7 +1439,7 @@ function get_best_attempt_in_course($exercise_id, $course_code, $session_id) { * Get the best score in a exercise (NO Exercises in LPs ) */ function get_best_attempt_by_user($user_id, $exercise_id, $course_code, $session_id) { - $user_results = get_all_exercise_results($exercise_id, $course_code, $session_id); + $user_results = get_all_exercise_results($exercise_id, $course_code, $session_id, false); $best_score_data = array(); $best_score = 0; if (!empty($user_results)) { @@ -1514,7 +1511,7 @@ function get_average_score_by_course($course_code, $session_id) { } function get_average_score_by_course_by_user($user_id, $course_code, $session_id) { - $user_results = get_all_exercise_results_by_user($user_id, $course_code, $session_id, false); + $user_results = get_all_exercise_results_by_user($user_id, $course_code, $session_id); $avg_score = 0; if (!empty($user_results)) { foreach($user_results as $result) { diff --git a/main/inc/lib/events.lib.inc.php b/main/inc/lib/events.lib.inc.php index 32c45154d1..9ab0a0d98a 100644 --- a/main/inc/lib/events.lib.inc.php +++ b/main/inc/lib/events.lib.inc.php @@ -862,23 +862,26 @@ function delete_all_incomplete_attempts($user_id, $exercise_id, $course_code, $s * @return array with the results * */ -function get_all_exercise_results($exercise_id, $course_code, $session_id = 0) { +function get_all_exercise_results($exercise_id, $course_code, $session_id = 0, $load_question_list = true) { $TABLETRACK_EXERCICES = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES); $TBL_TRACK_ATTEMPT = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT); $course_code = Database::escape_string($course_code); $exercise_id = intval($exercise_id); $session_id = intval($session_id); - $sql = "SELECT * FROM $TABLETRACK_EXERCICES WHERE status = '' AND exe_cours_id = '$course_code' AND exe_exo_id = '$exercise_id' AND session_id = $session_id AND orig_lp_id =0 AND orig_lp_item_id = 0 ORDER BY exe_id"; + $sql = "SELECT * FROM $TABLETRACK_EXERCICES + WHERE status = '' AND exe_cours_id = '$course_code' AND exe_exo_id = '$exercise_id' AND session_id = $session_id AND orig_lp_id =0 AND orig_lp_item_id = 0 ORDER BY exe_id"; $res = Database::query($sql); $list = array(); while($row = Database::fetch_array($res,'ASSOC')) { $list[$row['exe_id']] = $row; - $sql = "SELECT * FROM $TBL_TRACK_ATTEMPT WHERE exe_id = {$row['exe_id']}"; - $res_question = Database::query($sql); - while($row_q = Database::fetch_array($res_question,'ASSOC')) { - $list[$row['exe_id']]['question_list'][$row_q['question_id']] = $row_q; - } + if ($load_question_list) { + $sql = "SELECT * FROM $TBL_TRACK_ATTEMPT WHERE exe_id = {$row['exe_id']}"; + $res_question = Database::query($sql); + while($row_q = Database::fetch_array($res_question,'ASSOC')) { + $list[$row['exe_id']]['question_list'][$row_q['question_id']] = $row_q; + } + } } return $list; } diff --git a/main/inc/lib/tracking.lib.php b/main/inc/lib/tracking.lib.php index 140bff3a90..7993f44da9 100644 --- a/main/inc/lib/tracking.lib.php +++ b/main/inc/lib/tracking.lib.php @@ -2530,6 +2530,15 @@ class Tracking { } $result_exercices = Database::query($sql_exercices); $to_graph_exercise_result = array(); + + + if (empty($session_id)) { + $user_list = UserManager::get_user_list(); + } else { + $user_list = SessionManager::get_users_by_session($session_id); + } + + if (Database::num_rows($result_exercices) > 0) { $score = $weighting = $exe_id = 0; while ($exercices = Database::fetch_array($result_exercices)) { @@ -2572,7 +2581,7 @@ class Tracking { if (!empty($weighting) && intval($weighting) != 0) { $my_score = $score/$weighting; } - $position = get_exercise_result_ranking($my_score, $exe_id, $exercices['id'], $course_info['code'], $session_id); + $position = get_exercise_result_ranking($my_score, $exe_id, $exercices['id'], $course_info['code'], $session_id, $user_list); $graph = self::generate_exercise_result_thumbnail_graph($to_graph_exercise_result[$exercices['id']]); $normal_graph = self::generate_exercise_result_graph($to_graph_exercise_result[$exercices['id']]); diff --git a/main/session/index.php b/main/session/index.php index a7e58221d2..321c19242d 100644 --- a/main/session/index.php +++ b/main/session/index.php @@ -12,10 +12,6 @@ $language_file = array('courses', 'index','tracking','exercice', 'admin'); $cidReset = true; require_once '../inc/global.inc.php'; -$libpath = api_get_path(LIBRARY_PATH); - -require_once $libpath.'formvalidator/FormValidator.class.php'; - require_once api_get_path(SYS_CODE_PATH).'newscorm/learnpathList.class.php'; require_once api_get_path(SYS_CODE_PATH).'exercice/exercise.lib.php'; require_once api_get_path(SYS_CODE_PATH).'exercice/exercise.class.php'; @@ -132,7 +128,11 @@ if (!empty($course_list)) { } }*/ - +if (empty($session_id)) { + $user_list = UserManager::get_user_list(); +} else { + $user_list = SessionManager::get_users_by_session($session_id); +} //Final data to be show $my_real_array = $new_exercises = array(); @@ -177,7 +177,7 @@ foreach($final_array as $session_data) { if(!empty($exercise_result['exe_weighting']) && intval($exercise_result['exe_weighting']) != 0) { $my_score = $exercise_result['exe_result']/$exercise_result['exe_weighting']; } - $position = get_exercise_result_ranking($my_score, $exercise_result['exe_id'], $my_exercise_id, $my_course_code,$session_id); + $position = get_exercise_result_ranking($my_score, $exercise_result['exe_id'], $my_exercise_id, $my_course_code, $session_id, $user_list); //$exercise_info->exercise = Display::url($exercise_info->exercise, api_get_path(WEB_CODE_PATH)."exercice/exercice.php?cidReq=$my_course_code&exerciseId={$exercise_info->id}&id_session=$session_id&show=result", array('target'=>SESSION_LINK_TARGET,'class'=>'exercise-result-link')); $exercise_info->exercise = Display::url($exercise_info->exercise, api_get_path(WEB_CODE_PATH)."exercice/result.php?cidReq=$my_course_code&id={$exercise_result['exe_id']}&id_session=$session_id&show_headers=1", array('target'=>SESSION_LINK_TARGET,'class'=>'exercise-result-link'));