/**/ "; /* ----------------------------------------------------------- Constants and variables ----------------------------------------------------------- */ // regroup table names for maintenance purpose $TABLETRACK_ACCESS = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LASTACCESS); $TABLETRACK_LINKS = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LINKS); $TABLETRACK_DOWNLOADS = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_DOWNLOADS); $TABLETRACK_ACCESS_2 = Database::get_statistic_table("track_e_access"); $TABLECOURSUSER = Database::get_main_table(TABLE_MAIN_COURSE_USER); $TABLECOURSE = Database::get_main_table(TABLE_MAIN_COURSE); $TABLECOURSE_LINKS = Database::get_course_table(TABLE_LINK); $table_user = Database::get_main_table(TABLE_MAIN_USER); //$table_scormdata = Database::get_scorm_table(TABLE_SCORM_SCO_DATA); //$table_scormmain = Database::get_scorm_table(TABLE_SCORM_MAIN); //$tbl_learnpath_main = Database::get_course_table(TABLE_LEARNPATH_MAIN); //$tbl_learnpath_item = Database::get_course_table(TABLE_LEARNPATH_ITEM); //$tbl_learnpath_chapter = Database::get_course_table(TABLE_LEARNPATH_CHAPTER); $tbl_learnpath_main = Database::get_course_table('lp'); $tbl_learnpath_item = Database::get_course_table('lp_item'); $tbl_learnpath_view = Database::get_course_table('lp_view'); $tbl_learnpath_item_view = Database::get_course_table('lp_item_view'); $view = $_REQUEST['view']; $nameTools = get_lang('Tracking'); Display::display_header($nameTools, "Tracking"); include(api_get_path(LIBRARY_PATH)."statsUtils.lib.inc.php"); include("../resourcelinker/resourcelinker.inc.php"); $a_students = CourseManager :: get_student_list_from_course_code($_course['id'], true, $_SESSION['id_session']); $nbStudents = count($a_students); /** * count the number of students in this course (used for SortableTable) */ function count_student_in_course() { global $nbStudents; return $nbStudents; } function sort_users($a, $b) { global $tracking_column; if($a[$tracking_column] > $b[$tracking_column]) return 1; else return -1; } /* ============================================================================== MAIN CODE ============================================================================== */ if($_GET['studentlist'] == 'false') { echo '
'.get_lang('StudentsTracking').' | '.get_lang('CourseTracking').'
'; } else { echo '
'.get_lang('StudentsTracking').' | '.get_lang('CourseTracking').' 
'; } echo '
 '.get_lang('Print').''; if($_GET['studentlist'] == 'false'){ echo ' '.get_lang('ExportAsCSV').'
'; } else{ echo ' '.get_lang('ExportAsCSV').''; } echo '
'; if($_GET['studentlist'] == 'false') { echo'

'; /********************** * TOOLS **********************/ echo "

 ".get_lang('ToolsMostUsed')."

"; $sql = "SELECT `access_tool`, COUNT(DISTINCT `access_user_id`),count( `access_tool` ) as count_access_tool FROM $TABLETRACK_ACCESS WHERE `access_tool` IS NOT NULL AND `access_cours_code` = '$_cid' GROUP BY `access_tool` ORDER BY count_access_tool DESC LIMIT 0, 3"; $rs = api_sql_query($sql, __FILE__, __LINE__); if($export_csv){ $temp=array(get_lang('ToolsMostUsed'),''); $csv_content[] = $temp; } while ($row = mysql_fetch_array($rs)) { echo ' '; if($export_csv){ $temp=array(get_lang(ucfirst($row['access_tool'])),$row['count_access_tool'].' '.get_lang('Clicks')); $csv_content[] = $temp; } } echo '
'.get_lang(ucfirst($row['access_tool'])).' '.$row['count_access_tool'].' '.get_lang('Clicks').'
'; echo '
'; /*************************** * LINKS ***************************/ echo "

 ".get_lang('LinksMostClicked')."

"; $sql = "SELECT `cl`.`title`, `cl`.`url`,count(DISTINCT `sl`.`links_user_id`), count(`cl`.`title`) as count_visits FROM $TABLETRACK_LINKS AS sl, $TABLECOURSE_LINKS AS cl WHERE `sl`.`links_link_id` = `cl`.`id` AND `sl`.`links_cours_id` = '$_cid' GROUP BY `cl`.`title`, `cl`.`url` ORDER BY count_visits DESC LIMIT 0, 3"; $rs = api_sql_query($sql, __FILE__, __LINE__); if($export_csv){ $temp=array(get_lang('LinksMostClicked'),''); $csv_content[] = array('',''); $csv_content[] = $temp; } if(mysql_num_rows($rs)>0) { while($row = mysql_fetch_array($rs)) { echo ' '; if($export_csv){ $temp=array($row['title'],$row['count_visits'].' '.get_lang('Clicks')); $csv_content[] = $temp; } } } else { echo ''; if($export_csv){ $temp=array(get_lang('NoLinkVisited'),''); $csv_content[] = $temp; } } echo '
'.$row['title'].' '.$row['count_visits'].' '.get_lang('Clicks').'
'.get_lang('NoLinkVisited').'
'; echo '
'; /*************************** * DOCUMENTS ***************************/ echo "

 ".get_lang('DocumentsMostDownloaded')."

"; $sql = "SELECT `down_doc_path`, COUNT(DISTINCT `down_user_id`), COUNT(`down_doc_path`) as count_down FROM $TABLETRACK_DOWNLOADS WHERE `down_cours_id` = '$_cid' GROUP BY `down_doc_path` ORDER BY count_down DESC LIMIT 0, 3"; $rs = api_sql_query($sql, __FILE__, __LINE__); if($export_csv){ $temp=array(get_lang('DocumentsMostDownloaded'),''); $csv_content[] = array('',''); $csv_content[] = $temp; } if(mysql_num_rows($rs)>0) { while($row = mysql_fetch_array($rs)) { echo ' '; if($export_csv){ $temp=array($row['down_doc_path'],$row['count_down'].' '.get_lang('Clicks')); $csv_content[] = $temp; } } } else { echo ''; if($export_csv){ $temp=array(get_lang('NoDocumentDownloaded'),''); $csv_content[] = $temp; } } echo '
'.$row['down_doc_path'].' '.$row['count_down'].' '.get_lang('Clicks').'
'.get_lang('NoDocumentDownloaded').'
'; echo '
'; /*************************** * LEARNING PATHS ***************************/ echo "

 ".get_lang('AverageProgressInLearnpath')."

"; $list = new LearnpathList($student); $flat_list = $list->get_flat_list(); if($export_csv){ $temp=array(get_lang('AverageProgressInLearnpath'),''); $csv_content[] = array('',''); $csv_content[] = $temp; } if(count($flat_list)>0) { foreach($flat_list as $lp_id => $lp) { $lp_avg_progress = 0; foreach($a_students as $student_id => $student) { // get the progress in learning pathes $lp_avg_progress += learnpath::get_db_progress($lp_id,$student_id); } if($nbStudents > 0) { $lp_avg_progress = $lp_avg_progress / $nbStudents; } echo ''; if($export_csv){ $temp=array($lp['lp_name'],$lp_avg_progress); $csv_content[] = $temp; } } } else { echo ''; if($export_csv){ $temp=array(get_lang('NoLearningPath'),''); $csv_content[] = $temp; } } echo '
'.$lp['lp_name'].''.round($lp_avg_progress,1).' %
'.get_lang('NoLearningPath').'
'; echo '
'; /*************************** * EXERCICES ***************************/ echo "

 ".get_lang('AverageResultsToTheExercices')."

"; $sql = "SELECT id, title FROM ".Database :: get_course_table(TABLE_QUIZ_TEST); $rs = api_sql_query($sql, __FILE__, __LINE__); if($export_csv){ $temp=array(get_lang('AverageProgressInLearnpath'),''); $csv_content[] = array('',''); $csv_content[] = $temp; } if(mysql_num_rows($rs)>0) { while($quiz = mysql_fetch_array($rs)) { $quiz_avg_score = 0; // get the progress in learning pathes $sql = 'SELECT exe_result , exe_weighting FROM '.Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES).' WHERE exe_exo_id = '.$quiz['id'].' ORDER BY exe_date DESC LIMIT 0, 1'; $rsAttempt = api_sql_query($sql, __FILE__, __LINE__); $nb_attempts = 0; while($attempt = mysql_fetch_array($rsAttempt)) { $nb_attempts++; $quiz_avg_score += $attempt['exe_result']/$attempt['exe_weighting']*100; } if($nb_attempts>0) $quiz_avg_score = $quiz_avg_score / $nb_attempts; echo ''; if($export_csv){ $temp=array($quiz['title'],$quiz_avg_score); $csv_content[] = $temp; } } } else { echo ''; if($export_csv){ $temp=array(get_lang('NoExercises'),''); $csv_content[] = $temp; } } echo '
'.$quiz['title'].''.round($quiz_avg_score,1).' %
'.get_lang('NoExercises').'
'; // send the csv file if asked if($export_csv) { ob_end_clean(); Export :: export_table_csv($csv_content, 'reporting_course_tracking'); } } // else display student list with all the informations else { $tracking_column = isset($_GET['tracking_column']) ? $_GET['tracking_column'] : 0; $tracking_direction = isset($_GET['tracking_direction']) ? $_GET['tracking_direction'] : DESC; if(count($a_students)>0) { $table = new SortableTable('tracking', 'count_student_in_course'); $table -> set_header(0, get_lang('LastName'), true, 'align="center"'); $table -> set_header(1, get_lang('FirstName'), true, 'align="center"'); $table -> set_header(2, get_lang('Time'),false); $table -> set_header(3, get_lang('Progress'),false); $table -> set_header(4, get_lang('Score'),false); $table -> set_header(5, get_lang('Student_publication'),false); $table -> set_header(6, get_lang('Messages'),false); $table -> set_header(7, get_lang('LatestLogin'), true, 'align="center"'); $table -> set_header(8, get_lang('Details'),false); if($export_csv) { $csv_content[] = array ( get_lang('LastName'), get_lang('FirstName'), get_lang('Time'), get_lang('Progress'), get_lang('Score'), get_lang('Student_publication'), get_lang('Messages'), get_lang('LatestLogin') ); } $all_datas = array(); $course_code = $_course['id']; foreach($a_students as $student_id => $student) { $student_datas = UserManager :: get_user_info_by_id($student_id); $avg_time_spent = $avg_student_score = $avg_student_progress = $total_assignments = $total_messages = 0 ; $nb_courses_student = 0; $avg_time_spent = Tracking :: get_time_spent_on_the_course($student_id, $course_code); $avg_student_score = Tracking :: get_avg_student_score($student_id, $course_code); $avg_student_progress = Tracking :: get_avg_student_progress($student_id, $course_code); $total_assignments = Tracking :: count_student_assignments($student_id, $course_code); $total_messages = Tracking :: count_student_messages($student_id, $course_code); $row = array(); $row[] = $student_datas['lastname']; $row[] = $student_datas['firstname']; $row[] = api_time_to_hms($avg_time_spent); $row[] = $avg_student_progress.' %'; $row[] = $avg_student_score.' %'; $row[] = $total_assignments; $row[] = $total_messages; $row[] = Tracking :: get_last_connection_date_on_the_course($student_id, $course_code); if($export_csv) { $csv_content[] = $row; } $row[] = ''; $all_datas[] = $row; } usort($all_datas, 'sort_users'); if($tracking_direction == 'ASC') rsort($all_datas); if($export_csv) { usort($csv_content, 'sort_users'); } foreach($all_datas as $row) { $table -> addRow($row,'align="right"'); } $table -> setColAttributes(0,array('align'=>'left')); $table -> setColAttributes(1,array('align'=>'left')); $table -> setColAttributes(7,array('align'=>'left')); $table -> setColAttributes(8,array('align'=>'center')); $table -> display(); } else { echo get_lang('NoUsersInCourse'); } // send the csv file if asked if($export_csv) { ob_end_clean(); Export :: export_table_csv($csv_content, 'reporting_student_list'); } } ?>