if (api_is_drh()) { $sessions = SessionManager::get_sessions_followed_by_drh(api_get_user_id(), $start, $limit, false, false, false, null, $keyword, $description); } else { // Sessions for the coach $sessions = Tracking::get_sessions_coached_by_user(api_get_user_id(), $start, $limit, false, $keyword, $description); } $columns = array('name', 'date', 'course_per_session', 'student_per_session', 'details'); $result = array(); if (!empty($sessions)) { foreach ($sessions as $session) { if (api_drh_can_access_all_session_content()) { $count_courses_in_session = count(SessionManager::get_course_list_by_session_id($session['id'])); } else { $count_courses_in_session = count(Tracking::get_courses_followed_by_coach($user_id, $session['id'])); } $count_users_in_session = count(SessionManager::get_users_by_session($session['id'], 0)); $session_date = array(); if (!empty($session['access_start_date']) && $session['access_start_date'] != '0000-00-00') { $session_date[] = get_lang('From') . ' ' . api_format_date($session['access_start_date'], DATE_FORMAT_SHORT); } if (!empty($session['access_end_date']) && $session['access_end_date'] != '0000-00-00') { $session_date[] = get_lang('Until') . ' ' . api_format_date($session['access_end_date'], DATE_FORMAT_SHORT); } if (empty($session_date)) { $session_date_string = '-'; } else { $session_date_string = implode(' ', $session_date); } $sessionUrl = api_get_path(WEB_CODE_PATH) . 'mySpace/course.php?session_id=' . $session['id']; $result[] = array('name' => $session['name'], 'date' => $session_date_string, 'course_per_session' => $count_courses_in_session, 'student_per_session' => $count_users_in_session, 'details' => Display::url(Display::return_icon('2rightarrow.png'), $sessionUrl)); }
$course_founded = false; foreach ($new_course_list as $course_item) { if ($origin_course_code == $course_item['code']) { $course_founded = true; } } $result_message = array(); $result_message_compare = array(); $update_database = true; if (isset($_REQUEST['view_stat']) && $_REQUEST['view_stat'] == 1) { $update_database = false; } //Check if the same course exist in the session destination if ($course_founded) { //Check if the user is registered in the session otherwise we will add it $result = SessionManager::get_users_by_session($new_session_id); if (empty($result) || !in_array($user_id, array_keys($result))) { if ($debug) { echo 'User added to the session'; } //Registering user to the new session SessionManager::suscribe_users_to_session($new_session_id, array($user_id), false); } //Begin with the import process $course_info = api_get_course_info($origin_course_code); $course_id = $course_info['real_id']; $TABLETRACK_EXERCICES = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES); $TBL_TRACK_ATTEMPT = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ATTEMPT); $TBL_TRACK_E_COURSE_ACCESS = Database::get_main_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS); $TBL_TRACK_E_LAST_ACCESS = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LASTACCESS); $TBL_LP_VIEW = Database::get_course_table(TABLE_LP_VIEW);
/** * Shows the user progress (when clicking in the Progress tab) * * @param int $user_id * @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) { $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); $tbl_access_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $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 c.code, title\n FROM {$tbl_course_user} cu\n INNER JOIN {$tbl_course} c\n ON (cu.c_id = c.id)\n INNER JOIN {$tbl_access_rel_course} a\n ON (a.c_id = c.id)\n WHERE\n cu.user_id = {$user_id} AND\n relation_type<> " . COURSE_RELATION_TYPE_RRHH . " AND\n access_url_id = " . api_get_current_access_url_id() . "\n ORDER BY title"; } else { $sql = "SELECT c.code, title\n FROM {$tbl_course_user} u\n INNER JOIN {$tbl_course} c ON (c_id = c.id)\n WHERE\n u.user_id= {$user_id} AND\n relation_type<>" . COURSE_RELATION_TYPE_RRHH . "\n ORDER BY title"; } $rs = Database::query($sql); $courses = $course_in_session = $temp_course_in_session = array(); while ($row = Database::fetch_array($rs, 'ASSOC')) { $courses[$row['code']] = $row['title']; } $orderBy = " ORDER BY name "; $extraInnerJoin = null; 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\n ON (cu.c_id = src.c_id AND src.session_id = {$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 if (api_is_multiple_url_enabled()) { $sql = "SELECT DISTINCT c.code, s.id as session_id, name\n FROM {$tbl_session_course_user} cu\n INNER JOIN {$tbl_access_rel_session} a\n ON (a.session_id = cu.session_id)\n INNER JOIN {$tbl_session} s\n ON (s.id = a.session_id)\n INNER JOIN {$tbl_course} c\n ON (c.id = cu.c_id)\n {$extraInnerJoin}\n WHERE\n cu.user_id = {$user_id} AND\n access_url_id = " . api_get_current_access_url_id() . "\n {$sessionCondition}\n {$orderBy} "; } else { $sql = "SELECT DISTINCT c.code, s.id as session_id, name\n FROM {$tbl_session_course_user} cu\n INNER JOIN {$tbl_session} s\n ON (s.id = cu.session_id)\n INNER JOIN {$tbl_course} c\n ON (c.id = cu.c_id)\n {$extraInnerJoin}\n WHERE\n cu.user_id = {$user_id}\n {$sessionCondition}\n {$orderBy} "; } $rs = Database::query($sql); $simple_session_array = array(); while ($row = Database::fetch_array($rs)) { $course_info = CourseManager::get_course_information($row['code']); $temp_course_in_session[$row['session_id']]['course_list'][$course_info['real_id']] = $course_info; $temp_course_in_session[$row['session_id']]['name'] = $row['name']; $simple_session_array[$row['session_id']] = $row['name']; } foreach ($simple_session_array as $my_session_id => $session_name) { $course_list = $temp_course_in_session[$my_session_id]['course_list']; $my_course_data = array(); foreach ($course_list as $course_data) { $my_course_data[$course_data['id']] = $course_data['title']; } if (empty($session_id)) { $my_course_data = ArrayClass::utf8_sort($my_course_data); } $final_course_data = array(); foreach ($my_course_data as $course_id => $value) { $final_course_data[$course_id] = $course_list[$course_id]; } $course_in_session[$my_session_id]['course_list'] = $final_course_data; $course_in_session[$my_session_id]['name'] = $session_name; } $html = ''; // Course list 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')); $html .= '<table class="data_table" width="100%">'; $html .= '<tr> ' . Display::tag('th', get_lang('Course'), array('width' => '300px')) . ' ' . Display::tag('th', get_lang('TimeSpentInTheCourse'), array('class' => 'head')) . ' ' . Display::tag('th', get_lang('Progress'), array('class' => 'head')) . ' ' . Display::tag('th', get_lang('Score') . Display::return_icon('info3.gif', get_lang('ScormAndLPTestTotalAverage'), array('align' => 'absmiddle', 'hspace' => '3px')), array('class' => 'head')) . ' ' . Display::tag('th', get_lang('LastConnexion'), array('class' => 'head')) . ' ' . Display::tag('th', get_lang('Details'), array('class' => 'head')) . ' </tr>'; foreach ($courses as $course_code => $course_title) { $courseInfo = api_get_course_info($course_code); $courseId = $courseInfo['real_id']; $total_time_login = Tracking::get_time_spent_on_the_course($user_id, $courseId); $time = api_time_to_hms($total_time_login); $progress = Tracking::get_avg_student_progress($user_id, $course_code); $percentage_score = Tracking::get_avg_student_score($user_id, $course_code, array()); $last_connection = Tracking::get_last_connection_date_on_the_course($user_id, $courseInfo); if (is_null($progress)) { $progress = '0%'; } else { $progress = $progress . '%'; } if (isset($_GET['course']) && $course_code == $_GET['course'] && empty($_GET['session_id'])) { $html .= '<tr class="row_odd" style="background-color:#FBF09D">'; } else { $html .= '<tr class="row_even">'; } $url = api_get_course_url($course_code, $session_id); $course_url = Display::url($course_title, $url, array('target' => SESSION_LINK_TARGET)); $html .= '<td>' . $course_url . '</td>'; $html .= '<td align="center">' . $time . '</td>'; $html .= '<td align="center">' . $progress . '</td>'; $html .= '<td align="center">'; if (is_numeric($percentage_score)) { $html .= $percentage_score . '%'; } else { $html .= '0%'; } $html .= '</td>'; $html .= '<td align="center">' . $last_connection . '</td>'; $html .= '<td align="center">'; if (isset($_GET['course']) && $course_code == $_GET['course'] && empty($_GET['session_id'])) { $html .= '<a href="#">'; $html .= Display::return_icon('2rightarrow_na.png', get_lang('Details')); } else { $html .= '<a href="' . api_get_self() . '?course=' . $course_code . $extra_params . '">'; $html .= Display::return_icon('2rightarrow.png', get_lang('Details')); } $html .= '</a>'; $html .= '</td></tr>'; } $html .= '</table>'; } } // Session list if (!empty($course_in_session)) { $main_session_graph = ''; //Load graphics only when calling to an specific session $session_graph = array(); $all_exercise_graph_name_list = array(); $my_results = array(); $all_exercise_graph_list = array(); $all_exercise_start_time = array(); foreach ($course_in_session as $my_session_id => $session_data) { $course_list = $session_data['course_list']; $session_name = $session_data['name']; $user_count = count(SessionManager::get_users_by_session($my_session_id)); $exercise_graph_name_list = array(); //$user_results = array(); $exercise_graph_list = array(); foreach ($course_list as $course_data) { $exercise_list = ExerciseLib::get_all_exercises($course_data, $my_session_id, false, null, 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) { $best_average = intval(ExerciseLib::get_best_average_score_by_exercise($exercise_data['id'], $course_data['id'], $my_session_id, $user_count)); $exercise_graph_list[] = $best_average; $all_exercise_graph_list[] = $best_average; $user_result_data = ExerciseLib::get_best_attempt_by_user(api_get_user_id(), $exercise_data['id'], $course_data['real_id'], $my_session_id); $score = 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; $all_exercise_start_time[] = $time; $my_results[] = $score; if (count($exercise_list) <= 10) { $title = cut($course_data['title'], 30) . " \n " . cut($exercise_data['title'], 30); $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 $title = cut($exercise_data['title'], 30); $exercise_graph_name_list[] = $title; $all_exercise_graph_name_list[] = $title; } } } } } // Complete graph if (!empty($my_results) && !empty($all_exercise_graph_list)) { asort($all_exercise_start_time); //Fix exams order $final_all_exercise_graph_name_list = array(); $my_results_final = array(); $final_all_exercise_graph_list = array(); foreach ($all_exercise_start_time as $key => $time) { $label_time = ''; if (!empty($time)) { $label_time = date('d-m-y', $time); } $final_all_exercise_graph_name_list[] = $all_exercise_graph_name_list[$key] . ' ' . $label_time; $my_results_final[] = $my_results[$key]; $final_all_exercise_graph_list[] = $all_exercise_graph_list[$key]; } $main_session_graph = self::generate_session_exercise_graph($final_all_exercise_graph_name_list, $my_results_final, $final_all_exercise_graph_list); } $html .= Display::page_subheader(Display::return_icon('session.png', get_lang('Sessions'), array(), ICON_SIZE_SMALL) . ' ' . get_lang('Sessions')); $html .= '<table class="data_table" width="100%">'; $html .= '<tr> ' . Display::tag('th', get_lang('Session'), array('width' => '300px')) . ' ' . Display::tag('th', get_lang('PublishedExercises'), array('width' => '300px')) . ' ' . Display::tag('th', get_lang('NewExercises'), array('class' => 'head')) . ' ' . Display::tag('th', get_lang('AverageExerciseResult'), array('class' => 'head')) . ' ' . Display::tag('th', get_lang('Details'), array('class' => 'head')) . ' </tr>'; foreach ($course_in_session as $my_session_id => $session_data) { $course_list = $session_data['course_list']; $session_name = $session_data['name']; if ($showAllSessions == false) { if (isset($session_id) && !empty($session_id)) { if ($session_id != $my_session_id) { continue; } } } $all_exercises = 0; $all_unanswered_exercises_by_user = 0; $all_average = 0; $stats_array = array(); foreach ($course_list as $course_data) { //All exercises in the course @todo change for a real count $exercises = ExerciseLib::get_all_exercises($course_data, $my_session_id); $count_exercises = 0; if (is_array($exercises) && !empty($exercises)) { $count_exercises = count($exercises); } // Count of user results $done_exercises = null; $courseInfo = api_get_course_info($course_data['code']); $answered_exercises = 0; if (!empty($exercises)) { foreach ($exercises as $exercise_item) { $attempts = Event::count_exercise_attempts_by_user(api_get_user_id(), $exercise_item['id'], $courseInfo['real_id'], $my_session_id); if ($attempts > 1) { $answered_exercises++; } } } // Average $average = ExerciseLib::get_average_score_by_course($courseInfo['real_id'], $my_session_id); $all_exercises += $count_exercises; $all_unanswered_exercises_by_user += $count_exercises - $answered_exercises; $all_average += $average; } $all_average = $all_average / count($course_list); if (isset($_GET['session_id']) && $my_session_id == $_GET['session_id']) { $html .= '<tr style="background-color:#FBF09D">'; } else { $html .= '<tr>'; } $url = api_get_path(WEB_CODE_PATH) . "session/index.php?session_id={$my_session_id}"; $html .= Display::tag('td', Display::url($session_name, $url, array('target' => SESSION_LINK_TARGET))); $html .= Display::tag('td', $all_exercises); $html .= Display::tag('td', $all_unanswered_exercises_by_user); //$html .= Display::tag('td', $all_done_exercise); $html .= Display::tag('td', ExerciseLib::convert_to_percentage($all_average)); if (isset($_GET['session_id']) && $my_session_id == $_GET['session_id']) { $icon = Display::url(Display::return_icon('2rightarrow_na.png', get_lang('Details')), '?session_id=' . $my_session_id); } else { $icon = Display::url(Display::return_icon('2rightarrow.png', get_lang('Details')), '?session_id=' . $my_session_id); } $html .= Display::tag('td', $icon); $html .= '</tr>'; } $html .= '</table><br />'; $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 .= '<table class="data_table" width="100%">'; //'.Display::tag('th', get_lang('DoneExercises'), array('class'=>'head')).' $html .= ' <tr> <th width="300px">' . get_lang('Course') . '</th> ' . Display::tag('th', get_lang('PublishedExercises'), array('class' => 'head')) . ' ' . Display::tag('th', get_lang('NewExercises'), array('class' => 'head')) . ' ' . Display::tag('th', get_lang('MyAverage'), array('class' => 'head')) . ' ' . Display::tag('th', get_lang('AverageExerciseResult'), array('class' => 'head')) . ' ' . Display::tag('th', get_lang('TimeSpentInTheCourse'), array('class' => 'head')) . ' ' . Display::tag('th', get_lang('LPProgress'), array('class' => 'head')) . ' ' . Display::tag('th', get_lang('Score') . Display::return_icon('info3.gif', get_lang('ScormAndLPTestTotalAverage'), array('align' => 'absmiddle', 'hspace' => '3px')), array('class' => 'head')) . ' ' . Display::tag('th', get_lang('LastConnexion'), array('class' => 'head')) . ' ' . Display::tag('th', get_lang('Details'), array('class' => 'head')) . ' </tr>'; foreach ($course_list as $course_data) { $course_code = $course_data['code']; $course_title = $course_data['title']; $courseInfo = api_get_course_info($course_code); $courseId = $courseInfo['real_id']; // All exercises in the course @todo change for a real count $exercises = ExerciseLib::get_all_exercises($course_data, $session_id_from_get); $count_exercises = 0; if (!empty($exercises)) { $count_exercises = count($exercises); } $answered_exercises = 0; foreach ($exercises as $exercise_item) { $attempts = Event::count_exercise_attempts_by_user(api_get_user_id(), $exercise_item['id'], $courseId, $session_id_from_get); if ($attempts > 1) { $answered_exercises++; } } $unanswered_exercises = $count_exercises - $answered_exercises; // Average $average = ExerciseLib::get_average_score_by_course($courseId, $session_id_from_get); $my_average = ExerciseLib::get_average_score_by_course_by_user(api_get_user_id(), $courseId, $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); $weighting = 0; $last_connection = Tracking::get_last_connection_date_on_the_course($user_id, $courseInfo, $session_id_from_get); $progress = Tracking::get_avg_student_progress($user_id, $course_code, array(), $session_id_from_get); $total_time_login = Tracking::get_time_spent_on_the_course($user_id, $courseId, $session_id_from_get); $time = api_time_to_hms($total_time_login); $percentage_score = Tracking::get_avg_student_score($user_id, $course_code, array(), $session_id_from_get); $courseCodeFromGet = isset($_GET['course']) ? $_GET['course'] : null; if ($course_code == $courseCodeFromGet && $_GET['session_id'] == $session_id_from_get) { $html .= '<tr class="row_odd" style="background-color:#FBF09D" >'; } else { $html .= '<tr class="row_even">'; } $url = api_get_course_url($course_code, $session_id_from_get); $course_url = Display::url($course_title, $url, array('target' => SESSION_LINK_TARGET)); $html .= Display::tag('td', $course_url); $html .= Display::tag('td', $stats_array[$course_code]['exercises']); $html .= Display::tag('td', $stats_array[$course_code]['unanswered_exercises_by_user']); //$html .= Display::tag('td', $stats_array[$course_code]['done_exercises']); $html .= Display::tag('td', ExerciseLib::convert_to_percentage($stats_array[$course_code]['my_average'])); $html .= Display::tag('td', $stats_array[$course_code]['average'] == 0 ? '-' : '(' . ExerciseLib::convert_to_percentage($stats_array[$course_code]['average']) . ')'); $html .= Display::tag('td', $time, array('align' => 'center')); if (is_numeric($progress)) { $progress = $progress . '%'; } else { $progress = '0%'; } //Progress $html .= Display::tag('td', $progress, array('align' => 'center')); if (is_numeric($percentage_score)) { $percentage_score = $percentage_score . '%'; } else { $percentage_score = '0%'; } //Score $html .= Display::tag('td', $percentage_score, array('align' => 'center')); $html .= Display::tag('td', $last_connection, array('align' => 'center')); if ($course_code == $courseCodeFromGet && $_GET['session_id'] == $session_id_from_get) { $details = '<a href="#">'; $details .= Display::return_icon('2rightarrow_na.png', get_lang('Details')); } else { $details = '<a href="' . api_get_self() . '?course=' . $course_code . '&session_id=' . $session_id_from_get . $extra_params . '">'; $details .= Display::return_icon('2rightarrow.png', get_lang('Details')); } $details .= '</a>'; $html .= Display::tag('td', $details, array('align' => 'center')); $html .= '</tr>'; } $html .= '</table>'; } } return $html; }
echo '</div>'; } echo '</div>'; if (api_is_platform_admin()) { echo '<a href="' . api_get_path(WEB_CODE_PATH) . 'mySpace/?view=admin&display=coaches">' . get_lang('DisplayCoaches') . '</a> | '; echo '<a href="' . api_get_path(WEB_CODE_PATH) . 'mySpace/?view=admin&display=useroverview">' . get_lang('DisplayUserOverview') . '</a>'; echo ' | <a href="' . api_get_path(WEB_CODE_PATH) . 'mySpace/?view=admin&display=sessionoverview">' . get_lang('DisplaySessionOverview') . '</a>'; echo ' | <a href="' . api_get_path(WEB_CODE_PATH) . 'mySpace/?view=admin&display=courseoverview">' . get_lang('DisplayCourseOverview') . '</a>'; echo ' | <a href="' . api_get_path(WEB_CODE_PATH) . 'tracking/question_course_report.php?view=admin">' . get_lang('LPQuestionListResults') . '</a>'; echo ' | ' . get_lang('LPExerciseResultsBySession') . ''; } echo '<h2>' . get_lang('LPExerciseResultsBySession') . '</h2>'; $form->display(); Display::display_normal_message(get_lang('StudentScoreAverageIsCalculatedBaseInAllLPsAndAllAttempts')); } $users = SessionManager::get_users_by_session($session_id); $course_average = $course_average_counter = array(); $counter = 0; $main_result = array(); //Getting course list foreach ($course_list as $current_course) { $course_info = api_get_course_info($current_course['code']); $_course = $course_info; $attempt_result = array(); //Getting LP list $list = new LearnpathList('', $current_course['code'], $session_id); $lp_list = $list->get_flat_list(); // Looping LPs foreach ($lp_list as $lp_id => $lp) { $exercise_list = ExerciseLib::get_all_exercises_from_lp($lp_id, $course_info['real_id']); //Looping Chamilo Exercises in LP
/** * @param int $user_id * @param bool $include_sessions * @return array */ public static function get_user_list_from_courses_as_coach($user_id, $include_sessions = true) { $students_in_courses = array(); $sessions = CourseManager::get_course_list_as_coach($user_id, true); if (!empty($sessions)) { foreach ($sessions as $session_id => $courses) { if (!$include_sessions) { if (!empty($session_id)) { continue; } } if (empty($session_id)) { foreach ($courses as $course_code) { $students_in_course = CourseManager::get_user_list_from_course_code($course_code); foreach ($students_in_course as $user_item) { //Only students if ($user_item['status_rel'] == STUDENT) { $students_in_courses[$user_item['user_id']] = $user_item['user_id']; } } } } else { $students_in_course = SessionManager::get_users_by_session($session_id, '0'); if (is_array($students_in_course)) { foreach ($students_in_course as $user_item) { $students_in_courses[$user_item['user_id']] = $user_item['user_id']; } } } } } $students = Tracking::get_student_followed_by_coach($user_id); if (!empty($students_in_courses)) { if (!empty($students)) { $students = array_merge($students, $students_in_courses); } else { $students = $students_in_courses; } } if (!empty($students)) { $students = array_unique($students); } return $students; }
/* For licensing terms, see /license.txt */ /* * Report from students for learning path */ require_once '../inc/global.inc.php'; $isAllowedToEdit = api_is_allowed_to_edit(null, true); if (!$isAllowedToEdit) { api_not_allowed(true); } $lpTable = Database::get_course_table(TABLE_LP_MAIN); $lpId = isset($_GET['lp_id']) ? boolval($_GET['lp_id']) : false; $sessionId = api_get_session_id(); $courseId = api_get_course_int_id(); $courseCode = api_get_course_id(); $sessionUsers = SessionManager::get_users_by_session($sessionId, 0); $userList = []; $lpInfo = Database::select('*', $lpTable, array('where' => array('c_id = ? AND ' => $courseId, 'id = ?' => $lpId)), 'first'); foreach ($sessionUsers as $user) { $lpTime = Tracking::get_time_spent_in_lp($user['user_id'], $courseCode, array($lpId), $sessionId); $lpScore = Tracking::get_avg_student_score($user['user_id'], $courseCode, array($lpId), $sessionId); $lpPogress = Tracking::get_avg_student_progress($user['user_id'], $courseCode, array($lpId), $sessionId); $lpLastConnection = Tracking::get_last_connection_time_in_lp($user['user_id'], $courseCode, array($lpId), $sessionId); $lpLastConnection = empty($lpLastConnection) ? '-' : api_convert_and_format_date($lpLastConnection, DATE_TIME_FORMAT_LONG); $userList[] = ['id' => $user['user_id'], 'first_name' => $user['firstname'], 'last_name' => $user['lastname'], 'lp_time' => api_time_to_hms($lpTime), 'lp_score' => is_numeric($lpScore) ? "{$lpScore}%" : $lpScore, 'lp_progress' => "{$lpPogress}%", 'lp_last_connection' => $lpLastConnection]; } // View $interbreadcrumb[] = ['url' => api_get_path(WEB_CODE_PATH) . 'newscorm/lp_controller.php', 'name' => get_lang('LearningPaths')]; $actions = Display::url(Display::return_icon('back.png', get_lang('Back'), array(), ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH) . 'newscorm/lp_controller.php?' . api_get_cidreq()); $template = new Template(get_lang('StudentScore')); $template->assign('user_list', $userList);
<a href="session_course_user_list.php?id_session=' . $sessionId . '&course_code=' . $course->getCode() . '">' . Display::return_icon('user.png', get_lang('Edit'), '', ICON_SIZE_SMALL) . '</a> <a href="' . api_get_path(WEB_CODE_PATH) . '/user/user_import.php?action=import&cidReq=' . $course->getCode() . '&id_session=' . $sessionId . '">' . Display::return_icon('import_csv.png', get_lang('ImportUsersToACourse'), null, ICON_SIZE_SMALL) . '</a> <a href="../tracking/courseLog.php?id_session=' . $sessionId . '&cidReq=' . $course->getCode() . $orig_param . '&hide_course_breadcrumb=1">' . Display::return_icon('statistics.gif', get_lang('Tracking')) . '</a> <a href="session_course_edit.php?id_session=' . $sessionId . '&page=resume_session.php&course_code=' . $course->getCode() . '' . $orig_param . '">' . Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_SMALL) . '</a> <a href="' . api_get_self() . '?id_session=' . $sessionId . '&action=delete&idChecked[]=' . $course->getCode() . '" onclick="javascript:if(!confirm(\'' . get_lang('ConfirmYourChoice') . '\')) return false;">' . Display::return_icon('delete.png', get_lang('Delete')) . '</a> </td> </tr>'; $count++; } $courseListToShow .= $courseItem; } $courseListToShow .= '</table><br />'; $url = Display::url(Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL), "add_users_to_session.php?page=resume_session.php&id_session={$sessionId}"); $url .= Display::url(Display::return_icon('import_csv.png', get_lang('ImportUsers'), array(), ICON_SIZE_SMALL), "session_user_import.php?id_session={$sessionId}"); $userListToShow = Display::page_subheader(get_lang('UserList') . $url); $userList = SessionManager::get_users_by_session($sessionId); if (!empty($userList)) { $table = new HTML_Table(array('class' => 'data_table', 'id' => 'session-user-list')); $table->setHeaderContents(0, 0, get_lang('User')); $table->setHeaderContents(0, 1, get_lang('Status')); $table->setHeaderContents(0, 2, get_lang('Actions')); $row = 1; foreach ($userList as $user) { $userId = $user['user_id']; $userInfo = api_get_user_info($userId); $userLink = '<a href="' . api_get_path(WEB_CODE_PATH) . 'admin/user_information.php?user_id=' . $userId . '">' . api_htmlentities($userInfo['complete_name_with_username']) . '</a>'; $reportingLink = Display::url(Display::return_icon('statistics.gif', get_lang('Reporting')), api_get_path(WEB_CODE_PATH) . 'mySpace/myStudents.php?student=' . $user['user_id'] . '' . $orig_param . '&id_session=' . $sessionId); $courseUserLink = Display::url(Display::return_icon('course.png', get_lang('BlockCoursesForThisUser')), api_get_path(WEB_CODE_PATH) . 'session/session_course_user.php?id_user='******'user_id'] . '&id_session=' . $sessionId); $removeLink = Display::url(Display::return_icon('delete.png', get_lang('Delete')), api_get_self() . '?id_session=' . $sessionId . '&action=delete&user='******'user_id'], array('onclick' => "javascript:if(!confirm('" . get_lang('ConfirmYourChoice') . "')) return false;")); $addUserToUrlLink = ''; if ($multiple_url_is_on) {
</th> <th> <?php echo get_lang('Actions'); ?> </th> </tr> <?php /* if ($session['nbr_users'] == 0) { } else { */ $orig_param = '&origin=resume_session&id_session=' . $id_session; // change breadcrumb in destination page $users = SessionManager::get_users_by_session($id_session, 0); //$reasons = SessionManager::get_session_change_user_reasons(); if (!empty($users)) { foreach ($users as $user) { $user_info = api_get_user_info($user['user_id']); //$link_class = 'class="item_disabled"'; $link_class = null; $user_status_in_platform = Display::return_icon('error.png', get_lang('Inactive')); $information = ''; $moved_date = '-'; if ($user_info['active'] == 1) { $user_status_in_platform = Display::return_icon('accept.png', get_lang('Active')); //$link_class = null; } else { $status_info = get_latest_event_by_user_and_type($user['user_id'], LOG_USER_DEACTIVATED); //var_dump($status_info);
<?php require '../../main/inc/global.inc.php'; require '../../main/inc/lib/attendance.lib.php'; $a = new Attendance(); $sessions_list = SessionManager::get_sessions_list(); $min = 90000; $max = 999999; // Get sessions foreach ($sessions_list as $session) { if ($session['id'] < $min) { continue; } echo "Session " . $session['id'] . "\n"; // Get users in session to build users list $users = SessionManager::get_users_by_session($session['id']); $u = array(); foreach ($users as $user) { $u[] = $user['user_id']; } // Get courses list to get the right course (only one in each session) $courses = SessionManager::get_course_list_by_session_id($session['id']); if (count($courses) > 0) { foreach ($courses as $course) { $course_id = $course['id']; break; } echo "-- Course " . $course_id . "\n"; // Get attendances sheets from course (only one in each course) $att = $a->get_attendances_list($course_id, $session['id']); if (count($att) > 0) {