[svn r12562] Fix a bug in the reporting. The reporting didn't take into consideration the score in SCORM LP and quizz in LP

skala
Julian Prud'homme 18 years ago
parent 2af9d51ce5
commit de79da4507
  1. 592
      main/inc/lib/tracking.lib.php
  2. 55
      main/mySpace/myStudents.php

@ -1,4 +1,5 @@
<?php // $Id: tracking.lib.php 2007-28-02 15:51:53
<?php
// $Id: tracking.lib.php 2007-28-02 15:51:53
/*
==============================================================================
Dokeos - elearning and course management software
@ -30,7 +31,6 @@
==============================================================================
*/
class Tracking {
/**
@ -38,20 +38,18 @@ class Tracking {
* @param integer $user_id the user id
* @return timestamp $nb_seconds
*/
function get_time_spent_on_the_platform ($user_id)
{
function get_time_spent_on_the_platform($user_id) {
$tbl_track_login = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_LOGIN);
$sql = 'SELECT login_date, logout_date FROM '.$tbl_track_login.'
WHERE login_user_id = '.intval($user_id);
$sql = 'SELECT login_date, logout_date FROM ' . $tbl_track_login . '
WHERE login_user_id = ' . intval($user_id);
$rs = api_sql_query($sql);
$nb_seconds=0;
$nb_seconds = 0;
while($a_connections=mysql_fetch_array($rs))
{
while ($a_connections = mysql_fetch_array($rs)) {
$s_login_date = $a_connections["login_date"];
$s_logout_date = $a_connections["logout_date"];
@ -59,7 +57,7 @@ class Tracking {
$i_timestamp_login_date = strtotime($s_login_date);
$i_timestamp_logout_date = strtotime($s_logout_date);
$nb_seconds += ($i_timestamp_logout_date-$i_timestamp_login_date);
$nb_seconds += ($i_timestamp_logout_date - $i_timestamp_login_date);
}
@ -72,24 +70,22 @@ class Tracking {
* @param string $course_code the course code
* @return timestamp $nb_seconds
*/
function get_time_spent_on_the_course ($user_id, $course_code)
{
function get_time_spent_on_the_course($user_id, $course_code) {
// protect datas
$student_id = intval($student_id);
$course_code = addslashes($course_code);
$tbl_track_course = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS);
$sql = 'SELECT login_course_date, logout_course_date FROM '.$tbl_track_course.'
WHERE user_id = '.intval($user_id).'
AND course_code="'.$course_code.'"';
$sql = 'SELECT login_course_date, logout_course_date FROM ' . $tbl_track_course . '
WHERE user_id = ' . intval($user_id) . '
AND course_code="' . $course_code . '"';
$rs = api_sql_query($sql);
$nb_seconds=0;
$nb_seconds = 0;
while($a_connections=mysql_fetch_array($rs))
{
while ($a_connections = mysql_fetch_array($rs)) {
$s_login_date = $a_connections["login_course_date"];
$s_logout_date = $a_connections["logout_course_date"];
@ -97,99 +93,86 @@ class Tracking {
$i_timestamp_login_date = strtotime($s_login_date);
$i_timestamp_logout_date = strtotime($s_logout_date);
$nb_seconds += ($i_timestamp_logout_date-$i_timestamp_login_date);
$nb_seconds += ($i_timestamp_logout_date - $i_timestamp_login_date);
}
return $nb_seconds;
}
function get_last_connection_date($student_id, $warning_message=false)
{
function get_last_connection_date($student_id, $warning_message = false) {
$tbl_track_login = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_LOGIN);
$sql = 'SELECT login_date FROM '.$tbl_track_login.'
WHERE login_user_id = '.intval($student_id).'
ORDER BY login_date DESC LIMIT 0,1';
$sql = 'SELECT login_date FROM ' . $tbl_track_login . '
WHERE login_user_id = ' . intval($student_id) . '
ORDER BY login_date DESC LIMIT 0,1';
$rs = api_sql_query($sql);
if($last_login_date = mysql_result($rs,0,0))
{
if(!$warning_message){
return format_locale_date(get_lang('DateFormatLongWithoutDay'),strtotime($last_login_date));
}
else{
$timestamp=strtotime($last_login_date);
$currentTimestamp=mktime();
if ($last_login_date = mysql_result($rs, 0, 0)) {
if (!$warning_message) {
return format_locale_date(get_lang('DateFormatLongWithoutDay'), strtotime($last_login_date));
} else {
$timestamp = strtotime($last_login_date);
$currentTimestamp = mktime();
//If the last connection is > than 7 days, the text is red
//345600 = 7 days in seconds
if($currentTimestamp-$timestamp>604800){
return '<span style="color: #F00;">'.format_locale_date(get_lang('DateFormatLongWithoutDay'),strtotime($last_login_date)).'</span>';
}
else{
return format_locale_date(get_lang('DateFormatLongWithoutDay'),strtotime($last_login_date));
if ($currentTimestamp - $timestamp > 604800) {
return '<span style="color: #F00;">' . format_locale_date(get_lang('DateFormatLongWithoutDay'), strtotime($last_login_date)) . '</span>';
} else {
return format_locale_date(get_lang('DateFormatLongWithoutDay'), strtotime($last_login_date));
}
}
}
else
{
} else {
return false;
}
}
function get_last_connection_date_on_the_course($student_id, $course_code)
{
function get_last_connection_date_on_the_course($student_id, $course_code) {
$tbl_track_login = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS);
$sql = 'SELECT login_course_date FROM '.$tbl_track_login.'
WHERE user_id = '.intval($student_id).'
AND course_code = "'.mysql_real_escape_string($course_code).'"
ORDER BY login_course_date DESC LIMIT 0,1';
$sql = 'SELECT login_course_date FROM ' . $tbl_track_login . '
WHERE user_id = ' . intval($student_id) . '
AND course_code = "' . mysql_real_escape_string($course_code) . '"
ORDER BY login_course_date DESC LIMIT 0,1';
$rs = api_sql_query($sql);
if($last_login_date = mysql_result($rs,0,0))
{
$timestamp=strtotime($last_login_date);
$currentTimestamp=mktime();
if ($last_login_date = mysql_result($rs, 0, 0)) {
$timestamp = strtotime($last_login_date);
$currentTimestamp = mktime();
//If the last connection is > than 7 days, the text is red
//345600 = 7 days in seconds
if($currentTimestamp-$timestamp>604800){
return '<span style="color: #F00;">'.format_locale_date(get_lang('DateFormatLongWithoutDay'),strtotime($last_login_date)).'</span>';
}
else{
return format_locale_date(get_lang('DateFormatLongWithoutDay'),strtotime($last_login_date));
if ($currentTimestamp - $timestamp > 604800) {
return '<span style="color: #F00;">' . format_locale_date(get_lang('DateFormatLongWithoutDay'), strtotime($last_login_date)) . '</span>';
} else {
return format_locale_date(get_lang('DateFormatLongWithoutDay'), strtotime($last_login_date));
}
}
else
{
} else {
return false;
}
}
function count_course_per_student ($user_id)
{
function count_course_per_student($user_id) {
$user_id = intval($user_id);
$tbl_course_rel_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_session_course_rel_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$sql = 'SELECT DISTINCT course_code
FROM '.$tbl_course_rel_user.'
WHERE user_id = '.$user_id;
$rs = api_sql_query($sql , __FILE__ , __LINE__);
FROM ' . $tbl_course_rel_user . '
WHERE user_id = ' . $user_id;
$rs = api_sql_query($sql, __FILE__, __LINE__);
$nb_courses = mysql_num_rows($rs);
$sql = 'SELECT DISTINCT course_code
FROM '.$tbl_session_course_rel_user.'
WHERE id_user = '.$user_id;
$rs = api_sql_query($sql , __FILE__ , __LINE__);
FROM ' . $tbl_session_course_rel_user . '
WHERE id_user = ' . $user_id;
$rs = api_sql_query($sql, __FILE__, __LINE__);
$nb_courses += mysql_num_rows($rs);
return $nb_courses;
}
function get_avg_student_progress($student_id, $course_code)
{
require_once(api_get_path(LIBRARY_PATH).'course.lib.php');
function get_avg_student_progress($student_id, $course_code) {
require_once (api_get_path(LIBRARY_PATH) . 'course.lib.php');
// protect datas
$student_id = intval($student_id);
@ -199,64 +182,144 @@ class Tracking {
$a_course = CourseManager :: get_course_information($course_code);
// table definition
$tbl_course_lp_view = Database :: get_course_table(TABLE_LP_VIEW , $a_course['db_name']);
$tbl_course_lp_view_item = Database :: get_course_table(TABLE_LP_ITEM_VIEW , $a_course['db_name']);
$tbl_course_lp_item = Database :: get_course_table(TABLE_LP_ITEM , $a_course['db_name']);
$tbl_course_lp = Database :: get_course_table(TABLE_LP_MAIN , $a_course['db_name']);
$tbl_course_lp_view = Database :: get_course_table(TABLE_LP_VIEW, $a_course['db_name']);
$tbl_course_lp_view_item = Database :: get_course_table(TABLE_LP_ITEM_VIEW, $a_course['db_name']);
$tbl_course_lp_item = Database :: get_course_table(TABLE_LP_ITEM, $a_course['db_name']);
$tbl_course_lp = Database :: get_course_table(TABLE_LP_MAIN, $a_course['db_name']);
//get the list of learning paths
$sql = 'SELECT id FROM '.$tbl_course_lp;
$sql = 'SELECT id FROM ' . $tbl_course_lp;
$rs = api_sql_query($sql, __FILE__, __LINE__);
$nb_lp = mysql_num_rows($rs);
$avg_progress = 0;
if($nb_lp>0)
{
while($lp = Database :: fetch_array($rs))
{
if ($nb_lp > 0) {
while ($lp = Database :: fetch_array($rs)) {
// get the progress in learning pathes
$sqlProgress = "SELECT progress
FROM ".$tbl_course_lp_view." AS lp_view
WHERE lp_view.user_id = ".$student_id."
AND lp_view.lp_id = ".$lp['id']."
";
FROM " . $tbl_course_lp_view . " AS lp_view
WHERE lp_view.user_id = " . $student_id . "
AND lp_view.lp_id = " . $lp['id'] . "
";
$resultItem = api_sql_query($sqlProgress, __FILE__, __LINE__);
$avg_progress += mysql_result($resultItem, 0, 0);
}
$avg_progress = round($avg_progress / $nb_lp,1);
$avg_progress = round($avg_progress / $nb_lp, 1);
}
return $avg_progress;
}
function get_avg_student_score($student_id, $course_code)
{
function get_avg_student_score($student_id, $course_code) {
// protect datas
$student_id = intval($student_id);
$course_code = addslashes($course_code);
$sqlScore = " SELECT exe_result,
exe_weighting
FROM ".Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES)."
WHERE exe_user_id = ".$student_id."
AND exe_cours_id = '".$course_code."'
";
$sqlScore = " SELECT exe_result, exe_weighting
FROM " . Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES) . "
WHERE exe_user_id = " . $student_id . "
AND exe_cours_id = '" . $course_code . "'
";
$resultScore = api_sql_query($sqlScore);
$i = 0;
$score = 0;
while($a_score = mysql_fetch_array($resultScore))
{
while ($a_score = mysql_fetch_array($resultScore)) {
$score = $score + $a_score['exe_result'];
$weighting = $weighting + $a_score['exe_weighting'];
$i++;
}
$totalScore = $totalScore + $score;
$totalWeighting = $totalWeighting + $weighting;
$totalWeighting += $weighting;
$pourcentageTests = ($totalScore / $weighting) *100;
$course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
$course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$table_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_course_lp_view = 'lp_view';
$tbl_course_lp_view_item = 'lp_item_view';
$tbl_course_lp_item = 'lp_item';
$course = CourseManager :: get_course_information($course_code);
$sql_course_lp = 'SELECT id FROM ' . $course['db_name'] . '.lp';
$sql_result_lp = api_sql_query($sql_course_lp, __FILE__, __LINE__);
$lp_scorm_score_total = 0;
$lp_scorm_weighting_total = 0;
if(mysql_num_rows($sql_result_lp)>0){
//Scorm
while($a_learnpath = mysql_fetch_array($sql_result_lp)){
$sql = 'SELECT id, max_score
FROM '.$course['db_name'].'.'.$tbl_course_lp_item.' AS lp_item
WHERE lp_id='.$a_learnpath['id'].'
AND item_type="sco" LIMIT 1';
$rs_lp_item_id_scorm = api_sql_query($sql, __FILE__, __LINE__);
if(mysql_num_rows($rs_lp_item_id_scorm)>0){
$lp_item_id = mysql_result($rs_lp_item_id_scorm,0,'id');
$lp_item__max_score = mysql_result($rs_lp_item_id_scorm,0,'max_score');
//We get the last view id of this LP
$sql='SELECT max(id) as id FROM '.$course['db_name'].'.'.$tbl_course_lp_view.' WHERE lp_id='.$a_learnpath['id'].' AND user_id="'.intval($_GET['student']).'"';
$rs_last_lp_view_id = api_sql_query($sql, __FILE__, __LINE__);
$lp_view_id = mysql_result($rs_last_lp_view_id,0,'id');
$sql='SELECT SUM(score) as score FROM '.$course['db_name'].'.'.$tbl_course_lp_view_item.' WHERE lp_view_id="'.$lp_view_id.'" GROUP BY lp_view_id';
$rs_score = api_sql_query($sql, __FILE__, __LINE__);
$lp_scorm_score = mysql_result($rs_score,0,'score');
$lp_scorm_score = ($lp_scorm_score / $lp_item__max_score) * 100;
$lp_scorm_score_total+=$lp_scorm_score;
$lp_scorm_weighting_total+=100;
}
}
mysql_data_seek($sql_result_lp,0);
//Quizz in LP
while($a_learnpath = mysql_fetch_array($sql_result_lp)){
$sql = 'SELECT id as item_id, max_score
FROM '.$course['db_name'].'.'.$tbl_course_lp_item.' AS lp_item
WHERE lp_id='.$a_learnpath['id'].'
AND item_type="quiz"';
$rsItems = api_sql_query($sql, __FILE__, __LINE__);
//We get the last view id of this LP
$sql='SELECT max(id) as id FROM '.$course['db_name'].'.'.$tbl_course_lp_view.' WHERE lp_id='.$a_learnpath['id'].' AND user_id="'.intval($_GET['student']).'"';
$rs_last_lp_view_id = api_sql_query($sql, __FILE__, __LINE__);
$lp_view_id = mysql_result($rs_last_lp_view_id,0,'id');
$total_score = $total_weighting = 0;
while($item = Database :: fetch_array($rsItems, 'ASSOC'))
{
$sql = 'SELECT score as student_score
FROM '.$course['db_name'].'.'.$tbl_course_lp_view_item.' as lp_view_item
WHERE lp_view_item.lp_item_id = '.$item['item_id'].'
';
$rsScores = api_sql_query($sql, __FILE__, __LINE__);
$total_score += mysql_result($rsScores, 0, 0);
$total_weighting += $item['max_score'];
$lp_scorm_score_total += ($total_score/$total_weighting)*100;
$lp_scorm_weighting_total+=100;
}
}
}
$pourcentageScore = round(($score*100)/$weighting);
$totalScore = $lp_scorm_score_total + $pourcentageTests;
$totalWeighting = $lp_scorm_weighting_total + 100;
$pourcentageScore = round(($totalScore * 100) / $totalWeighting);
return $pourcentageScore;
}
@ -266,133 +329,123 @@ class Tracking {
* @param integer $coach_id the id of the coach
* @return Array the list of students
*/
function get_student_followed_by_coach ($coach_id)
{
function get_student_followed_by_coach($coach_id) {
$coach_id = intval($coach_id);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$a_students = array();
$a_students = array ();
//////////////////////////////////////////////////////////////
// At first, courses where $coach_id is coach of the course //
//////////////////////////////////////////////////////////////
$sql = 'SELECT id_session, course_code FROM '.$tbl_session_course.' WHERE id_coach='.$coach_id;
$result=api_sql_query($sql);
$sql = 'SELECT id_session, course_code FROM ' . $tbl_session_course . ' WHERE id_coach=' . $coach_id;
$result = api_sql_query($sql);
while($a_courses=mysql_fetch_array($result))
{
$course_code=$a_courses["course_code"];
$id_session=$a_courses["id_session"];
while ($a_courses = mysql_fetch_array($result)) {
$course_code = $a_courses["course_code"];
$id_session = $a_courses["id_session"];
$sql = "SELECT distinct srcru.id_user
FROM $tbl_session_course_user AS srcru
WHERE course_code='$course_code' AND id_session='$id_session'";
$sql = "SELECT distinct srcru.id_user
FROM $tbl_session_course_user AS srcru
WHERE course_code='$course_code' AND id_session='$id_session'";
$rs=api_sql_query($sql);
$rs = api_sql_query($sql);
while($row=mysql_fetch_array($rs))
{
$a_students[$row['id_user']]=$row['id_user'];
while ($row = mysql_fetch_array($rs)) {
$a_students[$row['id_user']] = $row['id_user'];
}
}
}
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
// Then, courses where $coach_id is coach of the session //
//////////////////////////////////////////////////////////////
$sql = 'SELECT session_course_user.id_user
FROM '.$tbl_session_course_user.' as session_course_user
INNER JOIN '.$tbl_session_course.' as session_course
ON session_course.course_code = session_course_user.course_code
AND session_course_user.id_session = session_course.id_session
INNER JOIN '.$tbl_session.' as session
ON session.id = session_course.id_session
AND session.id_coach = '.$coach_id;
$result=api_sql_query($sql);
while($row=mysql_fetch_array($result))
{
$a_students[$row['id_user']]=$row['id_user'];
FROM ' . $tbl_session_course_user . ' as session_course_user
INNER JOIN ' . $tbl_session_course . ' as session_course
ON session_course.course_code = session_course_user.course_code
AND session_course_user.id_session = session_course.id_session
INNER JOIN ' . $tbl_session . ' as session
ON session.id = session_course.id_session
AND session.id_coach = ' . $coach_id;
$result = api_sql_query($sql);
while ($row = mysql_fetch_array($result)) {
$a_students[$row['id_user']] = $row['id_user'];
}
return $a_students;
}
function get_student_followed_by_coach_in_a_session($id_session,$coach_id){
function get_student_followed_by_coach_in_a_session($id_session, $coach_id) {
$coach_id = intval($coach_id);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$a_students = array();
$a_students = array ();
//////////////////////////////////////////////////////////////
// At first, courses where $coach_id is coach of the course //
//////////////////////////////////////////////////////////////
$sql = 'SELECT course_code FROM '.$tbl_session_course.' WHERE id_session="'.$id_session.'" AND id_coach='.$coach_id;
$sql = 'SELECT course_code FROM ' . $tbl_session_course . ' WHERE id_session="' . $id_session . '" AND id_coach=' . $coach_id;
$result=api_sql_query($sql);
$result = api_sql_query($sql);
while($a_courses=mysql_fetch_array($result))
{
$course_code=$a_courses["course_code"];
while ($a_courses = mysql_fetch_array($result)) {
$course_code = $a_courses["course_code"];
$sql = "SELECT distinct srcru.id_user
FROM $tbl_session_course_user AS srcru
WHERE course_code='$course_code' and id_session = '".$id_session."'";
$sql = "SELECT distinct srcru.id_user
FROM $tbl_session_course_user AS srcru
WHERE course_code='$course_code' and id_session = '" . $id_session . "'";
$rs=api_sql_query($sql, __FILE__, __LINE__);
$rs = api_sql_query($sql, __FILE__, __LINE__);
while($row=mysql_fetch_array($rs))
{
$a_students[$row['id_user']]=$row['id_user'];
while ($row = mysql_fetch_array($rs)) {
$a_students[$row['id_user']] = $row['id_user'];
}
}
}
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
// Then, courses where $coach_id is coach of the session //
//////////////////////////////////////////////////////////////
$dsl_session_coach = 'SELECT id_coach FROM '.$tbl_session.' WHERE id="'.$id_session.'" AND id_coach="'.$coach_id.'"';
$result=api_sql_query($dsl_session_coach, __FILE__, __LINE__);
$dsl_session_coach = 'SELECT id_coach FROM ' . $tbl_session . ' WHERE id="' . $id_session . '" AND id_coach="' . $coach_id . '"';
$result = api_sql_query($dsl_session_coach, __FILE__, __LINE__);
//He is the session_coach so we select all the users in the session
if(mysql_num_rows($result)>0){
$sql = 'SELECT DISTINCT srcru.id_user FROM '.$tbl_session_course_user.' AS srcru WHERE id_session="'.$id_session.'"';
$result=api_sql_query($sql);
while($row=mysql_fetch_array($result))
{
$a_students[$row['id_user']]=$row['id_user'];
if (mysql_num_rows($result) > 0) {
$sql = 'SELECT DISTINCT srcru.id_user FROM ' . $tbl_session_course_user . ' AS srcru WHERE id_session="' . $id_session . '"';
$result = api_sql_query($sql);
while ($row = mysql_fetch_array($result)) {
$a_students[$row['id_user']] = $row['id_user'];
}
}
return $a_students;
}
function is_allowed_to_coach_student($coach_id, $student_id)
{
function is_allowed_to_coach_student($coach_id, $student_id) {
$coach_id = intval($coach_id);
$student_id = intval($student_id);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
//////////////////////////////////////////////////////////////
// At first, courses where $coach_id is coach of the course //
//////////////////////////////////////////////////////////////
$sql = 'SELECT 1
FROM '.$tbl_session_course_user.' AS session_course_user
INNER JOIN '.$tbl_session_course.' AS session_course
ON session_course.course_code = session_course_user.course_code
AND id_coach='.$coach_id.'
WHERE id_user='.$student_id;
$result=api_sql_query($sql, __FILE__, __LINE__);
if(mysql_num_rows($result) > 0)
{
FROM ' . $tbl_session_course_user . ' AS session_course_user
INNER JOIN ' . $tbl_session_course . ' AS session_course
ON session_course.course_code = session_course_user.course_code
AND id_coach=' . $coach_id . '
WHERE id_user=' . $student_id;
$result = api_sql_query($sql, __FILE__, __LINE__);
if (mysql_num_rows($result) > 0) {
return true;
}
@ -401,16 +454,15 @@ class Tracking {
//////////////////////////////////////////////////////////////
$sql = 'SELECT session_course_user.id_user
FROM '.$tbl_session_course_user.' as session_course_user
INNER JOIN '.$tbl_session_course.' as session_course
ON session_course.course_code = session_course_user.course_code
INNER JOIN '.$tbl_session.' as session
ON session.id = session_course.id_session
AND session.id_coach = '.$coach_id.'
WHERE id_user = '.$student_id;
$result=api_sql_query($sql, __FILE__, __LINE__);
if(mysql_num_rows($result) > 0)
{
FROM ' . $tbl_session_course_user . ' as session_course_user
INNER JOIN ' . $tbl_session_course . ' as session_course
ON session_course.course_code = session_course_user.course_code
INNER JOIN ' . $tbl_session . ' as session
ON session.id = session_course.id_session
AND session.id_coach = ' . $coach_id . '
WHERE id_user = ' . $student_id;
$result = api_sql_query($sql, __FILE__, __LINE__);
if (mysql_num_rows($result) > 0) {
return true;
}
@ -418,54 +470,50 @@ class Tracking {
}
function get_courses_followed_by_coach ($coach_id, $id_session='') {
function get_courses_followed_by_coach($coach_id, $id_session = '') {
$coach_id = intval($coach_id);
if(!empty($id_session))
if (!empty ($id_session))
$id_session = intval($id_session);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
//////////////////////////////////////////////////////////////
// At first, courses where $coach_id is coach of the course //
//////////////////////////////////////////////////////////////
$sql = 'SELECT DISTINCT course_code FROM '.$tbl_session_course.' WHERE id_coach='.$coach_id;
if(!empty($id_session))
$sql .= ' AND id_session='.$id_session;
$result=api_sql_query($sql, __FILE__, __LINE__);
while($row = mysql_fetch_array($result))
{
$sql = 'SELECT DISTINCT course_code FROM ' . $tbl_session_course . ' WHERE id_coach=' . $coach_id;
if (!empty ($id_session))
$sql .= ' AND id_session=' . $id_session;
$result = api_sql_query($sql, __FILE__, __LINE__);
while ($row = mysql_fetch_array($result)) {
$a_courses[$row['course_code']] = $row['course_code'];
}
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
// Then, courses where $coach_id is coach of the session //
//////////////////////////////////////////////////////////////
$sql = 'SELECT DISTINCT session_course.course_code
FROM '.$tbl_session_course.' as session_course
INNER JOIN '.$tbl_session.' as session
ON session.id = session_course.id_session
AND session.id_coach = '.$coach_id.'
INNER JOIN '.$tbl_course.' as course
ON course.code = session_course.course_code';
if(!empty($id_session))
$sql .= ' WHERE session_course.id_session='.$id_session;
$result=api_sql_query($sql, __FILE__, __LINE__);
while($row=mysql_fetch_array($result))
{
FROM ' . $tbl_session_course . ' as session_course
INNER JOIN ' . $tbl_session . ' as session
ON session.id = session_course.id_session
AND session.id_coach = ' . $coach_id . '
INNER JOIN ' . $tbl_course . ' as course
ON course.code = session_course.course_code';
if (!empty ($id_session))
$sql .= ' WHERE session_course.id_session=' . $id_session;
$result = api_sql_query($sql, __FILE__, __LINE__);
while ($row = mysql_fetch_array($result)) {
$a_courses[$row['course_code']] = $row['course_code'];
}
return $a_courses;
}
function get_sessions_coached_by_user($coach_id)
{
function get_sessions_coached_by_user($coach_id) {
// table definition
$tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
$tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
@ -473,67 +521,53 @@ class Tracking {
// protect datas
$coach_id = intval($coach_id);
// session where we are general coach
$sql = 'SELECT DISTINCT id, name, date_start, date_end
FROM '.$tbl_session.'
WHERE id_coach='.$coach_id;
FROM ' . $tbl_session . '
WHERE id_coach=' . $coach_id;
$rs = api_sql_query($sql);
while($row = mysql_fetch_array($rs))
{
$a_sessions[$row["id"]]=$row;
while ($row = mysql_fetch_array($rs)) {
$a_sessions[$row["id"]] = $row;
}
// session where we are coach of a course
$sql = 'SELECT DISTINCT session.id, session.name, session.date_start, session.date_end
FROM '.$tbl_session.' as session
INNER JOIN '.$tbl_session_course.' as session_course
ON session.id = session_course.id_session
AND session_course.id_coach='.$coach_id;
FROM ' . $tbl_session . ' as session
INNER JOIN ' . $tbl_session_course . ' as session_course
ON session.id = session_course.id_session
AND session_course.id_coach=' . $coach_id;
$rs = api_sql_query($sql);
while($row = mysql_fetch_array($rs))
{
$a_sessions[$row["id"]]=$row;
while ($row = mysql_fetch_array($rs)) {
$a_sessions[$row["id"]] = $row;
}
foreach($a_sessions as &$session)
{
if($row['date_start'] == '0000-00-00')
{
foreach ($a_sessions as & $session) {
if ($row['date_start'] == '0000-00-00') {
$session['status'] = get_lang('Active');
}
else
{
$date_start = explode('-',$session['date_start']);
$time_start = mktime(0,0,0,$date_start[1],$date_start[2],$date_start[0]);
$date_end = explode('-',$session['date_end']);
$time_end = mktime(0,0,0,$date_end[1],$date_end[2],$date_end[0]);
if($time_start < time() && time() < $time_end)
{
} else {
$date_start = explode('-', $session['date_start']);
$time_start = mktime(0, 0, 0, $date_start[1], $date_start[2], $date_start[0]);
$date_end = explode('-', $session['date_end']);
$time_end = mktime(0, 0, 0, $date_end[1], $date_end[2], $date_end[0]);
if ($time_start < time() && time() < $time_end) {
$session['status'] = get_lang('SessionActive');
}
else if(time() < $time_start)
{
$session['status'] = get_lang('SessionFuture');
}
else if(time() > $time_end)
{
$session['status'] = get_lang('SessionPast');
}
} else
if (time() < $time_start) {
$session['status'] = get_lang('SessionFuture');
} else
if (time() > $time_end) {
$session['status'] = get_lang('SessionPast');
}
}
}
return $a_sessions;
}
function get_courses_list_from_session($session_id)
{
function get_courses_list_from_session($session_id) {
//protect datas
$session_id = intval($session_id);
@ -542,21 +576,19 @@ class Tracking {
$tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
$sql = 'SELECT DISTINCT course_code, id_coach
FROM '.$tbl_session_course.'
WHERE id_session='.$session_id;
FROM ' . $tbl_session_course . '
WHERE id_session=' . $session_id;
$rs = api_sql_query($sql,__FILE__,__LINE__);
$a_courses = array();
while($row = mysql_fetch_array($rs))
{
$rs = api_sql_query($sql, __FILE__, __LINE__);
$a_courses = array ();
while ($row = mysql_fetch_array($rs)) {
$a_courses[$row['course_code']] = $row;
}
return $a_courses;
}
function count_student_assignments ($student_id, $course_code)
{
require_once(api_get_path(LIBRARY_PATH).'course.lib.php');
function count_student_assignments($student_id, $course_code) {
require_once (api_get_path(LIBRARY_PATH) . 'course.lib.php');
// protect datas
$student_id = intval($student_id);
@ -568,17 +600,16 @@ class Tracking {
// table definition
$tbl_item_property = Database :: get_course_table(TABLE_ITEM_PROPERTY, $a_course['db_name']);
$sql = 'SELECT 1
FROM '.$tbl_item_property.'
WHERE insert_user_id='.$student_id.'
AND tool="work"';
FROM ' . $tbl_item_property . '
WHERE insert_user_id=' . $student_id . '
AND tool="work"';
$rs = api_sql_query($sql, __LINE__, __FILE__);
return mysql_num_rows($rs);
}
function count_student_messages ($student_id, $course_code)
{
require_once(api_get_path(LIBRARY_PATH).'course.lib.php');
function count_student_messages($student_id, $course_code) {
require_once (api_get_path(LIBRARY_PATH) . 'course.lib.php');
// protect datas
$student_id = intval($student_id);
@ -590,15 +621,14 @@ class Tracking {
// table definition
$tbl_messages = Database :: get_course_table(TABLE_FORUM_POST, $a_course['db_name']);
$sql = 'SELECT 1
FROM '.$tbl_messages.'
WHERE poster_id='.$student_id;
FROM ' . $tbl_messages . '
WHERE poster_id=' . $student_id;
$rs = api_sql_query($sql, __LINE__, __FILE__);
return mysql_num_rows($rs);
}
function count_student_visited_links ($student_id, $course_code)
{
function count_student_visited_links($student_id, $course_code) {
// protect datas
$student_id = intval($student_id);
$course_code = addslashes($course_code);
@ -607,16 +637,15 @@ class Tracking {
$tbl_stats_links = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_LINKS);
$sql = 'SELECT 1
FROM '.$tbl_stats_links.'
WHERE links_user_id='.$student_id.'
AND links_cours_id="'.$course_code.'"';
FROM ' . $tbl_stats_links . '
WHERE links_user_id=' . $student_id . '
AND links_cours_id="' . $course_code . '"';
$rs = api_sql_query($sql, __LINE__, __FILE__);
return mysql_num_rows($rs);
}
function count_student_downloaded_documents ($student_id, $course_code)
{
function count_student_downloaded_documents($student_id, $course_code) {
// protect datas
$student_id = intval($student_id);
$course_code = addslashes($course_code);
@ -625,29 +654,26 @@ class Tracking {
$tbl_stats_documents = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_DOWNLOADS);
$sql = 'SELECT 1
FROM '.$tbl_stats_documents.'
WHERE down_user_id='.$student_id.'
AND down_cours_id="'.$course_code.'"';
FROM ' . $tbl_stats_documents . '
WHERE down_user_id=' . $student_id . '
AND down_cours_id="' . $course_code . '"';
$rs = api_sql_query($sql, __LINE__, __FILE__);
return mysql_num_rows($rs);
}
function get_course_list_in_session_from_student($user_id, $id_session){
function get_course_list_in_session_from_student($user_id, $id_session) {
$user_id = intval($user_id);
$id_session = intval($id_session);
$tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$sql='SELECT course_code FROM '.$tbl_session_course_user.' WHERE id_user="'.$user_id.'" AND id_session="'.$id_session.'"';
$sql = 'SELECT course_code FROM ' . $tbl_session_course_user . ' WHERE id_user="' . $user_id . '" AND id_session="' . $id_session . '"';
$result = api_sql_query($sql, __LINE__, __FILE__);
$a_courses=array();
while($row=mysql_fetch_array($result))
{
$a_courses[$row['course_code']]=$row['course_code'];
$a_courses = array ();
while ($row = mysql_fetch_array($result)) {
$a_courses[$row['course_code']] = $row['course_code'];
}
return $a_courses;
}
}
?>

@ -74,8 +74,13 @@ $csv_content = array();
}
}
api_block_anonymous_users();
Display :: display_header($nameTools);
api_block_anonymous_users();
if(empty($_SESSION['is_allowedCreateCourse']) && !api_is_coach()){
api_not_allowed(true);
}
Display :: display_header($nameTools);
/*
* ======================================================================================
@ -475,7 +480,6 @@ if(!empty($_GET['student']))
$progress = learnpath :: get_db_progress($a_learnpath['id'],$student_id, '%',$a_infosCours['db_name']);
// calculates time
$sql = 'SELECT SUM(total_time)
FROM '.$a_infosCours['db_name'].'.'.$tbl_course_lp_view_item.' AS item_view
@ -486,6 +490,7 @@ if(!empty($_GET['student']))
$rs = api_sql_query($sql, __FILE__, __LINE__);
$total_time = mysql_result($rs, 0, 0);
// calculates last connection time
$sql = 'SELECT MAX(start_time)
FROM '.$a_infosCours['db_name'].'.'.$tbl_course_lp_view_item.' AS item_view
@ -502,21 +507,51 @@ if(!empty($_GET['student']))
FROM '.$a_infosCours['db_name'].'.'.$tbl_course_lp_item.' AS lp_item
WHERE lp_id='.$a_learnpath['id'].'
AND item_type="quiz"';
$rsItems = api_sql_query($sql, __FILE__, __LINE__);
//We get the last view id of this LP
$sql='SELECT max(id) as id FROM '.$a_infosCours['db_name'].'.'.$tbl_course_lp_view.' WHERE lp_id='.$a_learnpath['id'].' AND user_id="'.intval($_GET['student']).'"';
$rs_last_lp_view_id = api_sql_query($sql, __FILE__, __LINE__);
$lp_view_id = mysql_result($rs_last_lp_view_id,0,'id');
$total_score = $total_weighting = 0;
while($item = Database :: fetch_array($rsItems, 'ASSOC'))
{
$sql = 'SELECT score as student_score
FROM '.$a_infosCours['db_name'].'.'.$tbl_course_lp_view.' as lp_view
LEFT JOIN '.$a_infosCours['db_name'].'.'.$tbl_course_lp_view_item.' as lp_view_item
ON lp_view.id = lp_view_item.lp_view_id
AND lp_view_item.lp_item_id = '.$item['item_id'].'
WHERE lp_view.user_id = '.intval($_GET['student']).'
AND '.$a_learnpath['id'];
FROM '.$a_infosCours['db_name'].'.'.$tbl_course_lp_view_item.' as lp_view_item
WHERE lp_view_item.lp_item_id = '.$item['item_id'].'
';
$rsScores = api_sql_query($sql, __FILE__, __LINE__);
$total_score += mysql_result($rsScores, 0, 0);
$total_weighting += $item['max_score'];
}
$sql = 'SELECT id, max_score
FROM '.$a_infosCours['db_name'].'.'.$tbl_course_lp_item.' AS lp_item
WHERE lp_id='.$a_learnpath['id'].'
AND item_type="sco" LIMIT 1';
$rs_lp_item_id_scorm = api_sql_query($sql, __FILE__, __LINE__);
if(mysql_num_rows($rs_lp_item_id_scorm)>0){
$lp_item_id = mysql_result($rs_lp_item_id_scorm,0,'id');
$lp_item__max_score = mysql_result($rs_lp_item_id_scorm,0,'max_score');
$total_weighting+=$lp_item__max_score;
//We get the last view id of this LP
$sql='SELECT max(id) as id FROM '.$a_infosCours['db_name'].'.'.$tbl_course_lp_view.' WHERE lp_id='.$a_learnpath['id'].' AND user_id="'.intval($_GET['student']).'"';
$rs_last_lp_view_id = api_sql_query($sql, __FILE__, __LINE__);
$lp_view_id = mysql_result($rs_last_lp_view_id,0,'id');
$sql='SELECT SUM(score) as score FROM '.$a_infosCours['db_name'].'.'.$tbl_course_lp_view_item.' WHERE lp_view_id="'.$lp_view_id.'" GROUP BY lp_view_id';
$rs_score = api_sql_query($sql, __FILE__, __LINE__);
$lp_scorm_score = mysql_result($rs_score,0,'score');
$total_score+=$lp_scorm_score;
}
$score = round($total_score / $total_weighting * 100,2);
if($i%2==0){
@ -539,7 +574,7 @@ if(!empty($_GET['student']))
<?php echo api_time_to_hms($total_time) ?>
</td>
<td align="right">
<?php echo $score ?>
<?php echo $score.'%' ?>
</td>
<td align="right">
<?php echo $progress ?>

Loading…
Cancel
Save