Ejemplo n.º 1
0
 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));
     }
Ejemplo n.º 2
0
 $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);
Ejemplo n.º 3
0
 /**
  * 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;
 }
Ejemplo n.º 4
0
        echo '</div>';
    }
    echo '</div>';
    if (api_is_platform_admin()) {
        echo '<a href="' . api_get_path(WEB_CODE_PATH) . 'mySpace/?view=admin&amp;display=coaches">' . get_lang('DisplayCoaches') . '</a> | ';
        echo '<a href="' . api_get_path(WEB_CODE_PATH) . 'mySpace/?view=admin&amp;display=useroverview">' . get_lang('DisplayUserOverview') . '</a>';
        echo ' | <a href="' . api_get_path(WEB_CODE_PATH) . 'mySpace/?view=admin&amp;display=sessionoverview">' . get_lang('DisplaySessionOverview') . '</a>';
        echo ' | <a href="' . api_get_path(WEB_CODE_PATH) . 'mySpace/?view=admin&amp;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
Ejemplo n.º 5
0
 /**
  * @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;
 }
Ejemplo n.º 6
0
/* 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);
Ejemplo n.º 7
0
                <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>&nbsp;
				<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) {
Ejemplo n.º 8
0
        </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) {