|
|
|
@ -5,6 +5,7 @@ |
|
|
|
|
* Homepage for the MySpace directory |
|
|
|
|
* @package chamilo.reporting |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
// resetting the course id |
|
|
|
|
$cidReset = true; |
|
|
|
|
|
|
|
|
@ -28,8 +29,8 @@ $is_coach = api_is_coach($session_id); |
|
|
|
|
$is_platform_admin = api_is_platform_admin(); |
|
|
|
|
$is_drh = api_is_drh(); |
|
|
|
|
$is_session_admin = api_is_session_admin(); |
|
|
|
|
$count_sessions = 0; |
|
|
|
|
$title = ''; |
|
|
|
|
$skipData = api_get_configuration_value('tracking_skip_generic_data'); |
|
|
|
|
|
|
|
|
|
// Access control |
|
|
|
|
api_block_anonymous_users(); |
|
|
|
@ -182,6 +183,7 @@ echo '</div>'; |
|
|
|
|
$userId = api_get_user_id(); |
|
|
|
|
$stats = Tracking::getStats($userId, true); |
|
|
|
|
|
|
|
|
|
$numberStudents = $stats['student_count']; |
|
|
|
|
$students = $stats['student_list']; |
|
|
|
|
$numberStudentBosses = $stats['student_bosses']; |
|
|
|
|
$numberTeachers = $stats['teachers']; |
|
|
|
@ -198,33 +200,16 @@ if (!empty($sessions)) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Sessions for the user |
|
|
|
|
$count_sessions = count($sessions); |
|
|
|
|
$countSessions = count($sessions); |
|
|
|
|
$total_time_spent = 0; |
|
|
|
|
$total_courses = 0; |
|
|
|
|
$avgTotalProgress = 0; |
|
|
|
|
$nb_inactive_students = 0; |
|
|
|
|
$numberAssignments = 0; |
|
|
|
|
$inactiveTime = time() - (3600 * 24 * 7); |
|
|
|
|
$nb_students = 0; |
|
|
|
|
$daysAgo = 7; |
|
|
|
|
$studentIds = array(); |
|
|
|
|
$avg_courses_per_student = 0; |
|
|
|
|
if (!empty($students)) { |
|
|
|
|
// Students |
|
|
|
|
$nb_students = count($students); |
|
|
|
|
$studentIds = array_values($students); |
|
|
|
|
$progress = Tracking::get_avg_student_progress($studentIds); |
|
|
|
|
$countAssignments = Tracking::count_student_assignments($studentIds); |
|
|
|
|
// average progress |
|
|
|
|
$avgTotalProgress = $progress / $nb_students; |
|
|
|
|
// average assignments |
|
|
|
|
$numberAssignments = $countAssignments / $nb_students; |
|
|
|
|
$avg_courses_per_student = $countCourses / $nb_students; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$totalTimeSpent = Tracking::get_time_spent_on_the_platform($studentIds); |
|
|
|
|
$posts = Tracking::count_student_messages($studentIds); |
|
|
|
|
$averageScore = Tracking::getAverageStudentScore($studentIds); |
|
|
|
|
|
|
|
|
|
$linkAddUser = null; |
|
|
|
|
$linkCourseDetailsAsTeacher = null; |
|
|
|
@ -262,7 +247,7 @@ echo '<div class="report_section"> |
|
|
|
|
get_lang('FollowedStudents'), |
|
|
|
|
api_get_path(WEB_CODE_PATH).'mySpace/student.php' |
|
|
|
|
).'</td> |
|
|
|
|
<td align="right">'.$nb_students.'</td> |
|
|
|
|
<td align="right">'.$numberStudents.'</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.Display::url( |
|
|
|
@ -293,7 +278,7 @@ echo '<div class="report_section"> |
|
|
|
|
api_get_path(WEB_CODE_PATH).'mySpace/users.php' |
|
|
|
|
). |
|
|
|
|
'</td> |
|
|
|
|
<td align="right">'.($nb_students + $numberStudentBosses + $numberTeachers + $countHumanResourcesUsers).$linkAddUser.'</td> |
|
|
|
|
<td align="right">'.($numberStudents + $numberStudentBosses + $numberTeachers + $countHumanResourcesUsers).$linkAddUser.'</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.Display::url( |
|
|
|
@ -317,90 +302,109 @@ echo '<div class="report_section"> |
|
|
|
|
api_get_path(WEB_CODE_PATH).'mySpace/session.php' |
|
|
|
|
). |
|
|
|
|
'</td> |
|
|
|
|
<td align="right">'.$count_sessions.$linkAddSession.'</td> |
|
|
|
|
<td align="right">'.$countSessions.$linkAddSession.'</td> |
|
|
|
|
</tr> |
|
|
|
|
</table>'; |
|
|
|
|
echo '</div>'; |
|
|
|
|
|
|
|
|
|
echo Display::page_subheader(get_lang('Students').' ('.$nb_students.')'); |
|
|
|
|
echo Display::page_subheader(get_lang('Students').' ('.$numberStudents.')'); |
|
|
|
|
|
|
|
|
|
if ($export_csv) { |
|
|
|
|
//csv part |
|
|
|
|
$csv_content[] = array(get_lang('Students')); |
|
|
|
|
$csv_content[] = array(get_lang('InactivesStudents'), $nb_inactive_students); |
|
|
|
|
$csv_content[] = array(get_lang('AverageTimeSpentOnThePlatform'), $totalTimeSpent); |
|
|
|
|
$csv_content[] = array(get_lang('AverageCoursePerStudent'), $avg_courses_per_student); |
|
|
|
|
$csv_content[] = array(get_lang('AverageProgressInLearnpath'), is_null($avgTotalProgress) ? null : round($avgTotalProgress, 2).'%'); |
|
|
|
|
$csv_content[] = array(get_lang('AverageResultsToTheExercices'), is_null($averageScore) ? null : round($averageScore, 2).'%'); |
|
|
|
|
$csv_content[] = array(get_lang('AveragePostsInForum'), $posts); |
|
|
|
|
$csv_content[] = array(get_lang('AverageAssignments'), $numberAssignments); |
|
|
|
|
$csv_content[] = array(); |
|
|
|
|
} else { |
|
|
|
|
$lastConnectionDate = api_get_utc_datetime(strtotime('15 days ago')); |
|
|
|
|
$countActiveUsers = SessionManager::getCountUserTracking( |
|
|
|
|
null, |
|
|
|
|
1, |
|
|
|
|
null, |
|
|
|
|
array(), |
|
|
|
|
array() |
|
|
|
|
); |
|
|
|
|
$countSleepingTeachers = SessionManager::getTeacherTracking( |
|
|
|
|
api_get_user_id(), |
|
|
|
|
1, |
|
|
|
|
$lastConnectionDate, |
|
|
|
|
true, |
|
|
|
|
$sessionIdList |
|
|
|
|
); |
|
|
|
|
$form = new FormValidator( |
|
|
|
|
'search_user', |
|
|
|
|
'get', |
|
|
|
|
api_get_path(WEB_CODE_PATH).'mySpace/student.php' |
|
|
|
|
); |
|
|
|
|
$form = Tracking::setUserSearchForm($form); |
|
|
|
|
$form->display(); |
|
|
|
|
|
|
|
|
|
$countSleepingStudents = SessionManager::getCountUserTracking( |
|
|
|
|
null, |
|
|
|
|
1, |
|
|
|
|
$lastConnectionDate, |
|
|
|
|
$sessionIdList, |
|
|
|
|
$studentIds |
|
|
|
|
); |
|
|
|
|
$skipData = api_get_configuration_value('tracking_skip_generic_data'); |
|
|
|
|
|
|
|
|
|
$form = new FormValidator( |
|
|
|
|
'search_user', |
|
|
|
|
'get', |
|
|
|
|
api_get_path(WEB_CODE_PATH).'mySpace/student.php' |
|
|
|
|
); |
|
|
|
|
$form = Tracking::setUserSearchForm($form); |
|
|
|
|
$form->display(); |
|
|
|
|
|
|
|
|
|
// html part |
|
|
|
|
echo '<div class="report_section"> |
|
|
|
|
<table class="table table-bordered table-striped"> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.get_lang('AverageCoursePerStudent').'</td> |
|
|
|
|
<td align="right">'.(is_null($avg_courses_per_student) ? '' : round($avg_courses_per_student, 2)).'</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.get_lang('InactivesStudents').'</td> |
|
|
|
|
<td align="right">'.$nb_inactive_students.'</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.get_lang('AverageTimeSpentOnThePlatform').'</td> |
|
|
|
|
<td align="right">'.(is_null($totalTimeSpent) ? '' : api_time_to_hms($totalTimeSpent)).'</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.get_lang('AverageProgressInLearnpath').'</td> |
|
|
|
|
<td align="right">'.(is_null($avgTotalProgress) ? '' : round($avgTotalProgress, 2).'%').'</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.get_lang('AvgCourseScore').'</td> |
|
|
|
|
<td align="right">'.(is_null($averageScore) ? '' : round($averageScore, 2).'%').'</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.get_lang('AveragePostsInForum').'</td> |
|
|
|
|
<td align="right">'.(is_null($posts) ? '' : round($posts, 2)).'</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.get_lang('AverageAssignments').'</td> |
|
|
|
|
<td align="right">'.(is_null($numberAssignments) ? '' : round($numberAssignments, 2)).'</td> |
|
|
|
|
</tr> |
|
|
|
|
</table> |
|
|
|
|
</div>'; |
|
|
|
|
if ($skipData == false) { |
|
|
|
|
if (!empty($students)) { |
|
|
|
|
// Students |
|
|
|
|
$studentIds = array_values($students); |
|
|
|
|
$progress = Tracking::get_avg_student_progress($studentIds); |
|
|
|
|
$countAssignments = Tracking::count_student_assignments($studentIds); |
|
|
|
|
// average progress |
|
|
|
|
$avgTotalProgress = $progress / $numberStudents; |
|
|
|
|
// average assignments |
|
|
|
|
$numberAssignments = $countAssignments / $numberStudents; |
|
|
|
|
$avg_courses_per_student = $countCourses / $numberStudents; |
|
|
|
|
$totalTimeSpent = Tracking::get_time_spent_on_the_platform($studentIds); |
|
|
|
|
$posts = Tracking::count_student_messages($studentIds); |
|
|
|
|
$averageScore = Tracking::getAverageStudentScore($studentIds); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($export_csv) { |
|
|
|
|
//csv part |
|
|
|
|
$csv_content[] = array(get_lang('Students')); |
|
|
|
|
$csv_content[] = array(get_lang('InactivesStudents'), $nb_inactive_students); |
|
|
|
|
$csv_content[] = array(get_lang('AverageTimeSpentOnThePlatform'), $totalTimeSpent); |
|
|
|
|
$csv_content[] = array(get_lang('AverageCoursePerStudent'), $avg_courses_per_student); |
|
|
|
|
$csv_content[] = array(get_lang('AverageProgressInLearnpath'), is_null($avgTotalProgress) ? null : round($avgTotalProgress, 2).'%'); |
|
|
|
|
$csv_content[] = array(get_lang('AverageResultsToTheExercices'), is_null($averageScore) ? null : round($averageScore, 2).'%'); |
|
|
|
|
$csv_content[] = array(get_lang('AveragePostsInForum'), $posts); |
|
|
|
|
$csv_content[] = array(get_lang('AverageAssignments'), $numberAssignments); |
|
|
|
|
$csv_content[] = array(); |
|
|
|
|
} else { |
|
|
|
|
$lastConnectionDate = api_get_utc_datetime(strtotime('15 days ago')); |
|
|
|
|
$countActiveUsers = SessionManager::getCountUserTracking( |
|
|
|
|
null, |
|
|
|
|
1, |
|
|
|
|
null, |
|
|
|
|
array(), |
|
|
|
|
array() |
|
|
|
|
); |
|
|
|
|
$countSleepingTeachers = SessionManager::getTeacherTracking( |
|
|
|
|
api_get_user_id(), |
|
|
|
|
1, |
|
|
|
|
$lastConnectionDate, |
|
|
|
|
true, |
|
|
|
|
$sessionIdList |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
$countSleepingStudents = SessionManager::getCountUserTracking( |
|
|
|
|
null, |
|
|
|
|
1, |
|
|
|
|
$lastConnectionDate, |
|
|
|
|
$sessionIdList, |
|
|
|
|
$studentIds |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// html part |
|
|
|
|
echo '<div class="report_section"> |
|
|
|
|
<table class="table table-bordered table-striped"> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.get_lang('AverageCoursePerStudent').'</td> |
|
|
|
|
<td align="right">'.(is_null($avg_courses_per_student) ? '' : round($avg_courses_per_student, 2)).'</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.get_lang('InactivesStudents').'</td> |
|
|
|
|
<td align="right">'.$nb_inactive_students.'</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.get_lang('AverageTimeSpentOnThePlatform').'</td> |
|
|
|
|
<td align="right">'.(is_null($totalTimeSpent) ? '' : api_time_to_hms($totalTimeSpent)).'</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.get_lang('AverageProgressInLearnpath').'</td> |
|
|
|
|
<td align="right">'.(is_null($avgTotalProgress) ? '' : round($avgTotalProgress, 2).'%').'</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.get_lang('AvgCourseScore').'</td> |
|
|
|
|
<td align="right">'.(is_null($averageScore) ? '' : round($averageScore, 2).'%').'</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.get_lang('AveragePostsInForum').'</td> |
|
|
|
|
<td align="right">'.(is_null($posts) ? '' : round($posts, 2)).'</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>'.get_lang('AverageAssignments').'</td> |
|
|
|
|
<td align="right">'.(is_null($numberAssignments) ? '' : round($numberAssignments, 2)).'</td> |
|
|
|
|
</tr> |
|
|
|
|
</table> |
|
|
|
|
</div>'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Send the csv file if asked |
|
|
|
|