Fixing new session page fixes several bugs + adding columns see BT#2806 - BT#2807- BT#2808- BT#2809

skala
Julio Montoya 14 years ago
parent 74d1f6eab3
commit 5b4a5cdceb
  1. 33
      main/exercice/exercise.class.php
  2. 28
      main/exercice/exercise.lib.php
  3. 3
      main/exercice/exercise_submit.php
  4. 21
      main/inc/lib/array.lib.php
  5. 47
      main/inc/lib/events.lib.inc.php
  6. 7114
      main/inc/lib/tracking.lib.php
  7. 2
      main/session/index.php

@ -3233,7 +3233,38 @@ class Exercise {
return $result;
}
public function is_visible_for_student() {
public function is_visible() {
$is_visible = true;
//$this->id;
if ($this->active == 0) {
return false;
}
$limit_time_exists = ((!empty($this->start_time) && $this->start_time != '0000-00-00 00:00:00') || (!empty($this->end_time) && $this->end_time != '0000-00-00 00:00:00')) ? true : false;
if ($limit_time_exists) {
$time_now = time();
if ($this->start_time != '0000-00-00 00:00:00') {
$permission_to_start = (($time_now - $this->start_time) > 0) ? true : false;
} else {
$permission_to_start = true;
}
if ($this->end_time != '0000-00-00 00:00:00') {
$exercise_timeover = (($time_now - $this->end_time) > 0) ? true : false;
} else {
$exercise_timeover = false;
}
if (!$permission_to_start || $exercise_timeover) {
$is_visible = false;
}
}
return $is_visible;
}
}
endif;

@ -1445,22 +1445,42 @@ function get_average_score($exercise_id, $course_code, $session_id) {
* @return float Average score
*/
function get_average_score_by_course($course_code, $session_id) {
$user_results = get_all_exercise_results_by_course($course_code, $session_id, false);
$avg_score = 0;
$user_results = get_all_exercise_results_by_course($course_code, $session_id, false);
//echo $course_code.' - '.$session_id.'<br />';
$avg_score = 0;
if (!empty($user_results)) {
foreach($user_results as $result) {
if (!empty($result['exe_weighting']) && intval($result['exe_weighting']) != 0) {
$score = $result['exe_result']/$result['exe_weighting'];
$avg_score +=$score;
//var_dump($score);
$avg_score +=$score;
}
}
//We asume that all exe_weighting
//$avg_score = show_score( $avg_score / count($user_results) , $result['exe_weighting']);
$avg_score = ($avg_score / count($user_results));
}
}
//var_dump($avg_score);
return $avg_score;
}
function get_average_score_by_course_by_user($user_id, $course_code, $session_id) {
$user_results = get_all_exercise_results_by_user($user_id, $course_code, $session_id, false);
$avg_score = 0;
if (!empty($user_results)) {
foreach($user_results as $result) {
if (!empty($result['exe_weighting']) && intval($result['exe_weighting']) != 0) {
$score = $result['exe_result']/$result['exe_weighting'];
$avg_score +=$score;
}
}
//We asume that all exe_weighting
//$avg_score = show_score( $avg_score / count($user_results) , $result['exe_weighting']);
$avg_score = ($avg_score / count($user_results));
}
return $avg_score;
}
/**
* Get average score by score (NO Exercises in LPs )

@ -495,7 +495,7 @@ if ($objExercise->selectAttempts() > 0) {
if ($objExercise->results_disabled == 0 && $origin != 'learnpath') {
//Showing latest attempt according with task BT#1628
$exercise_stat_info = get_all_exercise_results_by_user($user_id, $exerciseId, api_get_course_id(), api_get_session_id());
$exercise_stat_info = get_exercise_results_by_user($user_id, $exerciseId, api_get_course_id(), api_get_session_id());
if (!empty($exercise_stat_info)) {
$max_exe_id = max(array_keys($exercise_stat_info));
@ -532,6 +532,7 @@ if ($objExercise->selectAttempts() > 0) {
}
}
//@todo create a function and move to the exercise class
$limit_time_exists = (($objExercise->start_time != '0000-00-00 00:00:00') || ($objExercise->end_time != '0000-00-00 00:00:00')) ? true : false;
if ($limit_time_exists) {

@ -86,4 +86,25 @@ function array_walk_recursive_limited(&$array, $function, $apply_to_keys_also =
}
}
$recursive_counter--;
}
function utf8_sort($array) {
$old_locale = setlocale(LC_ALL, null);
$code = api_get_language_isocode();
$locale_list = array($code.'.utf8', 'en.utf8','en_US.utf8','en_GB.utf8');
$try_sort = false;
foreach($locale_list as $locale) {
$my_local = setlocale(LC_COLLATE, $locale);
if ($my_local) {
$try_sort = true;
break;
}
}
if ($try_sort) {
uasort($array, 'strcoll');
}
setlocale(LC_COLLATE, $old_locale);
return $array;
}

@ -683,7 +683,6 @@ function get_all_exercise_results($exercise_id, $course_code, $session_id = 0) {
/**
* Gets all exercise results (NO Exercises in LPs ) from a given exercise id, course, session
* @param int exercise id
* @param string course code
* @param int session id
* @return array with the results
@ -699,7 +698,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');
@ -718,17 +717,51 @@ function get_all_exercise_results_by_course($course_code, $session_id = 0, $get_
}
}
/**
* Gets all exercise results (NO Exercises in LPs) from a given exercise id, course, session
* @param int exercise id
* @param string course code
* @param int session id
* @return array with the results
*
*/
function get_all_exercise_results_by_user($user_id, $course_code, $session_id = 0) {
$table_track_exercises = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$table_track_attempt = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
$course_code = Database::escape_string($course_code);
$exercise_id = intval($exercise_id);
$session_id = intval($session_id);
$user_id = intval($user_id);
$sql = "SELECT * FROM $table_track_exercises WHERE status = '' AND exe_user_id = $user_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);
$list = array();
while($row = Database::fetch_array($res,'ASSOC')) {
$list[$row['exe_id']] = $row;
$sql = "SELECT * FROM $table_track_attempt WHERE exe_id = {$row['exe_id']}";
$res_question = Database::query($sql);
while($row_q = Database::fetch_array($res_question,'ASSOC')) {
$list[$row['exe_id']]['question_list'][$row_q['question_id']] = $row_q;
}
}
//echo '<pre>'; print_r($list);
return $list;
}
/**
* Gets all exercise results (NO Exercises in LPs) from a given exercise id, course, session
* Gets exercise results (NO Exercises in LPs) from a given exercise id, course, session
* @param int exercise id
* @param string course code
* @param int session id
* @return array with the results
*
*/
function get_all_exercise_results_by_user($user_id, $exercise_id, $course_code, $session_id = 0) {
function get_exercise_results_by_user($user_id, $exercise_id, $course_code, $session_id = 0) {
$table_track_exercises = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$table_track_attempt = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
$course_code = Database::escape_string($course_code);
@ -770,8 +803,8 @@ function count_exercise_attempts_by_user($user_id, $exercise_id, $course_code, $
$session_id = intval($session_id);
$user_id = intval($user_id);
$sql = "SELECT count(*) as count FROM $TABLETRACK_EXERCICES WHERE status = '' AND exe_user_id = '$user_id' AND exe_cours_id = '$course_code' AND exe_exo_id = '$exercise_id' AND session_id = $session_id AND orig_lp_id =0 AND orig_lp_item_id = 0 ORDER BY exe_id";
$sql = "SELECT count(*) as count FROM $TABLETRACK_EXERCICES
WHERE status = '' AND exe_user_id = '$user_id' AND exe_cours_id = '$course_code' AND exe_exo_id = '$exercise_id' AND session_id = $session_id AND orig_lp_id =0 AND orig_lp_item_id = 0 ORDER BY exe_id";
$res = Database::query($sql);
$result = 0;
if (Database::num_rows($res) > 0 ) {
@ -844,7 +877,7 @@ function get_count_exercises_attempted_by_course($course_code, $session_id = 0)
$course_code = Database::escape_string($course_code);
$session_id = intval($session_id);
$sql = "SELECT DISTINCT exe_exo_id, exe_user_id 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 DISTINCT exe_exo_id, exe_user_id 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);
$count = 0;
if (Database::num_rows($res) > 0) {

File diff suppressed because it is too large Load Diff

@ -110,7 +110,7 @@ if (!empty($new_session_list)) {
$exercise->read($exercise_item['id']);
//$exercise_course_list[$exercise_item['id']] = $exercise;
//Reading all Exercise results by user, exercise_id, code, and session
$user_results = get_all_exercise_results_by_user(api_get_user_id(), $exercise_item['id'], $my_course['code'], $my_session_id);
$user_results = get_exercise_results_by_user(api_get_user_id(), $exercise_item['id'], $my_course['code'], $my_session_id);
$course['exercises'][$exercise_item['id']]['data']['exercise_data'] = $exercise;
$course['exercises'][$exercise_item['id']]['data']['results'] = $user_results;
}

Loading…
Cancel
Save