@ -1,13 +1,15 @@
<?php //$id: $
<?php
/* For licensing terms, see /license.txt */
/**
** @package chamilo.exercise
* @author Julio Montoya Armas Added switchable fill in blank option added
* @version $Id: exercise_show.php 22256 2009-07-20 17:40:20Z ivantcholakov $
* @package chamilo.exercise
* @todo remove the debug code and use the general debug library
* @todo small letters for table variables
*/
* Shows the exercise results
*
* @package chamilo.exercise
* @author Julio Montoya Armas Added switchable fill in blank option added
* @version $Id: exercise_show.php 22256 2009-07-20 17:40:20Z ivantcholakov $
* @package chamilo.exercise
* @todo remove the debug code and use the general debug library
* @todo small letters for table variables
* */
// name of the language file that needs to be included
$language_file=array('exercice','tracking');
@ -38,63 +40,39 @@ $TBL_EXERCICE_QUESTION = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
$TBL_EXERCICES = Database::get_course_table(TABLE_QUIZ_TEST);
$TBL_QUESTIONS = Database::get_course_table(TABLE_QUIZ_QUESTION);
$TBL_REPONSES = Database::get_course_table(TABLE_QUIZ_ANSWER);
$main_user_table = Database :: get_main_table(TABLE_MAIN_USER);
$main_course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$main_user_table = Database::get_main_table(TABLE_MAIN_USER);
$main_course_user_table = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$TBL_TRACK_EXERCICES = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$TBL_TRACK_ATTEMPT = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
$dsp_percent = false;
$debug=0;
if($debug>0) {
echo str_repeat(' ',0).'Entered exercise_result.php'."< br / > \n";var_dump($_POST);
}
// general parameters passed via POST/GET
if ( empty ( $formSent ) ) {
$formSent= $_REQUEST['formSent'];
}
if ( empty ( $exerciseResult ) ) {
$exerciseResult = $_SESSION['exerciseResult'];
}
if ( empty ( $questionId ) ) {
$questionId = $_REQUEST['questionId'];
}
if ( empty ( $choice ) ) {
$choice = $_REQUEST['choice'];
}
if ( empty ( $questionNum ) ) {
$questionNum = $_REQUEST['questionNum'];
}
if ( empty ( $nbrQuestions ) ) {
$nbrQuestions = $_REQUEST['nbrQuestions'];
}
if ( empty ( $questionList ) ) {
$questionList = $_SESSION['questionList'];
}
if ( empty ( $objExercise ) ) {
$objExercise = $_SESSION['objExercise'];
}
if ( empty ( $exeId ) ) {
$exeId = $_REQUEST['id'];
}
// General parameters passed via POST/GET
if($debug>0) { error_log('Entered exercise_result.php: '.print_r($_POST,1)); }
if ( empty ( $action ) ) {
$action = $_GET['action'];
}
if ( empty ( $formSent ) ) { $formSent = $_REQUEST['formSent']; }
if ( empty ( $exerciseResult ) ) { $exerciseResult = $_SESSION['exerciseResult'];}
if ( empty ( $questionId ) ) { $questionId = $_REQUEST['questionId'];}
if ( empty ( $choice ) ) { $choice = $_REQUEST['choice'];}
if ( empty ( $questionNum ) ) { $questionNum = $_REQUEST['questionNum'];}
if ( empty ( $nbrQuestions ) ) { $nbrQuestions = $_REQUEST['nbrQuestions'];}
if ( empty ( $questionList ) ) { $questionList = $_SESSION['questionList'];}
if ( empty ( $objExercise ) ) { $objExercise = $_SESSION['objExercise'];}
if ( empty ( $exeId ) ) { $exeId = $_REQUEST['id'];}
if ( empty ( $action ) ) { $action = $_GET['action']; }
$current_time = time();
$emailId = $_REQUEST['email'];
$id = $_REQUEST['id']; //exe id
//$emailId = $_REQUEST['email'];
$id = intval($_REQUEST['id']); //exe id
$current_time = time();
if (empty($id)) {
api_not_allowed();
}
$is_allowedToEdit=api_is_allowed_to_edit(null,true) || $is_courseTutor;
$is_allowedToEdit = api_is_allowed_to_edit(null,true) || $is_courseTutor;
//Getting results
//Getting results from the exe_id. This variable also contain all the information about the exercise
$track_exercise_info = get_exercise_track_exercise_info($id);
//No track info
@ -102,23 +80,25 @@ if (empty($track_exercise_info)) {
api_not_allowed();
}
$exercise_id = $track_exercise_info['id'];
$exercise_date = $track_exercise_info['exe_date'];
$student_id = $track_exercise_info['exe_user_id'];
$learnpath_id = $track_exercise_info['orig_lp_id'];
$learnpath_item_id = $track_exercise_info['orig_lp_item_id'];
$lp_item_view_id = $track_exercise_info['orig_lp_item_view_id'];
$course_code = api_get_course_id();
$current_user_id = api_get_user_id();
//Check if user can see the results
if (!$is_allowedToEdit) {
$current_user_id = api_get_user_id();
if ($track_exercise_info['results_disabled']) {
api_not_allowed();
}
if ($student_id != $current_user_id) {
api_not_allowed();
}
}
if (!exercise_time_control_is_valid($exercise_id)) {
$sql_fraud = "UPDATE $TBL_TRACK_ATTEMPT SET answer = 0, marks=0, position=0 WHERE exe_id = $id ";
Database::query($sql_fraud);
@ -127,8 +107,6 @@ if (!exercise_time_control_is_valid($exercise_id)) {
//Unset session for clock time
exercise_time_control_delete($exercise_id);
$nameTools=get_lang('CorrectTest');
if (isset($_SESSION['gradebook'])) {
$gradebook= Security::remove_XSS($_SESSION['gradebook']);
@ -137,6 +115,7 @@ if (isset($_SESSION['gradebook'])) {
if (!empty($gradebook) & & $gradebook=='view') {
$interbreadcrumb[]= array ('url' => '../gradebook/'.$_SESSION['gradebook_dest'],'name' => get_lang('ToolGradebook'));
}
$fromlink = '';
if($origin=='user_course') {
$interbreadcrumb[] = array ("url" => "../user/user.php?cidReq=".Security::remove_XSS($_GET['course']), "name" => get_lang("Users"));
@ -156,7 +135,6 @@ if($origin=='user_course') {
} else {
$this_section = SECTION_COURSES;
}
} elseif($origin=='student_progress') {
$this_section = SECTION_TRACKING;
$interbreadcrumb[] = array ("url" => "../auth/my_progress.php?id_session".Security::remove_XSS($_GET['id_session'])."& course=".$_cid, "name" => get_lang('MyProgress'));
@ -166,9 +144,8 @@ if($origin=='user_course') {
$this_section=SECTION_COURSES;
}
if ($origin != 'learnpath') {
Display::display_header($nameTools,"Exercise" );
Display::display_header($nameTools,get_lang('Exercise') );
} else {
Display::display_reduced_header();
}
@ -221,17 +198,14 @@ function getFCK(vals,marksid) {
< / script >
<?php
/*
MAIN CODE
*/
/* MAIN CODE */
// Email configuration settings
$coursecode = api_get_course_id();
$to = '';
$teachers = array();
if(api_get_setting('use_session_mode')=='true' & & !empty($_SESSION['id_session'] )) {
$teachers = CourseManager::get_coach_list_from_course_code($coursecode,$_SESSION['id_session'] );
if(api_get_session_id( )) {
$teachers = CourseManager::get_coach_list_from_course_code($coursecode, api_get_session_id() );
} else {
$teachers = CourseManager::get_teacher_list_from_course_code($coursecode);
}
@ -264,8 +238,7 @@ if (!empty($track_exercise_info)) {
// if the results_disabled of the Quiz is 1 when block the script
$result_disabled = $track_exercise_info['results_disabled'];
if (!(api_is_platform_admin() || api_is_course_admin()) ) {
if (!(api_is_platform_admin() || api_is_course_admin()) ) {
if ($result_disabled == 1) {
//api_not_allowed();
$show_results = false;
@ -290,12 +263,7 @@ if (!empty($track_exercise_info)) {
if ($origin == 'learnpath' & & !isset($_GET['fb_type']) ) {
$show_results = false;
}
/*
< tr >
< td style = "font-weight:bold" width = "10%" >
< div class = "actions-message" > <?php echo ' ' . get_lang ( 'CourseTitle' ) ?> : </ div ></ td >
< td >< div class = "actions-message" width = "90%" > <?php echo $_course [ 'name' ] ?> </ div ></ td >
< / tr > */
if ($show_results) {
?>
< table width = "100%" >
@ -305,34 +273,21 @@ if ($show_results) {
< / td >
< / tr >
< tr >
< td style = "font-weight:bold" width = "80px" >< div > <?php echo ' ' . get_lang ( 'User' ) ?> : </ div ></ td >
< td >< div width = "90%" > <?php
/*
if (isset($_GET['cidReq'])) {
$course_code = Security::remove_XSS($_GET['cidReq']);
} else {
$course_code = api_get_course_id();
}*/
/*
if (isset($_GET['student'])) {
$user_id = intval($_GET['student']);
} else {
$user_id = $track_exercise_info['exe_user_id'];
}*/
$user_id = $track_exercise_info['exe_user_id'];
$user_info=api_get_user_info($user_id);
echo api_get_person_name($user_info['firstName'], $user_info['lastName']);
/*$status_info=CourseManager::get_user_in_course_status($user_id,$course_code);
if (STUDENT==$status_info) {
$user_info=api_get_user_info($user_id);
echo api_get_person_name($user_info['firstName'], $user_info['lastName']);
} elseif(COURSEMANAGER==$status_info & & !isset($_GET['user'])) {
$user_info=api_get_user_info($user_id);
echo api_get_person_name($user_info['firstName'], $user_info['lastName']);
}*/
?>< / div > < / td >
< td style = "font-weight:bold" width = "80px" > <?php echo ' ' . get_lang ( 'User' ) ?> : </ td >
< td >
<?php
$user_info = api_get_user_info($student_id);
echo api_get_person_name($user_info['firstName'], $user_info['lastName']);
?>
< / td >
< / tr >
< tr >
< td style = "font-weight:bold" width = "80px" > <?php echo ' ' . get_lang ( 'Date' ) ?> : </ td >
< td >
<?php
echo api_get_local_time($exercise_date);
?>
< / td >
< / tr >
<?php if ( ! empty ( $exerciseDescription )) { ?>
< tr >
@ -348,14 +303,15 @@ if ($show_results) {
< br / >
< / table >
<?php
}
$i=$totalScore=$totalWeighting=0;
if($debug>0){echo "ExerciseResult: "; var_dump($exerciseResult); echo "QuestionList: ";var_dump($questionList);}
$arrques = array();
$arrans = array();
if ($show_results) {
$user_restriction = $is_allowedToEdit ? '' : "AND user_id=".intval($_user['user_id'])." ";
$i=$totalScore=$totalWeighting=0;
if($debug>0){error_log("ExerciseResult: ".print_r($exerciseResult,1)); error_log("QuestionList: ".print_r($questionList,1));}
$arrques = array();
$arrans = array();
$user_restriction = $is_allowedToEdit ? '' : "AND user_id=".intval($student_id)." ";
$query = "SELECT attempts.question_id, answer from ".$TBL_TRACK_ATTEMPT." as attempts
INNER JOIN ".$TBL_TRACK_EXERCICES." as stats_exercices ON stats_exercices.exe_id=attempts.exe_id
INNER JOIN ".$TBL_EXERCICE_QUESTION." as quizz_rel_questions ON quizz_rel_questions.exercice_id=stats_exercices.exe_exo_id AND quizz_rel_questions.question_id = attempts.question_id
@ -363,9 +319,8 @@ if ($show_results) {
WHERE attempts.exe_id='".Database::escape_string($id)."' $user_restriction
GROUP BY quizz_rel_questions.question_order, attempts.question_id";
//GROUP BY questions.position, attempts.question_id";
$result =Database::query($query);
$result =Database::query($query);
$questionList = array();
$exerciseResult = array();
@ -374,7 +329,7 @@ if ($show_results) {
$exerciseResult[$row['question_id']] = $row['answer'];
}
//Fixing #2073
//Fixing #2073 Fixing order of questions
if (!empty($track_exercise_info['data_tracking']) & & !empty($track_exercise_info['random']) ) {
$tempquestionList = explode(',',$track_exercise_info['data_tracking']);
if (is_array($tempquestionList) & & count($tempquestionList) == count($questionList)) {
@ -633,6 +588,7 @@ if ($show_results) {
}
$answer = $pre_array[0];
// splits weightings that are joined with a comma
$answerWeighting = explode(',',$is_set_switchable[0]);
@ -659,6 +615,7 @@ if ($show_results) {
// the loop will stop at the end of the text
$i=0;
//normal fill in blank
if (!$switchable_answer_set) {
while (1) {
// quits the loop if there are no more blanks
@ -680,6 +637,7 @@ if ($show_results) {
$queryfill = "SELECT answer FROM ".$TBL_TRACK_ATTEMPT." WHERE exe_id = '".Database::escape_string($id)."' AND question_id= '".Database::escape_string($questionId)."'";
$resfill = Database::query($queryfill);
$str = Database::result($resfill,0,'answer');
preg_match_all('#\[([^[]*)\]#', $str, $arr);
$str = str_replace('\r\n', '', $str);