Esempio n. 1
0
 /**
  * This function exports the table that we see in display_tracking_user_overview()
  *
  * @author Patrick Cool <*****@*****.**>, Ghent University, Belgium
  * @version Dokeos 1.8.6
  * @since October 2008
  */
 public static function export_tracking_user_overview()
 {
     // database table definitions
     $tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
     $is_western_name_order = api_is_western_name_order(PERSON_NAME_DATA_EXPORT);
     $sort_by_first_name = api_sort_by_first_name();
     // the values of the sortable table
     if ($_GET['tracking_user_overview_page_nr']) {
         $from = $_GET['tracking_user_overview_page_nr'];
     } else {
         $from = 0;
     }
     if ($_GET['tracking_user_overview_column']) {
         $orderby = $_GET['tracking_user_overview_column'];
     } else {
         $orderby = 0;
     }
     if ($is_western_name_order != api_is_western_name_order() && ($orderby == 1 || $orderby == 2)) {
         // Swapping the sorting column if name order for export is different than the common name order.
         $orderby = 3 - $orderby;
     }
     if ($_GET['tracking_user_overview_direction']) {
         $direction = $_GET['tracking_user_overview_direction'];
     } else {
         $direction = 'ASC';
     }
     $user_data = MySpace::get_user_data_tracking_overview($from, 1000, $orderby, $direction);
     // the first line of the csv file with the column headers
     $csv_row = array();
     $csv_row[] = get_lang('OfficialCode');
     if ($is_western_name_order) {
         $csv_row[] = get_lang('FirstName', '');
         $csv_row[] = get_lang('LastName', '');
     } else {
         $csv_row[] = get_lang('LastName', '');
         $csv_row[] = get_lang('FirstName', '');
     }
     $csv_row[] = get_lang('LoginName');
     $csv_row[] = get_lang('CourseCode');
     // the additional user defined fields (only those that were selected to be exported)
     $fields = UserManager::get_extra_fields(0, 50, 5, 'ASC');
     if (is_array($_SESSION['additional_export_fields'])) {
         foreach ($_SESSION['additional_export_fields'] as $key => $extra_field_export) {
             $csv_row[] = $fields[$extra_field_export][3];
             $field_names_to_be_exported[] = 'extra_' . $fields[$extra_field_export][1];
         }
     }
     $csv_row[] = get_lang('AvgTimeSpentInTheCourse', '');
     $csv_row[] = get_lang('AvgStudentsProgress', '');
     $csv_row[] = get_lang('AvgCourseScore', '');
     $csv_row[] = get_lang('AvgExercisesScore', '');
     $csv_row[] = get_lang('AvgMessages', '');
     $csv_row[] = get_lang('AvgAssignments', '');
     $csv_row[] = get_lang('TotalExercisesScoreObtained', '');
     $csv_row[] = get_lang('TotalExercisesScorePossible', '');
     $csv_row[] = get_lang('TotalExercisesAnswered', '');
     $csv_row[] = get_lang('TotalExercisesScorePercentage', '');
     $csv_row[] = get_lang('FirstLogin', '');
     $csv_row[] = get_lang('LatestLogin', '');
     $csv_content[] = $csv_row;
     // the other lines (the data)
     foreach ($user_data as $key => $user) {
         // getting all the courses of the user
         $sql = "SELECT * FROM {$tbl_course_user}\n                    WHERE user_id = '" . intval($user[4]) . "' AND relation_type<>" . COURSE_RELATION_TYPE_RRHH . " ";
         $result = Database::query($sql);
         while ($row = Database::fetch_row($result)) {
             $courseInfo = api_get_course_info($row['course_code']);
             $courseId = $courseInfo['real_id'];
             $csv_row = array();
             // user official code
             $csv_row[] = $user[0];
             // user first|last name
             $csv_row[] = $user[1];
             // user last|first name
             $csv_row[] = $user[2];
             // user login name
             $csv_row[] = $user[3];
             // course code
             $csv_row[] = $row[0];
             // the additional defined user fields
             $extra_fields = MySpace::get_user_overview_export_extra_fields($user[4]);
             if (is_array($field_names_to_be_exported)) {
                 foreach ($field_names_to_be_exported as $key => $extra_field_export) {
                     $csv_row[] = $extra_fields[$extra_field_export];
                 }
             }
             // time spent in the course
             $csv_row[] = api_time_to_hms(Tracking::get_time_spent_on_the_course($user[4], $courseId));
             // student progress in course
             $csv_row[] = round(Tracking::get_avg_student_progress($user[4], $row[0]), 2);
             // student score
             $csv_row[] = round(Tracking::get_avg_student_score($user[4], $row[0]), 2);
             // student tes score
             $csv_row[] = round(Tracking::get_avg_student_exercise_score($user[4], $row[0]), 2);
             // student messages
             $csv_row[] = Tracking::count_student_messages($user[4], $row[0]);
             // student assignments
             $csv_row[] = Tracking::count_student_assignments($user[4], $row[0]);
             // student exercises results
             $exercises_results = MySpace::exercises_results($user[4], $row[0]);
             $csv_row[] = $exercises_results['score_obtained'];
             $csv_row[] = $exercises_results['score_possible'];
             $csv_row[] = $exercises_results['questions_answered'];
             $csv_row[] = $exercises_results['percentage'];
             // first connection
             $csv_row[] = Tracking::get_first_connection_date_on_the_course($user[4], $courseId);
             // last connection
             $csv_row[] = strip_tags(Tracking::get_last_connection_date_on_the_course($user[4], $courseInfo));
             $csv_content[] = $csv_row;
         }
     }
     Export::arrayToCsv($csv_content, 'reporting_user_overview');
     exit;
 }