Adding more options to the new My QCM tab see BT#2048

skala
Julio Montoya 14 years ago
parent 9729153027
commit c7a4d2a169
  1. 30
      main/exercice/exercise.lib.php
  2. 14
      main/inc/lib/tracking.lib.php
  3. 45
      main/session/index.php

@ -1225,13 +1225,13 @@ function get_all_exercises($course_info = null, $session_id = 0) {
* @param int session id
* @return int the position of the user between his friends in a course (or course within a session)
*/
function get_exercise_result_ranking($my_score, $my_exe_id, $exercise_id, $course_code, $session_id = 0) {
function get_exercise_result_ranking($my_score, $my_exe_id, $exercise_id, $course_code, $session_id = 0, $return_string = true) {
//Getting all exercise results
if (empty($session_id)) {
$session_id = 0;
}
$user_results = get_all_exercise_results($exercise_id, $course_code, $session_id);
$position_data = array();
if (empty($user_results)) {
return 1;
} else {
@ -1260,6 +1260,30 @@ function get_exercise_result_ranking($my_score, $my_exe_id, $exercise_id, $cours
}
}
}
return $position;
$return_value = array('position'=>$position, 'count'=>count($my_ranking));
if ($return_string) {
if (!empty($position) && !empty($my_ranking)) {
return $position.'/'.count($my_ranking);
}
}
return $return_string;
}
}
function get_best_score($exercise_id, $course_code, $session_id) {
$user_results = get_all_exercise_results($exercise_id, $course_code, $session_id);
$best_score_data = array();
$best_score = 0;
if (!empty($user_results)) {
foreach($user_results as $result) {
if ($result['exe_weighting'] != '') {
$score = $result['exe_result']/$result['exe_weighting'];
if ($score > $best_score) {
$best_score = $score;
$best_score_data = $result;
}
}
}
}
return $best_score_data;
}

@ -2217,7 +2217,7 @@ class Tracking {
<th class="head" style="color:#000">'.get_lang('Attempts').'</th>
<th class="head" style="color:#000">'.get_lang('LatestAttempt').'</th>
<th class="head" style="color:#000">'.get_lang('Position').'</th>
<th class="head" style="color:#000">'.get_lang('BestAttempt').'</th>
<th class="head" style="color:#000">'.get_lang('MyBestAttempt').'</th>
</tr>';
$result_exercices = Database::query($sql_exercices);
if (Database::num_rows($result_exercices) > 0) {
@ -2230,6 +2230,12 @@ class Tracking {
$best_score_array = array();
foreach($exercise_stats as $exercise_stat) {
if ($exercise_stat['exe_user_id'] == $user_id) {
//Always getting the latest attempt
$score = $exercise_stat['exe_result'];
$weighting = $exercise_stat['exe_weighting'];
$exe_id = $exercise_stat['exe_id'];
//Use this to take the average
//$score = $score + $exercise_stat['exe_result'];
//$weighting = $weighting + $exercise_stat['exe_weighting'];
@ -2238,11 +2244,7 @@ class Tracking {
if ($score > $best_score ) {
$best_score = $score;
$best_score_array = $exercise_stat;
}
//Always getting the latest attempt
$score = $exercise_stat['exe_result'];
$weighting = $exercise_stat['exe_weighting'];
$exe_id = $exercise_stat['exe_id'];
}
$attempts++;
}
}

@ -153,24 +153,28 @@ foreach($final_array as $session_data) {
$row = 1;
$column = 0;
$table->setCellContents($row, $column, $course_data['name']);
$column++;*/
$column++;*/
if (!empty($course_data['exercises'])) {
//Exercises
foreach ($course_data['exercises'] as $my_exercise_id => $exercise_data) {
$best_score_data = get_best_score($my_exercise_id, $my_course_code, $session_id);
$best_score = show_score($best_score_data['exe_result'], $best_score_data['exe_weighting']);
//Exercise results
$counter = 1;
foreach ($exercise_data['data'] as $exercise_result) {
$my_exercise_result = array($exercise_data['name'], $exercise_result['exe_id']);
$column = 1;
$score = $exercise_result['exe_result'].' / '.$exercise_result['exe_weighting'];
$platform_score = show_score($exercise_result['exe_result'], $exercise_result['exe_weighting'], false);
if (!empty($exercise_result['exe_weighting']) && intval($exercise_result['exe_weighting']) != 0 ) {
$my_score = $exercise_result['exe_result']/$exercise_result['exe_weighting'];
} else {
$my_score = 0;
}
$column = 1;
$platform_score = show_score($exercise_result['exe_result'], $exercise_result['exe_weighting']);
$position = get_exercise_result_ranking($my_score, $exercise_result['exe_id'], $my_exercise_id, $my_course_code,$session_id);
$my_real_array[]= array('course'=>$course_data['name'], 'exercise'=>$exercise_data['name'],'attempt'=>$counter,'result'=>$score,'note'=>$platform_score,'position'=>$position);
$my_real_array[]= array( 'date' => api_get_local_time($exercise_result['exe_date']),
'course' => $course_data['name'],
'exercise' => $exercise_data['name'],
'attempt' => $counter,
'result' => $platform_score,
'best_result' => $best_score,
'position' => $position
);
$counter++;
foreach ($my_exercise_result as $data) {
//$my_real_array[]= array('session'=>$session_data['name'],'course'=>$course_data['name'], 'exercise'=>$exercise_data['name'],'result'=>$exercise_result['exe_id']) ;
@ -226,17 +230,18 @@ $extra_params_week['groupingView'] = array('groupField'=>array('week'),
//$extra_params_week['autowidth'] = 'true'; //use the width of the parent
//MyQCM grid
$column_exercise = array(get_lang('Course'),get_lang('Exercise'), get_lang('Attempts'), get_lang('Result'), get_lang('Score'), get_lang('Position'));
$column_exercise = array(get_lang('PublicationDate'), get_lang('Course'), get_lang('Exercise'),get_lang('Attempts'), get_lang('Result'), get_lang('BestResult'), get_lang('Position'));
$column_exercise_model = array(
array('name'=>'course', 'index'=>'course', 'width'=>'450','align'=>'left', 'sortable'=>'true'),
array('name'=>'exercise', 'index'=>'exercise', 'width'=>'250','align'=>'left', 'sortable'=>'true'),
array('name'=>'attempt', 'index'=>'attempt', 'width'=>'50', 'align'=>'center', 'sortable'=>'true'),
array('name'=>'result', 'index'=>'result', 'width'=>'50', 'align'=>'center', 'sortable'=>'true'),
array('name'=>'note', 'index'=>'note', 'width'=>'50', 'align'=>'center', 'sortable'=>'true'),
array('name'=>'date', 'index'=>'date', 'width'=>'130','align'=>'left', 'sortable'=>'true'),
array('name'=>'course', 'index'=>'course', 'width'=>'200','align'=>'left', 'sortable'=>'true'),
array('name'=>'exercise', 'index'=>'exercise', 'width'=>'200','align'=>'left', 'sortable'=>'true'),
array('name'=>'attempt', 'index'=>'attempt', 'width'=>'60', 'align'=>'center', 'sortable'=>'true'),
array('name'=>'result', 'index'=>'result', 'width'=>'140', 'align'=>'center', 'sortable'=>'true'),
array('name'=>'best_result','index'=>'best_result','width'=>'140','align'=>'center', 'sortable'=>'true'),
array('name'=>'position', 'index'=>'position', 'width'=>'50', 'align'=>'center', 'sortable'=>'true')
);
$extra_params_exercise['grouping'] = 'true';
$extra_params_exercise['groupingView'] = array('groupField'=>array('course'),'groupColumnShow'=>'false','groupText' => array('<b>'.get_lang('Course').' {0}</b>'));
//$extra_params_exercise['grouping'] = 'true';
//$extra_params_exercise['groupingView'] = array('groupField'=>array('course'),'groupColumnShow'=>'false','groupText' => array('<b>'.get_lang('Course').' {0}</b>'));
//$extra_params_exercise['groupingView'] = array('groupField'=>array('course'),'groupColumnShow'=>'false','groupText' => array('<b>'.get_lang('Course').' {0} - {1} Item(s)</b>'));
@ -274,9 +279,9 @@ $headers = array(get_lang('LearningPaths'), get_lang('MyQCM'), get_lang('
//Subheaders
$sub_header = array(get_lang('AllLearningPaths'), get_lang('PerWeek'), get_lang('ByCourse'));
//Sub header tab
//Sub headers data
$tabs = Display::tabs($sub_header, array(Display::grid_html('list_default'), Display::grid_html('list_week'), Display::grid_html('list_course')),'sub_tab');
//Main tabs
//Main headers data
echo Display::tabs($headers, array($tabs, Display::grid_html('exercises'),$my_reporting));
Display :: display_footer();

Loading…
Cancel
Save