skala
Julio Montoya 14 years ago
commit a7a7c25b92
  1. 7
      main/exercice/exercise.lib.php
  2. 106
      main/inc/lib/tracking.lib.php
  3. 2
      main/mySpace/myStudents.php
  4. 27
      main/tracking/courseLog.php

@ -1258,8 +1258,8 @@ function get_all_exercises($course_info = null, $session_id = 0, $check_dates =
$TBL_EXERCICES = Database :: get_course_table(TABLE_QUIZ_TEST);
$course_id = api_get_course_int_id();
if (!empty($course_info) && !empty($course_info['id'])) {
$course_id = $course_info['id'];
if (!empty($course_info) && !empty($course_info['real_id'])) {
$course_id = $course_info['real_id'];
}
if ($session_id == -1) {
@ -1270,8 +1270,7 @@ function get_all_exercises($course_info = null, $session_id = 0, $check_dates =
} else {
//All exercises
$conditions = array('where'=>array('active = ? AND (session_id = 0 OR session_id = ? ) AND c_id = ? ' => array('1', $session_id, $course_id)), 'order'=>'title');
}
//var_dump($conditions);
}
return Database::select('*',$TBL_EXERCICES, $conditions);
}

@ -241,6 +241,7 @@ class Tracking {
//345600 = 7 days in seconds
if ($currentTimestamp - $timestamp > 604800) {
if ($convert_date) {
//@todo this is so bad ...
return '<span style="color: #F00;">' . api_format_date($last_login_date, DATE_FORMAT_SHORT) . (api_is_allowed_to_edit()?' <a href="'.api_get_path(REL_CODE_PATH).'announcements/announcements.php?action=add&remind_inactive='.$student_id.'" title="'.get_lang('RemindInactiveUser').'"><img align="middle" src="'.api_get_path(WEB_IMG_PATH).'messagebox_warning.gif" /></a>':'').'</span>';
} else {
return $last_login_date;
@ -412,7 +413,7 @@ class Tracking {
/**
* Get count student's exercise attempts
* @param int Student id
* @param int Student id
* @param string Course code
* @param int Exercise id
* @param int Learning path id (optional), for showing attempts inside a learning path $lp_id and $lp_item_id params are required.
@ -420,36 +421,70 @@ class Tracking {
* @return int count of attempts
*/
public function count_student_exercise_attempts($student_id, $course_code, $exercise_id, $lp_id = 0, $lp_item_id = 0, $session_id = 0) {
$course_code = Database::escape_string($course_code);
$course_info = CourseManager :: get_course_information($course_code);
$student_id = intval($student_id);
$exercise_id = intval($exercise_id);
$session_id = intval($session_id);
$session_id = intval($session_id);
$count_attempts = 0;
if (!empty($lp_id)) $lp_id = intval($lp_id);
if (!empty($lp_item_id)) $lp_id = intval($lp_item_id);
if (!empty($course_info['db_name'])) {
$tbl_stats_exercices = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES, $course_info['db_name']);
$sql = "SELECT COUNT(ex.exe_id) as essais FROM $tbl_stats_exercices AS ex
WHERE ex.exe_cours_id = '$course_code'
AND ex.exe_exo_id = $exercise_id
AND orig_lp_id = $lp_id
AND orig_lp_item_id = $lp_item_id
AND exe_user_id= $student_id
AND session_id = $session_id ";
$rs = Database::query($sql);
$row = Database::fetch_row($rs);
$count_attempts = $row[0];
}
$tbl_stats_exercices = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$sql = "SELECT COUNT(ex.exe_id) as essais FROM $tbl_stats_exercices AS ex
WHERE ex.exe_cours_id = '$course_code'
AND ex.exe_exo_id = $exercise_id
AND orig_lp_id = $lp_id
AND orig_lp_item_id = $lp_item_id
AND exe_user_id= $student_id
AND session_id = $session_id ";
$rs = Database::query($sql);
$row = Database::fetch_row($rs);
$count_attempts = $row[0];
return $count_attempts;
}
/**
* Get count student's exercise progress
* @param int user id
* @param string course code
* @param int session id
*/
function get_exercise_student_progress($exercise_list, $user_id, $course_code, $session_id) {
$course_code = Database::escape_string($course_code);
$user_id = intval($user_id);
$session_id = intval($session_id);
if (empty($exercise_list)) {
return '0%';
}
$tbl_stats_exercices = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$exercise_list = array_keys($exercise_list);
array_map('intval', $exercise_list);
$exercise_list = implode("' ,'", $exercise_list);
$sql = "SELECT COUNT(ex.exe_exo_id) FROM $tbl_stats_exercices AS ex
WHERE ex.exe_cours_id = '$course_code' AND
ex.session_id = $session_id AND
ex.exe_user_id = $user_id AND ex.exe_exo_id IN ('$exercise_list') ";
$rs = Database::query($sql);
$count = 0;
if ($rs) {
$row = Database::fetch_row($rs);
$count = $row[0];
}
$count = ($count != 0 ) ? 100*round(intval($count)/count($exercise_list), 2) .'%' : '0%';
return $count;
}
/**
* Returns the average student progress in the learning paths of the given
* course.
@ -3538,15 +3573,17 @@ class TrackingCourseLog {
$sql .= " ORDER BY col$column $direction ";
$sql .= " LIMIT $from,$number_of_items";
$res = Database::query($sql);
$users = array ();
$t = time();
$row = array();
$res = Database::query($sql);
$users = array ();
$t = time();
$row = array();
$course_info = api_get_course_info($course_code);
$total_surveys = 0;
$total_exercises = get_all_exercises($course_info, $session_id);
if (empty($session_id)) {
$survey_user_list = array();
$survey_list = survey_manager::get_surveys($course_code, $session_id);
@ -3563,7 +3600,6 @@ class TrackingCourseLog {
}
while ($user = Database::fetch_array($res, 'ASSOC')) {
//$user['user_id'] = $user['user_id']
$user['official_code'] = $user['col0'];
if ($is_western_name_order) {
$user['lastname'] = $user['col2'];
@ -3581,12 +3617,18 @@ class TrackingCourseLog {
$avg_student_progress=0;
}
$user['average_progress'] = $avg_student_progress.'%';
$total_user_exercise = Tracking::get_exercise_student_progress($total_exercises, $user['user_id'], $course_code, $session_id);
$user['exercise_progress'] = $total_user_exercise;
if (is_numeric($avg_student_score)) {
$user['student_score'] = $avg_student_score.'%';
} else {
$user['student_score'] = $avg_student_score;
}
$user['count_assignments'] = Tracking::count_student_assignments($user['user_id'], $course_code, $session_id);
$user['count_messages'] = Tracking::count_student_messages($user['user_id'], $course_code, $session_id);
$user['first_connection'] = Tracking::get_first_connection_date_on_the_course($user['user_id'], $course_code, $session_id);
@ -3622,7 +3664,11 @@ class TrackingCourseLog {
$user_row[]= $user['lastname'];
}
$user_row[]= $user['time'];
$user_row[]= $user['average_progress'];
$user_row[]= $user['exercise_progress'];
$user_row[]= $user['student_score'];
$user_row[]= $user['count_assignments'];
$user_row[]= $user['count_messages'];
@ -3633,21 +3679,21 @@ class TrackingCourseLog {
$user_row[]= $user['first_connection'];
$user_row[]= $user['last_connection'];
$user_row[]= $user['additional'];
$user_row[]= $user['additional'];
$user_row[]= $user['link'];
$users[] = $user_row;
if ($export_csv) {
if (empty($session_id)) {
unset($user_row[12]);
unset($user_row[13]);
unset($user_row[14]);
} else {
unset($user_row[11]);
unset($user_row[12]);
unset($user_row[13]);
}
$csv_content[] = $user_row;
}
}

@ -868,7 +868,7 @@ if (empty($_GET['details'])) {
while ($exercices = Database :: fetch_array($result_exercices)) {
$exercise_id = intval($exercices['id']);
$count_attempts = Tracking::count_student_exercise_attempts($student_id, $course_code, $exercise_id, 0, 0, $session_id);
$count_attempts = Tracking::count_student_exercise_attempts($student_id, $course_code, $exercise_id, 0, 0, $session_id);
$score_percentage = Tracking::get_avg_student_exercise_score($student_id, $course_code, $exercise_id, $session_id);
$csv_content[] = array (

@ -10,10 +10,7 @@
$pathopen = isset($_REQUEST['pathopen']) ? $_REQUEST['pathopen'] : null;
// Language files that need to be included.
$language_file[] = 'admin';
$language_file[] = 'tracking';
$language_file[] = 'scorm';
//$cidReset = true; //TODO: Delete this line bug 457.
$language_file = array('admin', 'tracking','scorm');
// Including the global initialization file.
require_once '../inc/global.inc.php';
@ -49,6 +46,7 @@ require_once api_get_path(LIBRARY_PATH).'export.lib.inc.php';
require_once api_get_path(LIBRARY_PATH).'statsUtils.lib.inc.php';
require_once api_get_path(SYS_CODE_PATH).'resourcelinker/resourcelinker.inc.php';
require_once api_get_path(SYS_CODE_PATH).'survey/survey.lib.php';
require_once api_get_path(SYS_CODE_PATH).'exercice/exercise.lib.php';
// Starting the output buffering when we are exporting the information.
@ -522,21 +520,23 @@ if ($_GET['studentlist'] == 'false') {
}
$table->set_header(3, get_lang('TrainingTime'), false);
$table->set_header(4, get_lang('CourseProgress').'&nbsp;'.Display::return_icon('info3.gif', get_lang('ScormAndLPProgressTotalAverage'), array('align' => 'absmiddle', 'hspace' => '3px')), false, array('style' => 'width:110px;'));
$table->set_header(5, get_lang('Score').'&nbsp;'.Display::return_icon('info3.gif', get_lang('ScormAndLPTestTotalAverage'), array('align' => 'absmiddle', 'hspace' => '3px')), false, array('style' => 'width:110px;'));
$table->set_header(6, get_lang('Student_publication'), false);
$table->set_header(7, get_lang('Messages'), false);
$table->set_header(5, get_lang('ExerciseProgress'));
$table->set_header(6, get_lang('Score').'&nbsp;'.Display::return_icon('info3.gif', get_lang('ScormAndLPTestTotalAverage'), array('align' => 'absmiddle', 'hspace' => '3px')), false, array('style' => 'width:110px;'));
$table->set_header(7, get_lang('Student_publication'), false);
$table->set_header(8, get_lang('Messages'), false);
if (empty($session_id)) {
$table->set_header(8, get_lang('Survey'), false);
$table->set_header(9, get_lang('Survey'), false);
$table->set_header(10, get_lang('FirstLogin'), false, 'align="center"');
$table->set_header(11, get_lang('LatestLogin'), false, 'align="center"');
$table->set_header(12, get_lang('AdditionalProfileField'), false);
$table->set_header(13, get_lang('Details'), false);
} else {
$table->set_header(9, get_lang('FirstLogin'), false, 'align="center"');
$table->set_header(10, get_lang('LatestLogin'), false, 'align="center"');
$table->set_header(11, get_lang('AdditionalProfileField'), false);
$table->set_header(12, get_lang('Details'), false);
} else {
$table->set_header(8, get_lang('FirstLogin'), false, 'align="center"');
$table->set_header(9, get_lang('LatestLogin'), false, 'align="center"');
$table->set_header(10, get_lang('AdditionalProfileField'), false);
$table->set_header(11, get_lang('Details'), false);
}
$table->display();
@ -559,6 +559,7 @@ if ($_GET['studentlist'] == 'false') {
}
$csv_headers[] = get_lang('TrainingTime', '');
$csv_headers[] = get_lang('CourseProgress', '');
$csv_headers[] = get_lang('ExerciseProgress','');
$csv_headers[] = get_lang('Score', '');
$csv_headers[] = get_lang('Student_publication', '');
$csv_headers[] = get_lang('Messages', '');

Loading…
Cancel
Save