diff --git a/main/inc/lib/tracking.lib.php b/main/inc/lib/tracking.lib.php
index d0ed94b50a..aeb4caa623 100755
--- a/main/inc/lib/tracking.lib.php
+++ b/main/inc/lib/tracking.lib.php
@@ -3885,11 +3885,17 @@ class Tracking
* @param int $session_id
* @param string $extra_params
* @param bool $show_courses
+ * @param bool $showAllSessions
*
* @return string
*/
- public static function show_user_progress($user_id, $session_id = 0, $extra_params = '', $show_courses = true, $showAllSessions = true)
- {
+ public static function show_user_progress(
+ $user_id,
+ $session_id = 0,
+ $extra_params = '',
+ $show_courses = true,
+ $showAllSessions = true
+ ) {
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$tbl_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
@@ -3898,6 +3904,8 @@ class Tracking
$tbl_access_rel_session = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$user_id = intval($user_id);
+ $session_id = intval($session_id);
+
if (api_is_multiple_url_enabled()) {
$sql = "SELECT cu.course_code as code, title
FROM $tbl_course_user cu INNER JOIN $tbl_access_rel_course a
@@ -3930,7 +3938,13 @@ class Tracking
if (SessionManager::orderCourseIsEnabled() && !empty($session_id)) {
$orderBy = " ORDER BY s.id, position ";
$tableSessionRelCourse = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
- $extraInnerJoin = " INNER JOIN $tableSessionRelCourse src ON (cu.course_code = src.course_code AND src.id_session = $session_id) ";
+ $extraInnerJoin = " INNER JOIN $tableSessionRelCourse src
+ ON (cu.course_code = src.course_code AND src.id_session = $session_id) ";
+ }
+
+ $sessionCondition = '';
+ if (!empty($session_id)) {
+ $sessionCondition = " AND s.id = $session_id";
}
// Get the list of sessions where the user is subscribed as student
@@ -3944,6 +3958,7 @@ class Tracking
WHERE
id_user = $user_id AND
access_url_id = ".api_get_current_access_url_id()."
+ $sessionCondition
$orderBy ";
} else {
$sql = "SELECT DISTINCT cu.course_code, s.id as session_id, name
@@ -3951,6 +3966,7 @@ class Tracking
INNER JOIN $tbl_session s ON (s.id = cu.id_session)
$extraInnerJoin
WHERE id_user = $user_id
+ $sessionCondition
$orderBy ";
}
@@ -3990,7 +4006,12 @@ class Tracking
if ($show_courses) {
if (!empty($courses)) {
$html .= Display::page_subheader(
- Display::return_icon('course.png', get_lang('MyCourses'), array(), ICON_SIZE_SMALL).' '.get_lang('MyCourses')
+ Display::return_icon(
+ 'course.png',
+ get_lang('MyCourses'),
+ array(),
+ ICON_SIZE_SMALL
+ ).' '.get_lang('MyCourses')
);
$html .= '
';
$html .= '
@@ -4095,13 +4116,16 @@ class Tracking
false,
1
);
+
foreach ($exercise_list as $exercise_data) {
$exercise_obj = new Exercise($course_data['id']);
$exercise_obj->read($exercise_data['id']);
//Exercise is not necessary to be visible to show results check the result_disable configuration instead
//$visible_return = $exercise_obj->is_visible();
- if ($exercise_data['results_disabled'] == 0 || $exercise_data['results_disabled'] == 2) {
+ if ($exercise_data['results_disabled'] == 0 ||
+ $exercise_data['results_disabled'] == 2
+ ) {
$best_average = intval(
get_best_average_score_by_exercise(
@@ -4111,8 +4135,9 @@ class Tracking
$user_count
)
);
- $exercise_graph_list[] = $best_average;
- $all_exercise_graph_list[] = $best_average;
+
+ $exercise_graph_list[] = $best_average;
+ $all_exercise_graph_list[] = $best_average;
$user_result_data = get_best_attempt_by_user(
api_get_user_id(),
@@ -4122,7 +4147,9 @@ class Tracking
);
$score = 0;
- if (!empty($user_result_data['exe_weighting']) && intval($user_result_data['exe_weighting']) != 0) {
+ if (!empty($user_result_data['exe_weighting']) &&
+ intval($user_result_data['exe_weighting']) != 0
+ ) {
$score = intval($user_result_data['exe_result']/$user_result_data['exe_weighting'] * 100);
}
$time = api_strtotime($exercise_data['start_time']) ? api_strtotime($exercise_data['start_time'], 'UTC') : 0;
@@ -4133,7 +4160,8 @@ class Tracking
$exercise_graph_name_list[]= $title;
$all_exercise_graph_name_list[] = $title;
} else {
- // if there are more than 10 results, space becomes difficult to find, so only show the title of the exercise, not the tool
+ // if there are more than 10 results, space becomes
+ // difficult to find, so only show the title of the exercise, not the tool
$title = cut($exercise_data['title'], 30);
$exercise_graph_name_list[]= $title;
$all_exercise_graph_name_list[]= $title;
@@ -4168,7 +4196,14 @@ class Tracking
);
}
- $html .= Display::page_subheader(Display::return_icon('session.png', get_lang('Sessions'), array(), ICON_SIZE_SMALL).' '.get_lang('Sessions'));
+ $html .= Display::page_subheader(
+ Display::return_icon(
+ 'session.png',
+ get_lang('Sessions'),
+ array(),
+ ICON_SIZE_SMALL
+ ).' '.get_lang('Sessions')
+ );
$html .= '';
$html .= '
@@ -4197,12 +4232,12 @@ class Tracking
$stats_array = array();
- foreach($course_list as $course_data) {
+ foreach ($course_list as $course_data) {
//All exercises in the course @todo change for a real count
- $exercises = get_all_exercises($course_data, $my_session_id);
+ $exercises = get_all_exercises($course_data, $my_session_id);
$count_exercises = 0;
if (is_array($exercises) && !empty($exercises)) {
- $count_exercises = count($exercises);
+ $count_exercises = count($exercises);
}
//Count of user results
@@ -4212,7 +4247,12 @@ class Tracking
$answered_exercises = 0;
if (!empty($exercises)) {
foreach($exercises as $exercise_item) {
- $attempts = count_exercise_attempts_by_user(api_get_user_id(), $exercise_item['id'], $course_data['code'], $my_session_id);
+ $attempts = count_exercise_attempts_by_user(
+ api_get_user_id(),
+ $exercise_item['id'],
+ $course_data['code'],
+ $my_session_id
+ );
if ($attempts > 1) {
$answered_exercises++;
}
@@ -4221,16 +4261,13 @@ class Tracking
// Average
$average = get_average_score_by_course($course_data['code'], $my_session_id);
-
$all_exercises += $count_exercises;
-
$all_unanswered_exercises_by_user += $count_exercises - $answered_exercises;
//$all_done_exercise += $done_exercises;
- $all_average += $average;
- //$stats_array[$course_data['code']] = array('exercises'=>$count_exercises, 'unanswered_exercises_by_user'=>$answered_exercises,'done_exercises'=>$done_exercises, 'average'=>$average);
+ $all_average += $average;
}
- $all_average = $all_average / count($course_list);
+ $all_average = $all_average / count($course_list);
if (isset($_GET['session_id']) && $my_session_id == $_GET['session_id']) {
$html .= '
';
@@ -4255,18 +4292,23 @@ class Tracking
$html .= '
';
}
$html .= '
';
- $html .= Display::div($main_session_graph, array('id'=>'session_graph','class'=>'chart-session', 'style'=>'position:relative; text-align: center;') );
+ $html .= Display::div(
+ $main_session_graph,
+ array(
+ 'id' => 'session_graph',
+ 'class' => 'chart-session',
+ 'style' => 'position:relative; text-align: center;',
+ )
+ );
// Checking selected session.
if (isset($_GET['session_id'])) {
$session_id_from_get = intval($_GET['session_id']);
-
$session_data = $course_in_session[$session_id_from_get];
$course_list = $session_data['course_list'];
$html .= Display::tag('h3',$session_data['name'].' - '.get_lang('CourseList'));
-
$html .= '';
//'.Display::tag('th', get_lang('DoneExercises'), array('class'=>'head')).'
$html .= '
@@ -4288,7 +4330,7 @@ class Tracking
$course_title = $course_data['title'];
//All exercises in the course @todo change for a real count
- $exercises = get_all_exercises($course_data, $session_id_from_get);
+ $exercises = get_all_exercises($course_data, $session_id_from_get);
$count_exercises = 0;
if (!empty($exercises)) {
$count_exercises = count($exercises);
@@ -4299,8 +4341,13 @@ class Tracking
//From course exercises NOT from LP exercises!!!
//$done_exercises = get_count_exercises_attempted_by_course($course_code, $session_id_from_get);
$answered_exercises = 0;
- foreach($exercises as $exercise_item) {
- $attempts = count_exercise_attempts_by_user(api_get_user_id(), $exercise_item['id'], $course_code, $session_id_from_get);
+ foreach ($exercises as $exercise_item) {
+ $attempts = count_exercise_attempts_by_user(
+ api_get_user_id(),
+ $exercise_item['id'],
+ $course_code,
+ $session_id_from_get
+ );
if ($attempts > 1) {
$answered_exercises++;
}
@@ -4309,15 +4356,23 @@ class Tracking
$unanswered_exercises = $count_exercises - $answered_exercises;
// Average
- $average = get_average_score_by_course($course_code, $session_id_from_get);
- $my_average = get_average_score_by_course_by_user(api_get_user_id(), $course_code, $session_id_from_get);
+ $average = get_average_score_by_course(
+ $course_code,
+ $session_id_from_get
+ );
+
+ $my_average = get_average_score_by_course_by_user(
+ api_get_user_id(),
+ $course_code,
+ $session_id_from_get
+ );
$stats_array[$course_code] = array(
- 'exercises' => $count_exercises,
- 'unanswered_exercises_by_user' => $unanswered_exercises,
- 'done_exercises' => $done_exercises,
- 'average' => $average,
- 'my_average' => $my_average
+ 'exercises' => $count_exercises,
+ 'unanswered_exercises_by_user' => $unanswered_exercises,
+ 'done_exercises' => $done_exercises,
+ 'average' => $average,
+ 'my_average' => $my_average,
);
$weighting = 0;
@@ -4374,10 +4429,6 @@ class Tracking
$html .= '';
}
$html .= '
';
-
- if (!empty($session_graph[$session_id_from_get])) {
- //$html .= Display::div($session_graph[$session_id_from_get], array('id'=>'session_graph','class'=>'chart-session', 'style'=>'position:relative; text-align: center;') );
- }
}
}
return $html;
diff --git a/main/session/index.php b/main/session/index.php
index 5386283007..9bede43306 100755
--- a/main/session/index.php
+++ b/main/session/index.php
@@ -5,9 +5,6 @@
* @package chamilo.session
* @author Julio Montoya Beeznest
*/
-/**
- * Code
- */
use \ChamiloSession as Session;
@@ -517,7 +514,7 @@ $(function() {
window.location.href=ui.tab;
});
// Generate tabs with jquery-ui
$('#tabs').tabs();
- $( "#sub_tab" ).tabs();
+ $('#sub_tab').tabs();
});
'.Tracking::show_course_detail(api_get_user_id(), $courseCode, $session_id);
+$reportingTab = Tracking::show_user_progress(
+ api_get_user_id(),
+ $session_id,
+ '#tabs-4',
+ false,
+ false
+);
+
+if (!empty($reportingTab)) {
+ $reportingTab .= '
'.Tracking::show_course_detail(
+ api_get_user_id(),
+ $courseCode,
+ $session_id
+ );
}
-if (empty($my_reporting)) {
- $my_reporting = Display::return_message(get_lang('NoDataAvailable'), 'warning');
+if (empty($reportingTab)) {
+ $reportingTab = Display::return_message(get_lang('NoDataAvailable'), 'warning');
}
// Main headers
$headers = array(
+ Display::return_icon('moderator_star.png'),
get_lang('Courses'),
get_lang('LearningPaths'),
get_lang('MyQCM'),
@@ -557,24 +566,28 @@ $sub_header = array(
);
// Sub headers data
-$lp_tabs = Display::tabs(
+$lpTab = Display::tabs(
$sub_header,
array(
- Display::grid_html('list_default'),
+ //Display::grid_html('list_default'),
Display::grid_html('list_week'),
- Display::grid_html('list_course')
+ //Display::grid_html('list_course')
),
'sub_tab'
);
-$courses_tab = Display::grid_html('courses');
+$coursesTab = Display::grid_html('courses');
+
+$starTab = Display::grid_html('list_default');
+
// Main headers data
echo Display::tabs(
$headers,
array(
- $courses_tab,
- $lp_tabs,
+ $starTab,
+ $coursesTab,
+ Display::grid_html('list_course'),
Display::grid_html('exercises'),
- $my_reporting
+ $reportingTab
)
);