diff --git a/main/auth/my_progress.php b/main/auth/my_progress.php
index 587b6628fe..3f5003ce9e 100755
--- a/main/auth/my_progress.php
+++ b/main/auth/my_progress.php
@@ -11,6 +11,8 @@ require_once api_get_path(LIBRARY_PATH).'tracking.lib.php';
require_once api_get_path(LIBRARY_PATH).'course.lib.php';
require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php';
require_once api_get_path(SYS_CODE_PATH).'newscorm/learnpath.class.php';
+global $_configuration;
+
$this_section = SECTION_TRACKING;
$nameTools = get_lang('MyProgress');
@@ -33,25 +35,40 @@ $tbl_course_lp = Database :: get_course_table(TABLE_LP_MAIN);
$tbl_course_lp_item = Database :: get_course_table(TABLE_LP_ITEM);
$tbl_course_quiz = Database :: get_course_table(TABLE_QUIZ_TEST);
+$tbl_access_rel_session = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
+$tbl_access_rel_course = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
+
+
// get course list
-$sql = 'SELECT course_code FROM '.$tbl_course_user.' WHERE user_id='.intval($_user['user_id']).' AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' ';
+if ($_configuration['multiple_access_urls']) {
+ $sql = 'SELECT cu.course_code FROM '.$tbl_course_user.' cu INNER JOIN '.$tbl_access_rel_course.' a ON(a.course_code = cu.course_code) WHERE user_id='.intval($_user['user_id']).' AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' AND access_url_id = '.api_get_current_access_url_id().'';
+} else {
+ $sql = 'SELECT course_code FROM '.$tbl_course_user.' WHERE user_id='.intval($_user['user_id']).' AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' ';
+}
+
$rs = Database::query($sql);
-$courses = array();
+$courses = $course_in_session = array();
+
while($row = Database :: fetch_array($rs)) {
$courses[$row['course_code']] = CourseManager::get_course_information($row['course_code']);
}
// get the list of sessions where the user is subscribed as student
-$sql = 'SELECT DISTINCT course_code FROM '.Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER).' WHERE id_user='.intval($_user['user_id']);
+
+
+if ($_configuration['multiple_access_urls']) {
+ $sql = 'SELECT DISTINCT cu.course_code, id_session as session_id FROM '.$tbl_session_course_user.' cu INNER JOIN '.$tbl_access_rel_session.' a ON(a.session_id = cu.id_session) WHERE id_user='.$_user['user_id'].' AND access_url_id = '.api_get_current_access_url_id().'';
+} else {
+ $sql = 'SELECT DISTINCT course_code, id_session as session_id FROM '.$tbl_session_course_user.' WHERE id_user='.intval($_user['user_id']);
+}
+
$rs = Database::query($sql);
while($row = Database :: fetch_array($rs)) {
- $courses[$row['course_code']] = CourseManager::get_course_information($row['course_code']);
+ $course_in_session[$row['session_id']][$row['course_code']] = CourseManager::get_course_information($row['course_code']);
}
-
echo '
';
echo $nameTools;
echo '
';
-$now = date('Y-m-d');
?>
+
+
+
+ |
+
+ |
+
+
+ |
+ |
+ |
+ |
+ 'absmiddle', 'hspace' => '3px')); ?> |
+ |
+ |
$session) {
+
+ echo '';
+
+ echo '| '.api_get_session_name($key).' | ';
+
+ foreach ($session as $enreg) {
+
+
+ $weighting = 0;
+ $last_connection = Tracking :: get_last_connection_date_on_the_course($_user['user_id'], $enreg['code'], $enreg['session_id']);
+ $progress = Tracking :: get_avg_student_progress($_user['user_id'], $enreg['code'],array(), $enreg['session_id']);
+ $total_time_login = Tracking :: get_time_spent_on_the_course($_user['user_id'], $enreg['code'], $enreg['session_id']);
+ $time = api_time_to_hms($total_time_login);
+ $percentage_score = Tracking :: get_avg_student_score ($_user['user_id'], $enreg['code'], array(), $enreg['session_id']);
+
+ echo ''.$enreg['title'].' | ';
+
+ echo ''.$time.' | ';
+ echo ''.$progress.'% | ';
+
+ echo '';
+ if (!is_null($percentage_score)) {
+ echo $percentage_score.'%';
+ } else {
+ echo '0%';
+ }
+ echo ' | ';
+
+ echo ''.$last_connection.' | ';
+
+ echo '';
+ if ($enreg['code'] == $_GET['course'] && $_GET['session_id'] == $key) {
+ echo '';
+ Display::display_icon('2rightarrow_na.gif', get_lang('Details'));
+ } else {
+ echo '';
+ Display::display_icon('2rightarrow.gif', get_lang('Details'));
+ }
+ echo '';
+ echo ' | ';
+ $i = $i ? 0 : 1;
+ echo '
';
+ }
}
?>
0) {
// get session name and coach of the session
@@ -184,15 +261,18 @@ foreach ($courses as $enreg) {
$course_info['tutor_name'] = api_get_person_name($coach_info['firstname'], $coach_info['lastname']);
}
}
- } // end if (api_get_setting('use_session_mode') == 'true')
+ } // end if (api_get_setting('use_session_mode') == 'true')*/
- $tableTitle = $course_info['title'].' | '.get_lang('Coach').' : '.$course_info['tutor_name'].((!empty($session_name)) ? ' | '.get_lang('Session').' : '.$session_name : '');
+ //$tableTitle = $course_info['title'].' | '.get_lang('Coach').' : '.$course_info['tutor_name'].((!empty($session_name)) ? ' | '.get_lang('Session').' : '.$session_name : '');
+
+ $session_name = api_get_session_name($session_id);
+ $tableTitle = ((!empty($session_name)) ? ' '.get_lang('Session').' : '.$session_name.' | ' : '').''.$course_info['title'];
?>
|
-
+
|
@@ -202,151 +282,107 @@ foreach ($courses as $enreg) {
|
0) {
while($learnpath = Database::fetch_array($result_learnpath)) {
- $progress = learnpath :: get_db_progress($learnpath['id'], $_user['user_id'], '%', $course_info['db_name']);
-
- // calculates last connection time
- $sql = 'SELECT MAX(start_time)
- FROM '.$tbl_course_lp_view_item.' AS item_view
- INNER JOIN '.$tbl_course_lp_view.' AS view
- ON item_view.lp_view_id = view.id
- AND view.lp_id = '.$learnpath['id'].'
- AND view.user_id = '.$_user['user_id'];
- $rs = Database::query($sql);
- $start_time = Database::result($rs, 0, 0);
-
- // calculates time
- $sql = 'SELECT SUM(total_time)
- FROM '.$tbl_course_lp_view_item.' AS item_view
- INNER JOIN '.$tbl_course_lp_view.' AS view
- ON item_view.lp_view_id = view.id
- AND view.lp_id = '.$learnpath['id'].'
- AND view.user_id = '.$_user['user_id'];
- $rs = Database::query($sql);
- $total_time = Database::result($rs, 0, 0);
-
-
- echo "
- |
- ";
- echo stripslashes($learnpath['name']);
+ //$progress = learnpath :: get_db_progress($learnpath['id'], $_user['user_id'], 'abs', $course_info['db_name'], false, $session_id);
+ $progress = Tracking::get_avg_student_progress($_user['user_id'], $course, array($learnpath['id']), $session_id);
+ $last_connection_in_lp = Tracking::get_last_connection_time_in_lp($_user['user_id'], $course, $learnpath['id'], $session_id);
+ $time_spent_in_lp = Tracking::get_time_spent_in_lp($_user['user_id'], $course, array($learnpath['id']), $session_id);
+ $time_spent_in_lp = api_time_to_hms($time_spent_in_lp);
+
+ echo " |
| ";
+ echo $learnpath['name'];
echo " |
-
- ";
- echo api_time_to_hms($total_time);
+ | ";
+ echo $time_spent_in_lp;
echo " |
-
- ";
+ | ";
+ if (is_numeric($progress)) {
+ $progress = $progress.'%';
+ }
echo $progress;
echo " |
-
- ";
-
- $last_connection_in_lp = Tracking::get_last_connection_time_in_lp($_user['user_id'], $course, $learnpath['id']);
+ | ";
+
if (!empty($last_connection_in_lp)) {
echo api_get_utc_datetime($last_connection_in_lp);
} else {
echo '-';
}
- echo " |
-
- ";
- }
-
+ echo "";
+ }
} else {
-
echo '
|
'.get_lang('NoLearnpath').'
|
-
- ';
+ ';
}
- ?>
-
-
-
- '.get_lang('Exercices').' |
- '.get_lang('Score').' |
- '.get_lang('Attempts').' |
- '.get_lang('Details').' |
- ';
-
-
+ if (empty($session_id)) {
+ $sql_exercices = "SELECT quiz.title,id, results_disabled FROM ".$tbl_course_quiz." AS quiz WHERE active='1' AND session_id = 0";
+ } else {
+ $sql_exercices = "SELECT quiz.title,id, results_disabled FROM ".$tbl_course_quiz." AS quiz WHERE active='1'";
+ }
+ echo '
+ | '.get_lang('Exercices').' |
+ '.get_lang('Score').' |
+ '.get_lang('Attempts').' |
+ '.get_lang('LatestAttempt').' |
+
';
$result_exercices = Database::query($sql_exercices);
if (Database::num_rows($result_exercices) > 0) {
while ($exercices = Database::fetch_array($result_exercices)) {
- $sql_essais = " SELECT COUNT(ex.exe_id) as essais
- FROM $tbl_stats_exercices AS ex
- WHERE ex.exe_user_id='".$_user['user_id']."' AND ex.exe_cours_id = '".$course_info['code']."'
- AND ex.exe_exo_id = ".$exercices['id']."
- AND orig_lp_id = 0
- AND orig_lp_item_id = 0 "
- ;
- $result_essais = Database::query($sql_essais);
- $essais = Database::fetch_array($result_essais);
-
- $sql_score = "SELECT exe_id , exe_result,exe_weighting
- FROM $tbl_stats_exercices
- WHERE exe_user_id = ".$_user['user_id']."
- AND exe_cours_id = '".$course_info['code']."'
- AND exe_exo_id = ".$exercices['id']."
- AND orig_lp_id = 0
- AND orig_lp_item_id = 0
- ORDER BY exe_date DESC LIMIT 1";
-
- $result_score = Database::query($sql_score);
- $score = 0;
- while($current_score = Database::fetch_array($result_score)) {
- $score = $score + $current_score['exe_result'];
- $weighting = $weighting + $current_score['exe_weighting'];
- $exe_id = $current_score['exe_id'];
- }
-
+ $score = 0;
+ $weighting = 0;
+ $exercise_stats = get_all_exercise_event($exercices['id'],$course_info['code'], $session_id);
+ $attempts = 0;
+ foreach($exercise_stats as $exercise_stat) {
+ if ($exercise_stat['exe_user_id'] == $_user['user_id']) {
+ $score = $score + $exercise_stat['exe_result'];
+ $weighting = $weighting + $exercise_stat['exe_weighting'];
+ $exe_id = $exercise_stat['exe_id'];
+ $attempts++;
+ }
+ }
if ($weighting > 0) {
// i.e 10.50%
$percentage_score = round(($score * 100) / $weighting, 2);
} else {
$percentage_score = 0;
}
-
- $weighting = 0;
-
echo '
| ';
echo $exercices['title'];
echo ' | ';
-
if ($exercices['results_disabled'] == 0) {
echo '';
- if ($essais['essais'] > 0) {
+ if ($attempts > 0) {
echo $percentage_score.'%';
} else {
echo '/';
}
echo ' | ';
echo '';
- echo $essais['essais'];
+ echo $attempts;
echo ' |
';
- if ($essais['essais'] > 0) {
- echo ' '.Display::return_icon('quiz.gif', get_lang('Quiz')).' ';
+ if ($attempts > 0) {
+ echo ' '.Display::return_icon('quiz.gif', get_lang('Quiz')).' ';
}
echo ' | ';
} else {
@@ -366,12 +402,8 @@ foreach ($courses as $enreg) {
} else {
echo '
| '.get_lang('NoEx').' |
';
}
- /*} else {
- echo '| '.get_lang('NoEx').' |
';
- }*/
?>
debug > 0) { error_log('New LP - In learnpath::get_db_progress()', 0); }
- $session_id = api_get_session_id();
+ $session_id = intval($session_id);
$session_condition = api_get_session_condition($session_id);
$table = Database :: get_course_table(TABLE_LP_VIEW, $course_db);
$sql = "SELECT * FROM $table WHERE lp_id = $lp_id AND user_id = $user_id $session_condition";
@@ -1848,7 +1848,7 @@ class learnpath {
} else {
// Get the number of items completed and the number of items total.
$tbl = Database :: get_course_table(TABLE_LP_ITEM, $course_db);
- $sql = "SELECT count(*) FROM $tbl WHERE lp_id = " . $lp_id . "
+ $sql = "SELECT count(*) FROM $tbl WHERE lp_id = " . $lp_id . "
AND item_type NOT IN('dokeos_chapter','chapter','dir')";
$res = Database::query($sql);
$row = Database :: fetch_array($res);
@@ -1863,8 +1863,8 @@ class learnpath {
INNER JOIN $tbl_item as item
ON item.id = item_view.lp_item_id
AND item_type NOT IN('dokeos_chapter','chapter','dir')
- WHERE lp_view_id = " . $view_id . "
- AND status IN ('passed','completed','succeeded','browsed','failed')";
+ WHERE lp_view_id = " . $view_id . "
+ AND status IN ('passed','completed','succeeded','browsed','failed')"; echo '
';
$res = Database::query($sql);
$row = Database :: fetch_array($res);
$completed = $row[0];
@@ -1951,8 +1951,8 @@ class learnpath {
$is_visible = true;
$progress = 0;
- if (!empty($prerequisite)) {
- $progress = self::get_db_progress($prerequisite,$student_id,'%');
+ if (!empty($prerequisite)) {
+ $progress = self::get_db_progress($prerequisite,$student_id,'%', '', false, api_get_session_id());
$progress = intval($progress);
if ($progress < 100) {
$is_visible = false;
diff --git a/main/newscorm/lp_list.php b/main/newscorm/lp_list.php
index c98d1046db..7bf205cadc 100755
--- a/main/newscorm/lp_list.php
+++ b/main/newscorm/lp_list.php
@@ -219,10 +219,10 @@ if (is_array($flat_list)) {
$lp_theme_css = $mystyle;
- if ($display_progress_bar) {
- $dsp_progress = ''.learnpath::get_progress_bar('%',learnpath::get_db_progress($id, api_get_user_id()), '').' | ';
+ if ($display_progress_bar) {
+ $dsp_progress = ''.learnpath::get_progress_bar('%',learnpath::get_db_progress($id, api_get_user_id(), '%', '', false, api_get_session_id())).' | ';
} else {
- $dsp_progress = ''.learnpath::get_db_progress($id, api_get_user_id(), 'both').' | ';
+ $dsp_progress = ''.learnpath::get_db_progress($id, api_get_user_id(), 'both','',false, api_get_session_id()).' | ';
}
if ($is_allowed_to_edit) {