Fixing exercise attempts when working with sessions see BT# 2094

skala
Julio Montoya 14 years ago
parent 8bece3558e
commit 0b3421637f
  1. 2
      main/exercice/exercice_submit.php
  2. 3
      main/exercice/exercise.class.php
  3. 2
      main/exercice/exercise_result.php
  4. 21
      main/inc/lib/events.lib.inc.php
  5. 2
      main/inc/lib/tracking.lib.php

@ -469,7 +469,7 @@ if (isset($exerciseId) && !empty($exerciseId)) {
// I'm in a preview mode
if (api_is_course_admin() && $origin != 'learnpath') {
echo '<div class="actions">';
echo '<a href="exercice.php?show=test">' . Display :: return_icon('back.png', get_lang('BackToExercisesList'),'','32').'</a>';
echo '<a href="exercice.php?show=test&id_session='.api_get_session_id().'">' . Display :: return_icon('back.png', get_lang('BackToExercisesList'),'','32').'</a>';
if ($show_quiz_edition) {
echo '<a href="exercise_admin.php?' . api_get_cidreq() . '&modifyExercise=yes&exerciseId=' . $objExercise->id . '">'.Display :: return_icon('settings.png', get_lang('ModifyExercise'),'','32').'</a>';
//echo Display :: return_icon('wizard.gif', get_lang('QuestionList')) . '<a href="exercice/admin.php?' . api_get_cidreq() . '&exerciseId=' . $objExercise->id . '">' . get_lang('QuestionList') . '</a>';

@ -1433,8 +1433,7 @@ class Exercise {
public function save_stat_track_exercise_info($clock_expired_time = 0, $safe_lp_id = 0, $safe_lp_item_id = 0, $safe_lp_item_view_id = 0, $questionList = array()) {
$track_exercises = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
error_log('save_stat_track_exercise_info');
$track_exercises = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
if (empty($safe_lp_id)) {
$safe_lp_id = 0;
}

@ -258,7 +258,7 @@ $safe_lp_item_id = $learnpath_item_id==''?0:(int)$learnpath_item_id;
$safe_lp_item_view_id = $learnpath_item_view_id==''?0:(int)$learnpath_item_view_id;
$quizDuration = (!empty($_SESSION['quizStartTime']) ? time() - $_SESSION['quizStartTime'] : 0);
if (api_is_allowed_to_session_edit() ) {
update_event_exercice($exeId, $objExercise->selectId(), $totalScore, $totalWeighting,api_get_session_id(),$safe_lp_id,$safe_lp_item_id,$safe_lp_item_view_id, $quizDuration);
update_event_exercice($exeId, $objExercise->selectId(), $totalScore, $totalWeighting, api_get_session_id(),$safe_lp_id,$safe_lp_item_id,$safe_lp_item_view_id, $quizDuration);
}
if ($origin != 'learnpath') {

@ -443,7 +443,7 @@ function exercise_attempt($score, $answer, $quesId, $exeId, $j, $exercise_id = 0
$user_id = api_get_anonymous_id();
}
$sql = "INSERT INTO $TBL_TRACK_ATTEMPT (exe_id, user_id, question_id, answer, marks, course_code, position, tms )
$sql = "INSERT INTO $TBL_TRACK_ATTEMPT (exe_id, user_id, question_id, answer, marks, course_code, session_id, position, tms )
VALUES (
".$exeId.",
".$user_id.",
@ -451,6 +451,7 @@ function exercise_attempt($score, $answer, $quesId, $exeId, $j, $exercise_id = 0
'".$answer."',
'".$score."',
'".api_get_course_id()."',
'".api_get_session_id()."',
'".$j."',
'".$reallyNow."'
)";
@ -458,8 +459,8 @@ function exercise_attempt($score, $answer, $quesId, $exeId, $j, $exercise_id = 0
if (!empty($quesId) && !empty($exeId) && !empty($user_id)) {
$res = Database::query($sql);
if (defined('ENABLED_LIVE_EXERCISE_TRACKING')){
$TBL_RECORDING = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT_RECORDING);
$recording_changes = "INSERT INTO $TBL_RECORDING (exe_id, question_id, marks, insert_date, author) VALUES ('$exeId','$quesId','$score','".api_get_utc_datetime()."','') ";
$recording_table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT_RECORDING);
$recording_changes = "INSERT INTO $recording_table (exe_id, question_id, marks, insert_date, author, session_id) VALUES ('$exeId','$quesId','$score','".api_get_utc_datetime()."','', '".api_get_session_id()."') ";
Database::query($recording_changes);
}
return $res;
@ -479,8 +480,6 @@ function exercise_attempt($score, $answer, $quesId, $exeId, $j, $exercise_id = 0
* @uses Course code and user_id from global scope $_cid and $_user
*/
function exercise_attempt_hotspot($exe_id, $question_id, $answer_id, $correct, $coords, $exerciseId = 0) {
global $_configuration, $_user;
//Validation in case of fraud with actived control time
if (!exercise_time_control_is_valid($exerciseId)) {
$correct = 0;
@ -488,7 +487,7 @@ function exercise_attempt_hotspot($exe_id, $question_id, $answer_id, $correct, $
$tbl_track_e_hotspot = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_HOTSPOT);
$sql = "INSERT INTO $tbl_track_e_hotspot (hotspot_user_id, hotspot_course_code, hotspot_exe_id, hotspot_question_id, hotspot_answer_id, hotspot_correct, hotspot_coordinate)".
" VALUES ('" . Database :: escape_string($_user['user_id']) . "'," .
" VALUES ('" . api_get_user_id() . "'," .
" '" . api_get_course_id() . "', " .
" '" . Database :: escape_string($exe_id) . "', " .
" '" . Database :: escape_string($question_id) . "'," .
@ -578,11 +577,11 @@ function get_attempt_count($user_id, $exerciseId, $lp_id, $lp_item_id,$lp_item_v
$exerciseId = intval($exerciseId);
$lp_id = intval($lp_id);
$lp_item_id = intval($lp_item_id);
$lp_item_view_id = intval($lp_item_view_id);
$lp_item_view_id= intval($lp_item_view_id);
$sql = "SELECT count(*) as count FROM $stat_table WHERE exe_exo_id = '$exerciseId'
AND exe_user_id = '$user_id' AND status != 'incomplete'
AND orig_lp_id = $lp_id AND orig_lp_item_id = $lp_item_id AND orig_lp_item_view_id = $lp_item_view_id AND exe_cours_id = '".api_get_course_id()."' AND session_id = '" . api_get_session_id() . "'";
AND exe_user_id = '$user_id' AND status != 'incomplete'
AND orig_lp_id = $lp_id AND orig_lp_item_id = $lp_item_id AND orig_lp_item_view_id = $lp_item_view_id AND exe_cours_id = '".api_get_course_id()."' AND session_id = '" . api_get_session_id() . "'";
$query = Database::query($sql);
if (Database::num_rows($query) > 0 ) {
@ -601,7 +600,7 @@ function delete_student_lp_events($user_id, $lp_id, $course, $session_id) {
$track_e_exercises = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$track_attempts = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
$TBL_RECORDING = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT_RECORDING);
$recording_table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT_RECORDING);
$user_id = intval($user_id);
$lp_id = intval($lp_id);
@ -633,7 +632,7 @@ function delete_student_lp_events($user_id, $lp_id, $course, $session_id) {
$sql_delete = "DELETE FROM $track_attempts WHERE exe_id IN (".implode(',',$exe_list).")";
$result = Database::query($sql_delete);
$sql_delete = "DELETE FROM $TBL_RECORDING WHERE exe_id IN (".implode(',',$exe_list).")";
$sql_delete = "DELETE FROM $recording_table WHERE exe_id IN (".implode(',',$exe_list).")";
$result = Database::query($sql_delete);
}
}

@ -2282,7 +2282,7 @@ class Tracking {
} else {
$graph = Display::url($graph, '#', array('id'=>$exercices['id'],'class'=>'opener'));
}
var_dump($attempts);
$html .= Display::tag('td', $attempts, array('align'=>'center'));
$html .= Display::tag('td', $percentage_score_result, array('align'=>'center'));
$html .= Display::tag('td', $position, array('align'=>'center'));

Loading…
Cancel
Save