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 = ''; $sessions_table .= ' - + + '; $i = 1; foreach ($sessions as $session) { @@ -99,12 +100,15 @@ class BlockSession extends Block { $date = ' - '; } + $count_courses_in_session = count(Tracking::get_courses_list_from_session($session_id)); + if ($i%2 == 0) $class_tr = 'row_odd'; else $class_tr = 'row_even'; $sessions_table .= ' - - + + + '; $i++; }
'.get_lang('Title').''.get_lang('Date').''.get_lang('Date').''.get_lang('NbCoursesPerSession').'
'.$title.''.$date.''.$title.''.$date.''.$count_courses_in_session.'