diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php
index 29977df89a..e9253c354f 100644
--- a/main/inc/lib/course.lib.php
+++ b/main/inc/lib/course.lib.php
@@ -534,8 +534,9 @@ class CourseManager {
*/
public static function get_real_course_list() {
$sql_result = Database::query("SELECT * FROM ".Database::get_main_table(TABLE_MAIN_COURSE)." WHERE target_course_code IS NULL");
+ $real_course_list = array();
while ($result = Database::fetch_array($sql_result)) {
- $real_course_list[] = $result;
+ $real_course_list[$result['code']] = $result;
}
return $real_course_list;
}
@@ -545,8 +546,9 @@ class CourseManager {
*/
public static function get_virtual_course_list() {
$sql_result = Database::query("SELECT * FROM ".Database::get_main_table(TABLE_MAIN_COURSE)." WHERE target_course_code IS NOT NULL");
+ $virtual_course_list = array();
while ($result = Database::fetch_array($sql_result)) {
- $virtual_course_list[] = $result;
+ $virtual_course_list[$result['code']] = $result;
}
return $virtual_course_list;
}
diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php
index fe4a4723e7..2b6153ef60 100755
--- a/main/inc/lib/sessionmanager.lib.php
+++ b/main/inc/lib/sessionmanager.lib.php
@@ -924,7 +924,7 @@ class SessionManager {
}
$sql_result = Database::query($sql_query);
while ($result = Database::fetch_array($sql_result)) {
- $return_array[] = $result;
+ $return_array[$result['id']] = $result;
}
return $return_array;
}
diff --git a/main/mySpace/course.php b/main/mySpace/course.php
index 96ba6b3b07..5e2dadb81e 100755
--- a/main/mySpace/course.php
+++ b/main/mySpace/course.php
@@ -111,7 +111,16 @@ if ($show_import_icon) {
}
if (!api_is_drh()) {
- $a_courses = Tracking :: get_courses_followed_by_coach($_user['user_id'], $id_session);
+ if (api_is_platform_admin()) {
+ if (empty($id_session)) {
+ $courses = CourseManager::get_real_course_list();
+ } else {
+ $courses = Tracking::get_courses_list_from_session($id_session);
+ }
+ } else {
+ $courses = Tracking::get_courses_followed_by_coach($_user['user_id'], $id_session);
+ }
+ $a_courses = array_keys($courses);
}
$nb_courses = count($a_courses);
@@ -143,49 +152,44 @@ $csv_header[] = array(
if (is_array($a_courses)) {
foreach ($a_courses as $course_code) {
$nb_students_in_course = 0;
- $a_students = array();
$course = CourseManager :: get_course_information($course_code);
$avg_assignments_in_course = $avg_messages_in_course = $avg_progress_in_course = $avg_score_in_course = $avg_time_spent_in_course = 0;
- // students subscribed to the course throw a session
- if (api_get_setting('use_session_mode') == 'true') {
- $sql = 'SELECT id_user as user_id
- FROM '.$tbl_session_course_user.'
- WHERE course_code="'.Database :: escape_string($course_code).'"
- AND id_session='.$id_session;
- $rs = Database::query($sql);
-
- while ($row = Database::fetch_array($rs)) {
- if (!in_array($row['user_id'], $a_students)) {
- $nb_students_in_course++;
-
- // tracking datas
- $avg_progress_in_course += Tracking :: get_avg_student_progress ($row['user_id'], $course_code);
- $avg_score_in_course += Tracking :: get_avg_student_score ($row['user_id'], $course_code);
- $avg_time_spent_in_course += Tracking :: get_time_spent_on_the_course ($row['user_id'], $course_code);
- $avg_messages_in_course += Tracking :: count_student_messages ($row['user_id'], $course_code);
- $avg_assignments_in_course += Tracking :: count_student_assignments ($row['user_id'], $course_code);
- $a_students[] = $row['user_id'];
- }
- }
- }
- if ($nb_students_in_course > 0) {
+ // students directly subscribed to the course
+ if (empty($session_id)) {
+ $sql = "SELECT user_id FROM $tbl_user_course as course_rel_user WHERE course_rel_user.status='5' AND course_rel_user.course_code='$course_code'";
+ } else {
+ $sql = "SELECT id_user as user_id FROM $tbl_session_course_user srcu WHERE srcu. course_code='$course_code' AND id_session = '$id_session' AND srcu.status<>2";
+ }
+
+ $rs = Database::query($sql);
+ $users = array();
+ while ($row = Database::fetch_array($rs)) { $users[] = $row['user_id']; }
+
+ if (count($users) > 0) {
+ $nb_students_in_course = count($users);
+ // tracking datas
+ $avg_progress_in_course = Tracking :: get_avg_student_progress ($users, $course_code, array(), $id_session);
+ $avg_score_in_course = Tracking :: get_avg_student_score ($users, $course_code, array(), $id_session);
+ $avg_time_spent_in_course = Tracking :: get_time_spent_on_the_course ($users, $course_code, $id_session);
+ $messages_in_course = Tracking :: count_student_messages ($users, $course_code, $id_session);
+ $assignments_in_course = Tracking :: count_student_assignments ($users, $course_code, $id_session);
+
$avg_time_spent_in_course = api_time_to_hms($avg_time_spent_in_course / $nb_students_in_course);
$avg_progress_in_course = round($avg_progress_in_course / $nb_students_in_course, 2);
$avg_score_in_course = round($avg_score_in_course / $nb_students_in_course, 2);
- //$avg_messages_in_course = round($avg_messages_in_course / $nb_students_in_course, 2);
- //$avg_assignments_in_course = round($avg_assignments_in_course / $nb_students_in_course, 2);
+
} else {
$avg_time_spent_in_course = null;
$avg_progress_in_course = null;
$avg_score_in_course = null;
- $avg_messages_in_course = null;
- $avg_assignments_in_course = null;
+ $messages_in_course = null;
+ $assignments_in_course = null;
}
$tematic_advance_progress = 0;
$course_description = new CourseDescription();
- $course_description->set_session_id(0);
+ $course_description->set_session_id($id_session);
$tematic_advance = $course_description->get_data_by_description_type(8, $course_code);
if (!empty($tematic_advance)) {
@@ -202,8 +206,8 @@ if (is_array($a_courses)) {
$table_row[] = $tematic_advance_progress;
$table_row[] = is_null($avg_progress_in_course) ? '-' : $avg_progress_in_course.'%';
$table_row[] = is_null($avg_score_in_course) ? '-' : $avg_score_in_course.'%';
- $table_row[] = is_null($avg_messages_in_course)?'-':$avg_messages_in_course;
- $table_row[] = is_null($avg_assignments_in_course)?'-':$avg_assignments_in_course;
+ $table_row[] = is_null($messages_in_course)?'-':$messages_in_course;
+ $table_row[] = is_null($assignments_in_course)?'-':$assignments_in_course;
$table_row[] = '
';
$csv_content[] = array (
@@ -213,8 +217,8 @@ if (is_array($a_courses)) {
$tematic_advance_csv,
is_null($avg_progress_in_course) ? null : $avg_progress_in_course.'%',
is_null($avg_score_in_course) ? null : $avg_score_in_course.'%',
- $avg_messages_in_course,
- $avg_assignments_in_course,
+ $messages_in_course,
+ $assignments_in_course,
);
$table -> addRow($table_row, 'align="right"');
diff --git a/main/mySpace/session.php b/main/mySpace/session.php
index 5e331ebb22..709e067084 100755
--- a/main/mySpace/session.php
+++ b/main/mySpace/session.php
@@ -103,8 +103,12 @@ if (api_is_drh()) {
}
echo '';
-} else {
- $a_sessions = Tracking :: get_sessions_coached_by_user($id_coach);
+} else {
+ if (api_is_platform_admin()) {
+ $a_sessions = SessionManager::get_sessions_list();
+ } else {
+ $a_sessions = Tracking :: get_sessions_coached_by_user($id_coach);
+ }
}
$nb_sessions = count($a_sessions);
@@ -122,10 +126,10 @@ if ($nb_sessions > 0) {
';
}
$table = new SortableTable('tracking', 'count_sessions_coached');
- $table -> set_header(0, get_lang('Title'));
- //$table -> set_header(1, get_lang('Status'));
- $table -> set_header(1, get_lang('Date'));
- $table -> set_header(2, get_lang('Details'), false);
+ $table->set_header(0, get_lang('Title'));
+ $table->set_header(1, get_lang('Date'));
+ $table->set_header(2, get_lang('NbCoursesPerSession'));
+ $table->set_header(3, get_lang('Details'), false);
$all_data = array();
foreach ($a_sessions as $session) {
@@ -138,6 +142,8 @@ if ($nb_sessions > 0) {
} else {
$row[] = ' - ';
}
+
+ $row[] = count(Tracking::get_courses_list_from_session($session['id']));
if ($export_csv) {
$csv_content[] = $row;
diff --git a/plugin/dashboard/block_course/block_course.class.php b/plugin/dashboard/block_course/block_course.class.php
index de606b4106..19986c6973 100755
--- a/plugin/dashboard/block_course/block_course.class.php
+++ b/plugin/dashboard/block_course/block_course.class.php
@@ -144,7 +144,7 @@ class BlockCourse extends Block {
}
if (count($users) > 0) {
$nb_students_in_course = count($users);
- $avg_time_spent_in_course = api_time_to_hms(Tracking::get_time_spent_on_the_course($users, $course_code));
+ $avg_time_spent_in_course = api_time_to_hms(Tracking::get_time_spent_on_the_course($users, $course_code)/$nb_students_in_course);
} else {
$avg_time_spent_in_course = null;
}
diff --git a/plugin/dashboard/block_session/block_session.class.php b/plugin/dashboard/block_session/block_session.class.php
index 2c18bbbca9..9b58adbed0 100755
--- a/plugin/dashboard/block_session/block_session.class.php
+++ b/plugin/dashboard/block_session/block_session.class.php
@@ -86,7 +86,8 @@ class BlockSession extends Block {
$sessions_table = '
| '.get_lang('Title').' | -'.get_lang('Date').' | +'.get_lang('Date').' | +'.get_lang('NbCoursesPerSession').' | |
|---|---|---|---|---|
| '.$title.' | -'.$date.' | +'.$title.' | +'.$date.' | +'.$count_courses_in_session.' |