Cleaning exercice.php + adding a new function in events.lib.inc.php to get exercise results

skala
Julio Montoya 14 years ago
parent 7790bdb19a
commit fd50571fe5
  1. 68
      main/exercice/exercice.php
  2. 39
      main/inc/lib/events.lib.inc.php

@ -43,22 +43,13 @@ require_once api_get_path(LIBRARY_PATH)."groupmanager.lib.php"; // for group fil
$is_allowedToEdit = api_is_allowed_to_edit(null,true);
$is_tutor = api_is_allowed_to_edit(true);
$is_tutor_course = api_is_course_tutor();
$tbl_course_rel_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$TBL_USER = Database :: get_main_table(TABLE_MAIN_USER);
$TBL_DOCUMENT = Database :: get_course_table(TABLE_DOCUMENT);
$TBL_ITEM_PROPERTY = Database :: get_course_table(TABLE_ITEM_PROPERTY);
$TBL_EXERCICE_ANSWER = Database :: get_course_table(TABLE_QUIZ_ANSWER);
$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_TRACK_EXERCICES = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$TBL_TRACK_HOTPOTATOES = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_HOTPOTATOES);
$TBL_TRACK_ATTEMPT = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
$TBL_TRACK_ATTEMPT_RECORDING= Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT_RECORDING);
$TBL_LP_ITEM_VIEW = Database :: get_course_table(TABLE_LP_ITEM_VIEW);
$TBL_LP_ITEM = Database :: get_course_table(TABLE_LP_ITEM);
$TBL_LP_VIEW = Database :: get_course_table(TABLE_LP_VIEW);
$TBL_GROUP_REL_USER = Database :: get_course_table(TABLE_GROUP_USER);
$table_lp_item = Database::get_course_table(TABLE_LP_ITEM);
// document path
$documentPath = api_get_path(SYS_COURSE_PATH) . $_course['path'] . "/document";
@ -285,7 +276,7 @@ if ($is_allowedToEdit) {
break;
case 'enable' : // enables an exercise
$newVisibilityStatus = "1"; //"visible"
$query = "SELECT id FROM $TBL_DOCUMENT WHERE path='" . Database :: escape_string($file) . "'";
$query = "SELECT id FROM $TBL_DOCUMENT WHERE c_id = $course_id AND path='" . Database :: escape_string($file) . "'";
$res = Database::query($query);
$row = Database :: fetch_array($res, 'ASSOC');
api_item_property_update($_course, TOOL_DOCUMENT, $row['id'], 'visible', $_user['user_id']);
@ -294,7 +285,7 @@ if ($is_allowedToEdit) {
break;
case 'disable' : // disables an exercise
$newVisibilityStatus = "0"; //"invisible"
$query = "SELECT id FROM $TBL_DOCUMENT WHERE path='" . Database :: escape_string($file) . "'";
$query = "SELECT id FROM $TBL_DOCUMENT WHERE c_id = $course_id AND path='" . Database :: escape_string($file) . "'";
$res = Database::query($query);
$row = Database :: fetch_array($res, 'ASSOC');
api_item_property_update($_course, TOOL_DOCUMENT, $row['id'], 'invisible', $_user['user_id']);
@ -326,13 +317,14 @@ $condition_session = api_get_session_condition($session_id,true,true);
// Only for administrators
if ($is_allowedToEdit) {
$total_sql = "SELECT count(id) as count FROM $TBL_EXERCICES WHERE active<>'-1' $condition_session ";
$sql = "SELECT * FROM $TBL_EXERCICES WHERE active<>'-1' $condition_session ORDER BY title LIMIT ".$from."," .$limit;
$total_sql = "SELECT count(id) as count FROM $TBL_EXERCICES WHERE c_id = $course_id AND active<>'-1' $condition_session ";
$sql = "SELECT * FROM $TBL_EXERCICES WHERE c_id = $course_id AND active<>'-1' $condition_session ORDER BY title LIMIT ".$from."," .$limit;
} else {
// Only for students
$total_sql = "SELECT count(id) as count FROM $TBL_EXERCICES WHERE active = '1' $condition_session ";
$total_sql = "SELECT count(id) as count FROM $TBL_EXERCICES WHERE c_id = $course_id AND active = '1' $condition_session ";
$sql = "SELECT id, title, type, description, results_disabled, session_id, start_time, end_time, max_attempt FROM $TBL_EXERCICES
WHERE active='1' $condition_session
WHERE c_id = $course_id AND
active='1' $condition_session
ORDER BY title LIMIT ".$from."," .$limit;
}
@ -349,20 +341,22 @@ if (Database :: num_rows($result_total)) {
//get HotPotatoes files (active and inactive)
if ($is_allowedToEdit) {
$sql = "SELECT * FROM $TBL_DOCUMENT WHERE path LIKE '" . Database :: escape_string($uploadPath) . "/%/%'";
$sql = "SELECT * FROM $TBL_DOCUMENT WHERE c_id = $course_id AND path LIKE '" . Database :: escape_string($uploadPath) . "/%/%'";
$res = Database::query($sql);
$hp_count = Database :: num_rows($res);
} else {
$res = Database::query("SELECT * FROM $TBL_DOCUMENT d, $TBL_ITEM_PROPERTY ip
WHERE d.id = ip.ref AND ip.tool = '" . TOOL_DOCUMENT . "'
AND d.path LIKE '" . Database :: escape_string($uploadPath) . "/%/%'
AND ip.visibility='1' AND d.c_id=".api_get_course_int_id()." AND ip.c_id=".api_get_course_int_id());
$sql = "SELECT * FROM $TBL_DOCUMENT d, $TBL_ITEM_PROPERTY ip
WHERE d.id = ip.ref AND
ip.tool = '" . TOOL_DOCUMENT . "' AND
d.path LIKE '" . Database :: escape_string($uploadPath) . "/%/%' AND
ip.visibility ='1' AND
d.c_id = ".$course_id." AND
ip.c_id = ".$course_id;
$res = Database::query($sql);
$hp_count = Database :: num_rows($res);
}
$total = $total_exercises + $hp_count;
if ($is_allowedToEdit && $origin != 'learnpath') {
echo '<a href="exercise_admin.php?' . api_get_cidreq() . '">' . Display :: return_icon('new_exercice.png', get_lang('NewEx'),'','32').'</a>';
@ -448,7 +442,7 @@ if ($is_allowedToEdit) {
$count = 0;
if (!empty($exercise_list))
foreach ($exercise_list as $row) {
foreach ($exercise_list as $row) {
//echo '<div id="tabs-'.$i.'">';
$i++;
//validacion when belongs to a session
@ -489,7 +483,7 @@ if ($is_allowedToEdit) {
}
}
}
}
}
//Blocking empty start times see BT#2800
@ -504,9 +498,11 @@ if ($is_allowedToEdit) {
// Teacher only
if ($is_allowedToEdit) {
$show_quiz_edition = true;
$table_lp_item = Database::get_course_table(TABLE_LP_ITEM);
$sql="SELECT max_score FROM $table_lp_item
WHERE item_type = '".TOOL_QUIZ."' AND path ='".Database::escape_string($row['id'])."'";
WHERE c_id = $course_id AND
item_type = '".TOOL_QUIZ."' AND
path ='".Database::escape_string($row['id'])."'";
$result = Database::query($sql);
if (Database::num_rows($result) > 0) {
$show_quiz_edition = false;
@ -518,7 +514,7 @@ if ($is_allowedToEdit) {
}
//Showing exercise title
$row['title'] = text_filter(cut($row['title'], EXERCISE_MAX_NAME_SIZE));
$row['title'] = cut($row['title'], EXERCISE_MAX_NAME_SIZE);
if ($session_id == $row['session_id']) {
//Settings
@ -535,15 +531,17 @@ if ($is_allowedToEdit) {
$exid = $row['id'];
//count number exercice - teacher
$sqlquery = "SELECT count(*) FROM $TBL_EXERCICE_QUESTION WHERE exercice_id = '" . $exid . "'";
$sqlquery = "SELECT count(*) FROM $TBL_EXERCICE_QUESTION WHERE c_id = $course_id AND exercice_id = $exid";
$sqlresult = Database::query($sqlquery);
$rowi = Database :: result($sqlresult, 0);
$count = count_exercise_result($exid, $course_code, $session_id);
if ($session_id == $row['session_id']) {
//Settings
//$actions = Display::url(Display::return_icon('edit.png',get_lang('Edit'),'',22), 'exercise_admin.php?'.api_get_cidreq().'&modifyExercise=yes&exerciseId='.$row['id']);
$actions = Display::url(Display::return_icon('edit.png',get_lang('Edit'),'',22), 'admin.php?'.api_get_cidreq().'&exerciseId='.$row['id']);
$actions .='<a href="exercice_report.php?' . api_get_cidreq() . '&exerciseId='.$row['id'].'">' . Display :: return_icon('test_results.png', get_lang('Results'),'',22).'</a>';
$actions .='<a href="exercice_report.php?' . api_get_cidreq() . '&exerciseId='.$row['id'].'">' . $count.' '.Display :: return_icon('test_results.png', get_lang('Results'),'',22).'</a>';
//Export
$actions .= Display::url(Display::return_icon('cd.gif', get_lang('CopyExercise')), '', array('onclick'=>"javascript:if(!confirm('".addslashes(api_htmlentities(get_lang('AreYouSureToCopy'),ENT_QUOTES,$charset))." ".addslashes($row['title'])."?"."')) return false;",'href'=>'exercice.php?'.api_get_cidreq().'&choice=copy_exercise&sec_token='.$token.'&exerciseId='.$row['id']));
//Clean exercise
@ -556,9 +554,11 @@ if ($is_allowedToEdit) {
}
// Export qti ...
$actions .= Display::url(Display::return_icon('export_qti2.png','IMS/QTI','','22'), 'exercice.php?choice=exportqti2&exerciseId='.$row['id']);
} else { // not session resource
} else {
// not session
$actions = Display::return_icon('edit_na.png', get_lang('ExerciseEditionNotAvailableInSession'));
$actions .='<a href="exercice_report.php?' . api_get_cidreq() . '&exerciseId='.$row['id'].'">' . Display :: return_icon('test_results.png', get_lang('Results'),'',22).'</a>';
$actions .='<a href="exercice_report.php?' . api_get_cidreq() . '&exerciseId='.$row['id'].'">'.Display :: return_icon('test_results.png', get_lang('Results'),'',22).'</a>';
$actions .= Display::url(Display::return_icon('cd.gif', get_lang('CopyExercise')), '', array('onclick'=>"javascript:if(!confirm('".addslashes(api_htmlentities(get_lang('AreYouSureToCopy'),ENT_QUOTES,$charset))." ".addslashes($row['title'])."?"."')) return false;",'href'=>'exercice.php?'.api_get_cidreq().'&choice=copy_exercise&sec_token='.$token.'&exerciseId='.$row['id']));
}
@ -620,7 +620,7 @@ if ($is_allowedToEdit) {
$item = Display::tag('td',$url.' '.$session_img);
//count number exercise questions
$sqlquery = "SELECT count(*) FROM $TBL_EXERCICE_QUESTION WHERE exercice_id = ".$row['id'];
$sqlquery = "SELECT count(*) FROM $TBL_EXERCICE_QUESTION WHERE c_id = $course_id AND exercice_id = ".$row['id'];
$sqlresult = Database::query($sqlquery);
$rowi = Database::result($sqlresult, 0);

@ -904,7 +904,7 @@ function get_all_exercise_results_by_course($course_code, $session_id = 0, $get_
if ($get_count) {
$select = 'count(*) as count';
}
$sql = "SELECT $select FROM $table_track_exercises WHERE status = '' AND exe_cours_id = '$course_code' AND session_id = $session_id AND orig_lp_id = 0 AND orig_lp_item_id = 0 ORDER BY exe_id";
$sql = "SELECT $select FROM $table_track_exercises WHERE status = '' AND exe_cours_id = '$course_code' AND session_id = $session_id AND orig_lp_id = 0 AND orig_lp_item_id = 0 ORDER BY exe_id";
$res = Database::query($sql);
if ($get_count) {
$row = Database::fetch_array($res,'ASSOC');
@ -955,10 +955,6 @@ function get_all_exercise_results_by_user($user_id, $course_code, $session_id =
return $list;
}
/**
* Gets exercise results (NO Exercises in LPs) from a given exercise id, course, session
* @param int exercise id
@ -1110,11 +1106,7 @@ function get_best_exercise_results_by_user($exercise_id, $course_code, $session_
while($row_q = Database::fetch_array($res_question,'ASSOC')) {
$list[$row['exe_id']]['question_list'][$row_q['question_id']] = $row_q;
}
}
/*
echo count($list);
echo '<br>';
echo '<pre>'; print_r($list);*/
}
//Getting the best results of every student
$best_score_return = array();
@ -1125,13 +1117,32 @@ function get_best_exercise_results_by_user($exercise_id, $course_code, $session_
if ($current_best_score[$user_id] > $best_score_return[$user_id]['exe_result']) {
$best_score_return[$user_id] = $student_result;
}
}
/*
echo count($best_score_return);
echo '<pre>'; print_r($best_score_return);*/
}
return $best_score_return;
}
function count_exercise_result($exercise_id, $course_code, $session_id = 0) {
$table_track_exercises = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$course_code = Database::escape_string($course_code);
$session_id = intval($session_id);
$exercise_id = intval($exercise_id);
$select = '*';
$sql = "SELECT count(*) as count FROM $table_track_exercises
WHERE status = '' AND
exe_exo_id = $exercise_id AND
exe_cours_id = '$course_code' AND
session_id = $session_id AND
orig_lp_id = 0 AND
orig_lp_item_id = 0 ORDER BY exe_id";
$res = Database::query($sql);
$row = Database::fetch_array($res,'ASSOC');
return $row['count'];
}
/**
* Gets all exercise BEST results attempts (NO Exercises in LPs ) from a given exercise id, course, session per user

Loading…
Cancel
Save